mirror of
https://github.com/python/cpython.git
synced 2025-01-10 18:44:53 +08:00
bpo-47004: Sync with importlib_metadata 4.11.3. (#31854)
This commit is contained in:
parent
c99ac3c364
commit
b1e2868607
@ -264,6 +264,7 @@ Python packages or modules::
|
||||
|
||||
.. versionadded:: 3.10
|
||||
|
||||
.. _distributions:
|
||||
|
||||
Distributions
|
||||
=============
|
||||
|
@ -152,6 +152,15 @@ class EntryPoint(DeprecatedTuple):
|
||||
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(
|
||||
@ -203,7 +212,7 @@ class EntryPoint(DeprecatedTuple):
|
||||
@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 '')
|
||||
|
||||
def _for(self, dist):
|
||||
vars(self).update(dist=dist)
|
||||
@ -221,6 +230,25 @@ class EntryPoint(DeprecatedTuple):
|
||||
return iter((self.name, self))
|
||||
|
||||
def matches(self, **params):
|
||||
"""
|
||||
EntryPoint matches the given parameters.
|
||||
|
||||
>>> ep = EntryPoint(group='foo', name='bar', value='bing:bong [extra1, extra2]')
|
||||
>>> ep.matches(group='foo')
|
||||
True
|
||||
>>> ep.matches(name='bar', value='bing:bong [extra1, extra2]')
|
||||
True
|
||||
>>> ep.matches(group='foo', name='other')
|
||||
False
|
||||
>>> ep.matches()
|
||||
True
|
||||
>>> ep.matches(extras=['extra1', 'extra2'])
|
||||
True
|
||||
>>> ep.matches(module='bing')
|
||||
True
|
||||
>>> ep.matches(attr='bong')
|
||||
True
|
||||
"""
|
||||
attrs = (getattr(self, param) for param in params)
|
||||
return all(map(operator.eq, params.values(), attrs))
|
||||
|
||||
@ -292,21 +320,15 @@ class DeprecatedList(list):
|
||||
self._warn()
|
||||
return getattr(super(), method_name)(*args, **kwargs)
|
||||
|
||||
return wrapped
|
||||
return method_name, wrapped
|
||||
|
||||
for method_name in [
|
||||
'__setitem__',
|
||||
'__delitem__',
|
||||
'append',
|
||||
'reverse',
|
||||
'extend',
|
||||
'pop',
|
||||
'remove',
|
||||
'__iadd__',
|
||||
'insert',
|
||||
'sort',
|
||||
]:
|
||||
locals()[method_name] = _wrap_deprecated_method(method_name)
|
||||
locals().update(
|
||||
map(
|
||||
_wrap_deprecated_method,
|
||||
'__setitem__ __delitem__ append reverse extend pop remove '
|
||||
'__iadd__ insert sort'.split(),
|
||||
)
|
||||
)
|
||||
|
||||
def __add__(self, other):
|
||||
if not isinstance(other, tuple):
|
||||
@ -660,7 +682,7 @@ class Distribution:
|
||||
|
||||
def _read_egg_info_reqs(self):
|
||||
source = self.read_text('requires.txt')
|
||||
return source and self._deps_from_requires_text(source)
|
||||
return pass_none(self._deps_from_requires_text)(source)
|
||||
|
||||
@classmethod
|
||||
def _deps_from_requires_text(cls, source):
|
||||
@ -765,7 +787,6 @@ class FastPath:
|
||||
|
||||
def __init__(self, root):
|
||||
self.root = root
|
||||
self.base = os.path.basename(self.root).lower()
|
||||
|
||||
def joinpath(self, child):
|
||||
return pathlib.Path(self.root, child)
|
||||
|
@ -220,6 +220,16 @@ class APITests(
|
||||
assert len(deps) == 2
|
||||
assert any(dep == 'wheel >= 1.0; python_version >= "2.7"' 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
|
||||
|
@ -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.
|
Loading…
Reference in New Issue
Block a user