from ._collections import FreezableDefaultDict, Pair
from ._functools import method_cache
from ._itertools import unique_everseen
+from ._meta import PackageMetadata, SimplePath
from contextlib import suppress
from importlib import import_module
@property
def path(self):
"""
- The path that a distribution finder should search.
+ The sequence of directory path that a distribution finder
+ should search.
- Typically refers to Python package paths and defaults
- to ``sys.path``.
+ Typically refers to Python installed package paths such as
+ "site-packages" directories and defaults to ``sys.path``.
"""
return vars(self).get('path', sys.path)
class PathDistribution(Distribution):
- def __init__(self, path):
- """Construct a distribution from a path to the metadata directory.
+ def __init__(self, path: SimplePath):
+ """Construct a distribution.
- :param path: A pathlib.Path or similar object supporting
- .joinpath(), __div__, .parent, and .read_text().
+ :param path: SimplePath indicating the metadata directory.
"""
self._path = path
Return a list of requirements for the named package.
:return: An iterator of requirements, suitable for
- packaging.requirement.Requirement.
+ packaging.requirement.Requirement.
"""
return distribution(distribution_name).requires
"""
A JSON-compatible form of the metadata.
"""
+
+
+class SimplePath(Protocol):
+ """
+ A minimal subset of pathlib.Path required by PathDistribution.
+ """
+
+ def joinpath(self) -> 'SimplePath':
+ ... # pragma: no cover
+
+ def __div__(self) -> 'SimplePath':
+ ... # pragma: no cover
+
+ def parent(self) -> 'SimplePath':
+ ... # pragma: no cover
+
+ def read_text(self) -> str:
+ ... # pragma: no cover