Browse Source

[ENH] add get_semantic_specification in client

tags/v0.3.2
Gene 1 year ago
parent
commit
f4049d6458
3 changed files with 18 additions and 25 deletions
  1. +11
    -0
      learnware/client/learnware_client.py
  2. +2
    -5
      tests/test_learnware_client/test_all_learnware.py
  3. +5
    -20
      tests/test_learnware_client/test_check_learnware.py

+ 11
- 0
learnware/client/learnware_client.py View File

@@ -179,6 +179,17 @@ class LearnwareClient:
if result["code"] != 0:
raise Exception("update failed: " + json.dumps(result))

def get_semantic_specification(self, learnware_id: str):
url = f"{self.host}/engine/learnware_info"
response = requests.get(url, params={"learnware_id": learnware_id}, headers=self.headers)

result = response.json()

if result["code"] != 0:
raise Exception("get learnware info failed: " + json.dumps(result))

return result["data"]["learnware_info"]["semantic_specification"]

def download_learnware(self, learnware_id: str, save_path: str):
url = f"{self.host}/engine/download_learnware"



+ 2
- 5
tests/test_learnware_client/test_all_learnware.py View File

@@ -40,10 +40,9 @@ class TestAllLearnware(unittest.TestCase):

def test_all_learnware(self):
if not self._skip_test():
max_learnware_num = 2000
semantic_spec = generate_semantic_spec()
user_info = BaseUserInfo(semantic_spec=semantic_spec, stat_info={})
result = self.client.search_learnware(user_info, page_size=max_learnware_num)
result = self.client.search_learnware(user_info, page_size=None)

learnware_ids = result["single"]["learnware_ids"]
keys = [key for key in result["single"]["semantic_specifications"][0]]
@@ -55,10 +54,8 @@ class TestAllLearnware(unittest.TestCase):
for idx in learnware_ids:
zip_path = os.path.join(tempdir, f"test_{idx}.zip")
self.client.download_learnware(idx, zip_path)
with zipfile.ZipFile(zip_path, "r") as zip_file:
with zip_file.open("semantic_specification.json") as json_file:
semantic_spec = json.load(json_file)
try:
semantic_spec = self.client.get_semantic_specification(idx)
LearnwareClient.check_learnware(zip_path, semantic_spec)
print(f"check learnware {idx} succeed")
except:


+ 5
- 20
tests/test_learnware_client/test_check_learnware.py View File

@@ -24,10 +24,7 @@ class TestCheckLearnware(unittest.TestCase):
with tempfile.TemporaryDirectory(prefix="learnware_") as tempdir:
self.zip_path = os.path.join(tempdir, "test.zip")
self.client.download_learnware(learnware_id, self.zip_path)

with zipfile.ZipFile(self.zip_path, "r") as zip_file:
with zip_file.open("semantic_specification.json") as json_file:
semantic_spec = json.load(json_file)
semantic_spec = self.client.get_semantic_specification(learnware_id)
LearnwareClient.check_learnware(self.zip_path, semantic_spec)

def test_check_learnware_conda(self):
@@ -35,10 +32,7 @@ class TestCheckLearnware(unittest.TestCase):
with tempfile.TemporaryDirectory(prefix="learnware_") as tempdir:
self.zip_path = os.path.join(tempdir, "test.zip")
self.client.download_learnware(learnware_id, self.zip_path)

with zipfile.ZipFile(self.zip_path, "r") as zip_file:
with zip_file.open("semantic_specification.json") as json_file:
semantic_spec = json.load(json_file)
semantic_spec = self.client.get_semantic_specification(learnware_id)
LearnwareClient.check_learnware(self.zip_path, semantic_spec)

def test_check_learnware_dependency(self):
@@ -46,10 +40,7 @@ class TestCheckLearnware(unittest.TestCase):
with tempfile.TemporaryDirectory(prefix="learnware_") as tempdir:
self.zip_path = os.path.join(tempdir, "test.zip")
self.client.download_learnware(learnware_id, self.zip_path)

with zipfile.ZipFile(self.zip_path, "r") as zip_file:
with zip_file.open("semantic_specification.json") as json_file:
semantic_spec = json.load(json_file)
semantic_spec = self.client.get_semantic_specification(learnware_id)
LearnwareClient.check_learnware(self.zip_path, semantic_spec)

def test_check_learnware_image(self):
@@ -57,10 +48,7 @@ class TestCheckLearnware(unittest.TestCase):
with tempfile.TemporaryDirectory(prefix="learnware_") as tempdir:
self.zip_path = os.path.join(tempdir, "test.zip")
self.client.download_learnware(learnware_id, self.zip_path)

with zipfile.ZipFile(self.zip_path, "r") as zip_file:
with zip_file.open("semantic_specification.json") as json_file:
semantic_spec = json.load(json_file)
semantic_spec = self.client.get_semantic_specification(learnware_id)
LearnwareClient.check_learnware(self.zip_path, semantic_spec)

def test_check_learnware_text(self):
@@ -68,10 +56,7 @@ class TestCheckLearnware(unittest.TestCase):
with tempfile.TemporaryDirectory(prefix="learnware_") as tempdir:
self.zip_path = os.path.join(tempdir, "test.zip")
self.client.download_learnware(learnware_id, self.zip_path)

with zipfile.ZipFile(self.zip_path, "r") as zip_file:
with zip_file.open("semantic_specification.json") as json_file:
semantic_spec = json.load(json_file)
semantic_spec = self.client.get_semantic_specification(learnware_id)
LearnwareClient.check_learnware(self.zip_path, semantic_spec)




Loading…
Cancel
Save