def _create_entry(entry: dict, source: Source = None) -> dict: """Filter and normalize the output of pipdeptree entry.""" entry["package_name"] = entry["package"].pop("package_name") entry["package_version"] = entry["package"].pop("installed_version") entry["requested_package_version"] = entry["package"].pop( "requested_package_version", entry["package_version"]) if source: entry["index_url"] = source.url entry["sha256"] = [] try: package_hashes = source.get_package_hashes( entry["package_name"], entry["package_version"]) except NotFound: package_hashes = source.get_package_hashes( entry["package_name"], entry["requested_package_version"]) for item in package_hashes: entry["sha256"].append(item["sha256"]) entry.pop("package") for dependency in entry["dependencies"]: dependency.pop("key", None) dependency.pop("installed_version", None) return entry
class PythonDigestsFetcher(FetcherBase): """Fetch digests of python package artifacts and all the files present in artifacts.""" def __init__(self, index_url: str): """Initialize Python package analyzer.""" self.source = Source(index_url) def fetch(self, package_name: str, package_version: str) -> dict: """Fetch digests of files present in artifacts for the given package.""" _LOGGER.info( "Fetching digests for package %r in version %r from %r", package_name, package_version, self.source.url ) error = False error_message = "" artifacts = [] try: artifacts = self.source.get_package_hashes(package_name, package_version, True) except NotFound as exc: error = True error_message = str(exc) _LOGGER.warning(error_message) return { "package_name": package_name, "package_version": package_version, "index_url": self.source.url, "error": error, "error_message": error_message, "artifacts": artifacts, }
class PythonDigestsFetcher(FetcherBase): """Fetch digests of python package artifacts and all the files present in artifacts.""" def __init__(self, index_url: str): """Initialize Python package analyzer.""" self.source = Source(index_url) def fetch(self, package_name: str, package_version: str) -> dict: """Fetch digests of files present in artifacts for the given package.""" _LOGGER.info("Fetching digests for package %r in version %r from %r", package_name, package_version, self.source.url) artifacts = self.source.get_package_hashes(package_name, package_version, True) return { "package_name": package_name, "package_version": package_version, "index_url": self.source.url, "artifacts": artifacts, }