in src/utils.py [0:0]
def pull_conda_package_metadata(image_config, image_artifact_dir):
results = dict()
env_out_file_name = image_config["env_out_filename"]
match_spec_out = get_match_specs(image_artifact_dir + "/" + env_out_file_name)
target_packages_match_spec_out = {k: v for k, v in match_spec_out.items()}
for package, match_spec_out in target_packages_match_spec_out.items():
if str(match_spec_out).startswith("conda-forge"):
# Pull package metadata from conda-forge and dump into json file
try:
search_result = conda.cli.python_api.run_command("search", str(match_spec_out), "--json")
package_metadata = json.loads(search_result[0])[package][0]
results[package] = {"version": package_metadata["version"], "size": package_metadata["size"]}
except PackagesNotFoundError:
print(
f"Failed to pull package metadata for {package}, {match_spec_out} from conda-forge, ignore. Potentially this package is broken."
)
# Sort the pakcage sizes in decreasing order
results = {k: v for k, v in sorted(results.items(), key=lambda item: item[1]["size"], reverse=True)}
return results