def pull_conda_package_metadata()

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