Skip to content

Commit a5af814

Browse files
committed
Apply refactorings found in importlib_metadata 4.8.2.
1 parent bbac427 commit a5af814

File tree

2 files changed

+48
-42
lines changed

2 files changed

+48
-42
lines changed

Lib/importlib/metadata/__init__.py

Lines changed: 29 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
from . import _adapters, _meta
1818
from ._collections import FreezableDefaultDict, Pair
19-
from ._functools import method_cache
19+
from ._functools import method_cache, pass_none
2020
from ._itertools import always_iterable, unique_everseen
2121
from ._meta import PackageMetadata, SimplePath
2222

@@ -285,52 +285,33 @@ class DeprecatedList(list):
285285
stacklevel=2,
286286
)
287287

288-
def __setitem__(self, *args, **kwargs):
289-
self._warn()
290-
return super().__setitem__(*args, **kwargs)
291-
292-
def __delitem__(self, *args, **kwargs):
293-
self._warn()
294-
return super().__delitem__(*args, **kwargs)
295-
296-
def append(self, *args, **kwargs):
297-
self._warn()
298-
return super().append(*args, **kwargs)
299-
300-
def reverse(self, *args, **kwargs):
301-
self._warn()
302-
return super().reverse(*args, **kwargs)
303-
304-
def extend(self, *args, **kwargs):
305-
self._warn()
306-
return super().extend(*args, **kwargs)
307-
308-
def pop(self, *args, **kwargs):
309-
self._warn()
310-
return super().pop(*args, **kwargs)
311-
312-
def remove(self, *args, **kwargs):
313-
self._warn()
314-
return super().remove(*args, **kwargs)
315-
316-
def __iadd__(self, *args, **kwargs):
317-
self._warn()
318-
return super().__iadd__(*args, **kwargs)
288+
def _wrap_deprecated_method(method_name: str): # type: ignore
289+
def wrapped(self, *args, **kwargs):
290+
self._warn()
291+
return getattr(super(), method_name)(*args, **kwargs)
292+
293+
return wrapped
294+
295+
for method_name in [
296+
'__setitem__',
297+
'__delitem__',
298+
'append',
299+
'reverse',
300+
'extend',
301+
'pop',
302+
'remove',
303+
'__iadd__',
304+
'insert',
305+
'sort',
306+
]:
307+
locals()[method_name] = _wrap_deprecated_method(method_name)
319308

320309
def __add__(self, other):
321310
if not isinstance(other, tuple):
322311
self._warn()
323312
other = tuple(other)
324313
return self.__class__(tuple(self) + other)
325314

326-
def insert(self, *args, **kwargs):
327-
self._warn()
328-
return super().insert(*args, **kwargs)
329-
330-
def sort(self, *args, **kwargs):
331-
self._warn()
332-
return super().sort(*args, **kwargs)
333-
334315
def __eq__(self, other):
335316
if not isinstance(other, tuple):
336317
self._warn()
@@ -649,7 +630,6 @@ def files(self):
649630
missing.
650631
Result may be empty if the metadata exists but is empty.
651632
"""
652-
file_lines = self._read_files_distinfo() or self._read_files_egginfo()
653633

654634
def make_file(name, hash=None, size_str=None):
655635
result = PackagePath(name)
@@ -658,7 +638,11 @@ def make_file(name, hash=None, size_str=None):
658638
result.dist = self
659639
return result
660640

661-
return file_lines and list(starmap(make_file, csv.reader(file_lines)))
641+
@pass_none
642+
def make_files(lines):
643+
return list(starmap(make_file, csv.reader(lines)))
644+
645+
return make_files(self._read_files_distinfo() or self._read_files_egginfo())
662646

663647
def _read_files_distinfo(self):
664648
"""
@@ -771,6 +755,9 @@ class FastPath:
771755
"""
772756
Micro-optimized class for searching a path for
773757
children.
758+
759+
>>> FastPath('').children()
760+
['...']
774761
"""
775762

776763
@functools.lru_cache() # type: ignore

Lib/importlib/metadata/_functools.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,3 +83,22 @@ def wrapper(self, *args, **kwargs):
8383
wrapper.cache_clear = lambda: None
8484

8585
return wrapper
86+
87+
88+
# From jaraco.functools 3.3
89+
def pass_none(func):
90+
"""
91+
Wrap func so it's not called if its first param is None
92+
93+
>>> print_text = pass_none(print)
94+
>>> print_text('text')
95+
text
96+
>>> print_text(None)
97+
"""
98+
99+
@functools.wraps(func)
100+
def wrapper(param, *args, **kwargs):
101+
if param is not None:
102+
return func(param, *args, **kwargs)
103+
104+
return wrapper

0 commit comments

Comments
 (0)