Navigation Menu

Skip to content

Commit

Permalink
[3.10] bpo-44241: Incorporate changes from importlib_metadata 4.1. (G…
Browse files Browse the repository at this point in the history
…H-26382) (GH-26395)

(cherry picked from commit 06ac3a4)


Co-authored-by: Jason R. Coombs <jaraco@jaraco.com>

Automerge-Triggered-By: GH:jaraco
  • Loading branch information
miss-islington committed May 27, 2021
1 parent 4115996 commit 5d569ef
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 8 deletions.
17 changes: 9 additions & 8 deletions Lib/importlib/metadata/__init__.py
Expand Up @@ -19,6 +19,7 @@
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
Expand Down Expand Up @@ -611,10 +612,11 @@ def __init__(self, **kwargs):
@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)

Expand Down Expand Up @@ -771,11 +773,10 @@ def invalidate_caches(cls):


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

Expand Down Expand Up @@ -869,7 +870,7 @@ def requires(distribution_name):
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

Expand Down
1 change: 1 addition & 0 deletions Lib/importlib/metadata/_adapters.py
Expand Up @@ -19,6 +19,7 @@ class Message(email.message.Message):
'Requires-Dist',
'Requires-External',
'Supported-Platform',
'Dynamic',
],
)
)
Expand Down
18 changes: 18 additions & 0 deletions Lib/importlib/metadata/_meta.py
Expand Up @@ -27,3 +27,21 @@ def json(self) -> Dict[str, Union[str, List[str]]]:
"""
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
@@ -0,0 +1,2 @@
Incorporate minor tweaks from importlib_metadata 4.1: SimplePath protocol,
support for Metadata 2.2.

0 comments on commit 5d569ef

Please sign in to comment.