[Python-checkins] [3.9] bpo-47004: Sync with importlib_metadata 4.11.3. (GH-31854). (GH-31859)
jaraco
webhook-mailer at python.org
Sun Mar 13 17:30:12 EDT 2022
https://github.com/python/cpython/commit/177be52517da9a876a3f9e670f88c4731b906986
commit: 177be52517da9a876a3f9e670f88c4731b906986
branch: 3.9
author: Jason R. Coombs <jaraco at jaraco.com>
committer: jaraco <jaraco at jaraco.com>
date: 2022-03-13T17:30:07-04:00
summary:
[3.9] bpo-47004: Sync with importlib_metadata 4.11.3. (GH-31854). (GH-31859)
(cherry picked from commit b1e286860742e7ba6fadc75e3ddb6c2899a56919)
Co-authored-by: Jason R. Coombs <jaraco at jaraco.com>
files:
A Misc/NEWS.d/next/Library/2022-03-13-15-04-05.bpo-47004.SyYpxd.rst
M Doc/library/importlib.metadata.rst
M Lib/importlib/metadata.py
M Lib/test/test_importlib/test_metadata_api.py
diff --git a/Doc/library/importlib.metadata.rst b/Doc/library/importlib.metadata.rst
index 1f73017e05ced..7652d501d9d91 100644
--- a/Doc/library/importlib.metadata.rst
+++ b/Doc/library/importlib.metadata.rst
@@ -199,6 +199,8 @@ function::
["pytest (>=3.0.0) ; extra == 'test'", "pytest-cov ; extra == 'test'"]
+.. _distributions:
+
Distributions
=============
diff --git a/Lib/importlib/metadata.py b/Lib/importlib/metadata.py
index 7b8038fd63a84..647fd3e4dbf8b 100644
--- a/Lib/importlib/metadata.py
+++ b/Lib/importlib/metadata.py
@@ -45,6 +45,15 @@ class EntryPoint(
See `the packaging docs on entry points
<https://packaging.python.org/specifications/entry-points/>`_
for more information.
+
+ >>> ep = EntryPoint(
+ ... name=None, group=None, value='package.module:attr [extra1, extra2]')
+ >>> ep.module
+ 'package.module'
+ >>> ep.attr
+ 'attr'
+ >>> ep.extras
+ ['extra1', 'extra2']
"""
pattern = re.compile(
@@ -91,7 +100,7 @@ def attr(self):
@property
def extras(self):
match = self.pattern.match(self.value)
- return list(re.finditer(r'\w+', match.group('extras') or ''))
+ return re.findall(r'\w+', match.group('extras') or '')
@classmethod
def _from_config(cls, config):
@@ -308,7 +317,7 @@ def _read_dist_info_reqs(self):
def _read_egg_info_reqs(self):
source = self.read_text('requires.txt')
- return source and self._deps_from_requires_text(source)
+ return None if source is None else self._deps_from_requires_text(source)
@classmethod
def _deps_from_requires_text(cls, source):
diff --git a/Lib/test/test_importlib/test_metadata_api.py b/Lib/test/test_importlib/test_metadata_api.py
index 420fbfeb3a704..cba920ab02c87 100644
--- a/Lib/test/test_importlib/test_metadata_api.py
+++ b/Lib/test/test_importlib/test_metadata_api.py
@@ -104,6 +104,16 @@ def test_requires_egg_info(self):
for dep in deps
)
+ def test_requires_egg_info_empty(self):
+ fixtures.build_files(
+ {
+ 'requires.txt': '',
+ },
+ self.site_dir.joinpath('egginfo_pkg.egg-info'),
+ )
+ deps = requires('egginfo-pkg')
+ assert deps == []
+
def test_requires_dist_info(self):
deps = requires('distinfo-pkg')
assert len(deps) == 2
diff --git a/Misc/NEWS.d/next/Library/2022-03-13-15-04-05.bpo-47004.SyYpxd.rst b/Misc/NEWS.d/next/Library/2022-03-13-15-04-05.bpo-47004.SyYpxd.rst
new file mode 100644
index 0000000000000..3cb3b212d89e9
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2022-03-13-15-04-05.bpo-47004.SyYpxd.rst
@@ -0,0 +1,3 @@
+Apply bugfixes from importlib_metadata 4.11.3, including bugfix for
+EntryPoint.extras, which was returning match objects and not the extras
+strings.
More information about the Python-checkins
mailing list