From 2a8042196a9179c74d6bd2a07c2fe1ac311836c5 Mon Sep 17 00:00:00 2001 From: Gene Date: Sun, 12 Nov 2023 17:53:51 +0800 Subject: [PATCH 1/2] [FIX] remove learnware dependecy in pip --- learnware/client/package_utils.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/learnware/client/package_utils.py b/learnware/client/package_utils.py index cb99c85..0492f72 100644 --- a/learnware/client/package_utils.py +++ b/learnware/client/package_utils.py @@ -74,12 +74,14 @@ def filter_nonexist_pip_packages(packages: list) -> Tuple[List[str], List[str]]: nonexist_packages = [] for package in packages: try: - # os.system("python3 -m pip index versions {0}".format(package)) - try_to_run(args=["pip", "index", "versions", parse_pip_requirement(package)], timeout=5) - exist_packages.append(package) + package_name = parse_pip_requirement(package) + if package_name != "learnware": + try_to_run(args=["pip", "index", "versions", package_name], timeout=5) + exist_packages.append(package) + continue except Exception as e: logger.error(e) - nonexist_packages.append(package) + nonexist_packages.append(package) return exist_packages, nonexist_packages From 1dabd6e2f5f423e91322583a03edffc9027b729d Mon Sep 17 00:00:00 2001 From: Gene Date: Sun, 12 Nov 2023 17:54:38 +0800 Subject: [PATCH 2/2] [MNT] strength test about installing environment --- learnware/market/easy/database_ops.py | 12 ++++++++++-- tests/test_learnware_client/test_check_learnware.py | 7 +++++++ tests/test_learnware_client/test_load_conda.py | 12 ++++++++++++ tests/test_learnware_client/test_load_docker.py | 12 ++++++++++++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/learnware/market/easy/database_ops.py b/learnware/market/easy/database_ops.py index e128653..a0b163c 100644 --- a/learnware/market/easy/database_ops.py +++ b/learnware/market/easy/database_ops.py @@ -169,7 +169,10 @@ class DatabaseOperations(object): def get_learnware_info(self, id: str): with self.engine.connect() as conn: - r = conn.execute(text("SELECT semantic_spec, zip_path, folder_path, use_flag FROM tb_learnware WHERE id=:id;"), dict(id=id)) + r = conn.execute( + text("SELECT semantic_spec, zip_path, folder_path, use_flag FROM tb_learnware WHERE id=:id;"), + dict(id=id), + ) row = r.fetchone() if row is None: return None @@ -178,7 +181,12 @@ class DatabaseOperations(object): zip_path = row[1] folder_path = row[2] use_flag = int(row[3]) - return {'semantic_spec': semantic_spec, 'zip_path': zip_path, 'folder_path': folder_path, 'use_flag': use_flag} + return { + "semantic_spec": semantic_spec, + "zip_path": zip_path, + "folder_path": folder_path, + "use_flag": use_flag, + } pass pass diff --git a/tests/test_learnware_client/test_check_learnware.py b/tests/test_learnware_client/test_check_learnware.py index 0e6fca6..a5c5297 100644 --- a/tests/test_learnware_client/test_check_learnware.py +++ b/tests/test_learnware_client/test_check_learnware.py @@ -29,6 +29,13 @@ class TestCheckLearnware(unittest.TestCase): self.client.download_learnware(learnware_id, self.zip_path) LearnwareClient.check_learnware(self.zip_path) + def test_check_learnware_dependency(self): + learnware_id = "00000147" + 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) + LearnwareClient.check_learnware(self.zip_path) + if __name__ == "__main__": unittest.main() diff --git a/tests/test_learnware_client/test_load_conda.py b/tests/test_learnware_client/test_load_conda.py index cd77f12..d343201 100644 --- a/tests/test_learnware_client/test_load_conda.py +++ b/tests/test_learnware_client/test_load_conda.py @@ -70,6 +70,18 @@ class TestLearnwareLoad(unittest.TestCase): for learnware in learnware_list: print(learnware.id, learnware.predict(input_array)) + def test_load_single_learnware_by_id_pip(self): + learnware_id = "00000147" + learnware = self.client.load_learnware(learnware_id=learnware_id, runnable_option="conda_env") + input_array = np.random.random(size=(20, 23)) + print(learnware.predict(input_array)) + + def test_load_single_learnware_by_id_conda(self): + learnware_id = "00000148" + learnware = self.client.load_learnware(learnware_id=learnware_id, runnable_option="conda_env") + input_array = np.random.random(size=(20, 204)) + print(learnware.predict(input_array)) + if __name__ == "__main__": unittest.main() diff --git a/tests/test_learnware_client/test_load_docker.py b/tests/test_learnware_client/test_load_docker.py index 8b2cf6f..ac16afd 100644 --- a/tests/test_learnware_client/test_load_docker.py +++ b/tests/test_learnware_client/test_load_docker.py @@ -48,6 +48,18 @@ class TestLearnwareLoad(unittest.TestCase): learnware_list[0].get_model()._destroy_docker_container(docker_container) + def test_load_single_learnware_by_id_pip(self): + learnware_id = "00000147" + learnware = self.client.load_learnware(learnware_id=learnware_id, runnable_option="docker") + input_array = np.random.random(size=(20, 23)) + print(learnware.predict(input_array)) + + def test_load_single_learnware_by_id_conda(self): + learnware_id = "00000148" + learnware = self.client.load_learnware(learnware_id=learnware_id, runnable_option="docker") + input_array = np.random.random(size=(20, 204)) + print(learnware.predict(input_array)) + if __name__ == "__main__": unittest.main()