|
2 | 2 | import os
|
3 | 3 |
|
4 | 4 | import conda.cli.python_api
|
| 5 | +from conda.exceptions import PackagesNotFoundError |
5 | 6 | from conda.env.specs import RequirementsSpec
|
6 | 7 | from conda.models.match_spec import MatchSpec
|
7 | 8 | from semver import Version
|
@@ -104,9 +105,12 @@ def pull_conda_package_metadata(image_config, image_artifact_dir):
|
104 | 105 | for package, match_spec_out in target_packages_match_spec_out.items():
|
105 | 106 | if str(match_spec_out).startswith("conda-forge"):
|
106 | 107 | # Pull package metadata from conda-forge and dump into json file
|
107 |
| - search_result = conda.cli.python_api.run_command("search", str(match_spec_out), "--json") |
108 |
| - package_metadata = json.loads(search_result[0])[package][0] |
109 |
| - results[package] = {"version": package_metadata["version"], "size": package_metadata["size"]} |
| 108 | + try: |
| 109 | + search_result = conda.cli.python_api.run_command("search", str(match_spec_out), "--json") |
| 110 | + package_metadata = json.loads(search_result[0])[package][0] |
| 111 | + results[package] = {"version": package_metadata["version"], "size": package_metadata["size"]} |
| 112 | + except PackagesNotFoundError: |
| 113 | + print(f"Failed to pull package metadata for {package}, {match_spec_out} from conda-forge, ignore. Potentially this package is broken.") |
110 | 114 | # Sort the pakcage sizes in decreasing order
|
111 | 115 | results = {k: v for k, v in sorted(results.items(), key=lambda item: item[1]["size"], reverse=True)}
|
112 | 116 |
|
|
0 commit comments