Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Apply refactorings found in importlib_metadata 4.8.2.
  • Loading branch information
jaraco committed Dec 16, 2021
commit ec6cb9a223b81672e2a93bcab07b79ae829f6c8a
71 changes: 29 additions & 42 deletions Lib/importlib/metadata/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

from . import _adapters, _meta
from ._collections import FreezableDefaultDict, Pair
from ._functools import method_cache
from ._functools import method_cache, pass_none
from ._itertools import always_iterable, unique_everseen
from ._meta import PackageMetadata, SimplePath

Expand Down Expand Up @@ -285,52 +285,33 @@ class DeprecatedList(list):
stacklevel=2,
)

def __setitem__(self, *args, **kwargs):
self._warn()
return super().__setitem__(*args, **kwargs)

def __delitem__(self, *args, **kwargs):
self._warn()
return super().__delitem__(*args, **kwargs)

def append(self, *args, **kwargs):
self._warn()
return super().append(*args, **kwargs)

def reverse(self, *args, **kwargs):
self._warn()
return super().reverse(*args, **kwargs)

def extend(self, *args, **kwargs):
self._warn()
return super().extend(*args, **kwargs)

def pop(self, *args, **kwargs):
self._warn()
return super().pop(*args, **kwargs)

def remove(self, *args, **kwargs):
self._warn()
return super().remove(*args, **kwargs)

def __iadd__(self, *args, **kwargs):
self._warn()
return super().__iadd__(*args, **kwargs)
def _wrap_deprecated_method(method_name: str): # type: ignore
def wrapped(self, *args, **kwargs):
self._warn()
return getattr(super(), method_name)(*args, **kwargs)

return wrapped

for method_name in [
'__setitem__',
'__delitem__',
'append',
'reverse',
'extend',
'pop',
'remove',
'__iadd__',
'insert',
'sort',
]:
locals()[method_name] = _wrap_deprecated_method(method_name)

def __add__(self, other):
if not isinstance(other, tuple):
self._warn()
other = tuple(other)
return self.__class__(tuple(self) + other)

def insert(self, *args, **kwargs):
self._warn()
return super().insert(*args, **kwargs)

def sort(self, *args, **kwargs):
self._warn()
return super().sort(*args, **kwargs)

def __eq__(self, other):
if not isinstance(other, tuple):
self._warn()
Expand Down Expand Up @@ -649,7 +630,6 @@ def files(self):
missing.
Result may be empty if the metadata exists but is empty.
"""
file_lines = self._read_files_distinfo() or self._read_files_egginfo()

def make_file(name, hash=None, size_str=None):
result = PackagePath(name)
Expand All @@ -658,7 +638,11 @@ def make_file(name, hash=None, size_str=None):
result.dist = self
return result

return file_lines and list(starmap(make_file, csv.reader(file_lines)))
@pass_none
def make_files(lines):
return list(starmap(make_file, csv.reader(lines)))

return make_files(self._read_files_distinfo() or self._read_files_egginfo())

def _read_files_distinfo(self):
"""
Expand Down Expand Up @@ -771,6 +755,9 @@ class FastPath:
"""
Micro-optimized class for searching a path for
children.

>>> FastPath('').children()
['...']
"""

@functools.lru_cache() # type: ignore
Expand Down
19 changes: 19 additions & 0 deletions Lib/importlib/metadata/_functools.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,22 @@ def wrapper(self, *args, **kwargs):
wrapper.cache_clear = lambda: None

return wrapper


# From jaraco.functools 3.3
def pass_none(func):
"""
Wrap func so it's not called if its first param is None

>>> print_text = pass_none(print)
>>> print_text('text')
text
>>> print_text(None)
"""

@functools.wraps(func)
def wrapper(param, *args, **kwargs):
if param is not None:
return func(param, *args, **kwargs)

return wrapper