Browse Source

Merge pull request #66 from Learnware-LAMDA/fix_pip

[FIX] remove learnware dependecy in pip
tags/v0.3.2
Gene GitHub 2 years ago
parent
commit
067ad8d925
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 47 additions and 6 deletions
  1. +6
    -4
      learnware/client/package_utils.py
  2. +10
    -2
      learnware/market/easy/database_ops.py
  3. +7
    -0
      tests/test_learnware_client/test_check_learnware.py
  4. +12
    -0
      tests/test_learnware_client/test_load_conda.py
  5. +12
    -0
      tests/test_learnware_client/test_load_docker.py

+ 6
- 4
learnware/client/package_utils.py View File

@@ -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



+ 10
- 2
learnware/market/easy/database_ops.py View File

@@ -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



+ 7
- 0
tests/test_learnware_client/test_check_learnware.py View File

@@ -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()

+ 12
- 0
tests/test_learnware_client/test_load_conda.py View File

@@ -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()

+ 12
- 0
tests/test_learnware_client/test_load_docker.py View File

@@ -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()

Loading…
Cancel
Save