MCPcopy Create free account
hub / github.com/dwavesystems/dwave-cloud-client / get_distribution

Function get_distribution

dwave/cloud/utils/dist.py:60–94  ·  view source on GitHub ↗

Returns :class:`~importlib.metadata.Distribution` for a matching `requirement` specification. Note: this function re-implements :func:`pkg_resources.get_distribution` functionality for py38+ (including py312, where setuptools/pkg_resources is not available by default). Args:

(requirement: Union[str, Requirement],
                     prereleases: bool = True)

Source from the content-addressed store, hash-verified

58
59
60def get_distribution(requirement: Union[str, Requirement],
61 prereleases: bool = True) -> Distribution:
62 """Returns :class:`~importlib.metadata.Distribution` for a matching
63 `requirement` specification.
64
65 Note: this function re-implements :func:`pkg_resources.get_distribution`
66 functionality for py38+ (including py312, where setuptools/pkg_resources
67 is not available by default).
68
69 Args:
70 requirement:
71 Package dependency requirement according to PEP-508, given as string,
72 or :class:`~packaging.requirements.Requirement`.
73 prereleases:
74 Boolean flag to control if installed prereleases are allowed.
75
76 Raises:
77 :class:`~importlib.metadata.PackageNotFoundError`:
78 Package by name not found.
79 :class:`~dwave.cloud.utils.dist.VersionNotFoundError`:
80 Version of the package found (distribution) does not match the
81 requirement.
82 """
83
84 if not isinstance(requirement, Requirement):
85 requirement = Requirement(requirement)
86
87 dist = Distribution.from_name(requirement.name)
88
89 if not requirement.specifier.contains(dist.version, prereleases=prereleases):
90 raise VersionNotFoundError(
91 f"Package {dist.name!r} version {dist.version} "
92 f"does not match {requirement.specifier!s}")
93
94 return dist

Callers 3

_install_contrib_packageFunction · 0.90
test_get_distributionMethod · 0.90

Calls 1

Tested by 1

test_get_distributionMethod · 0.72