[Python-checkins] [3.10] bpo-44241: Incorporate changes from importlib_metadata 4.1. (GH-26382) (GH-26395)
miss-islington
webhook-mailer at python.org
Wed May 26 21:22:38 EDT 2021
https://github.com/python/cpython/commit/5d569ef9dd57cf03473ef0c04f0e58b6c5cb5d04
commit: 5d569ef9dd57cf03473ef0c04f0e58b6c5cb5d04
branch: 3.10
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: miss-islington <31488909+miss-islington at users.noreply.github.com>
date: 2021-05-26T18:22:25-07:00
summary:
[3.10] bpo-44241: Incorporate changes from importlib_metadata 4.1. (GH-26382) (GH-26395)
(cherry picked from commit 06ac3a4742228b0230981720060248a7425b2486)
Co-authored-by: Jason R. Coombs <jaraco at jaraco.com>
Automerge-Triggered-By: GH:jaraco
files:
A Misc/NEWS.d/next/Library/2021-05-26-13-15-51.bpo-44241.TBqej8.rst
M Lib/importlib/metadata/__init__.py
M Lib/importlib/metadata/_adapters.py
M Lib/importlib/metadata/_meta.py
diff --git a/Lib/importlib/metadata/__init__.py b/Lib/importlib/metadata/__init__.py
index 629f1858e5b79..94b83869a6855 100644
--- a/Lib/importlib/metadata/__init__.py
+++ b/Lib/importlib/metadata/__init__.py
@@ -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
@@ -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)
@@ -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
@@ -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
diff --git a/Lib/importlib/metadata/_adapters.py b/Lib/importlib/metadata/_adapters.py
index ab086180fc35f..aa460d3eda50f 100644
--- a/Lib/importlib/metadata/_adapters.py
+++ b/Lib/importlib/metadata/_adapters.py
@@ -19,6 +19,7 @@ class Message(email.message.Message):
'Requires-Dist',
'Requires-External',
'Supported-Platform',
+ 'Dynamic',
],
)
)
diff --git a/Lib/importlib/metadata/_meta.py b/Lib/importlib/metadata/_meta.py
index 04d9a0235368e..1a6edbf957d5a 100644
--- a/Lib/importlib/metadata/_meta.py
+++ b/Lib/importlib/metadata/_meta.py
@@ -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
diff --git a/Misc/NEWS.d/next/Library/2021-05-26-13-15-51.bpo-44241.TBqej8.rst b/Misc/NEWS.d/next/Library/2021-05-26-13-15-51.bpo-44241.TBqej8.rst
new file mode 100644
index 0000000000000..c160cf70abb52
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2021-05-26-13-15-51.bpo-44241.TBqej8.rst
@@ -0,0 +1,2 @@
+Incorporate minor tweaks from importlib_metadata 4.1: SimplePath protocol,
+support for Metadata 2.2.
More information about the Python-checkins
mailing list