Skip to content

Commit 812db6f

Browse files
authored
Merge branch 'main' into egg-metadata-work
2 parents 4e7f79f + 64ae8f6 commit 812db6f

File tree

5 files changed

+53
-9
lines changed

5 files changed

+53
-9
lines changed

CHANGES.rst

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
v6.2.1
2+
======
3+
4+
* #442: Fixed issue introduced in v6.1.0 where non-importable
5+
names (metadata dirs) began appearing in
6+
``packages_distributions``.
7+
8+
v6.2.0
9+
======
10+
11+
* #384: ``PackageMetadata`` now stipulates an additional ``get``
12+
method allowing for easy querying of metadata keys that may not
13+
be present.
14+
115
v6.1.0
216
======
317

importlib_metadata/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -947,4 +947,9 @@ def _top_level_inferred(dist):
947947
f.parts[0] if len(f.parts) > 1 else inspect.getmodulename(f)
948948
for f in always_iterable(dist.files)
949949
}
950-
return filter(None, opt_names)
950+
951+
@pass_none
952+
def importable_name(name):
953+
return '.' not in name
954+
955+
return filter(importable_name, opt_names)

importlib_metadata/_meta.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ def __getitem__(self, key: str) -> str:
1818
def __iter__(self) -> Iterator[str]:
1919
... # pragma: no cover
2020

21+
@overload
22+
def get(self, name: str, failobj: None = None) -> Optional[str]:
23+
... # pragma: no cover
24+
25+
@overload
26+
def get(self, name: str, failobj: _T) -> Union[str, _T]:
27+
... # pragma: no cover
28+
2129
# overload per python/importlib_metadata#435
2230
@overload
2331
def get_all(self, name: str, failobj: None = None) -> Optional[List[Any]]:

tests/test_api.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,20 @@ def test_missing_key_legacy(self):
164164
with suppress_known_deprecation():
165165
assert md['does-not-exist'] is None
166166

167+
def test_get_key(self):
168+
"""
169+
Getting a key gets the key.
170+
"""
171+
md = metadata('egginfo-pkg')
172+
assert md.get('Name') == 'egginfo-pkg'
173+
174+
def test_get_missing_key(self):
175+
"""
176+
Requesting a missing key will return None.
177+
"""
178+
md = metadata('distinfo-pkg')
179+
assert md.get('does-not-exist') is None
180+
167181
@staticmethod
168182
def _test_files(files):
169183
root = files[0].root

tests/test_main.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -345,11 +345,12 @@ def test_packages_distributions_all_module_types(self):
345345
Name: all_distributions
346346
Version: 1.0.0
347347
""",
348-
'RECORD': ''.join(
349-
f'{i}-top-level{suffix},,\n'
350-
f'{i}-in-namespace/mod{suffix},,\n'
351-
f'{i}-in-package/__init__.py,,\n'
352-
f'{i}-in-package/mod{suffix},,\n'
348+
'RECORD': 'all_distributions-1.0.0.dist-info/METADATA\n'
349+
+ ''.join(
350+
f'importable-name {i}{suffix},,\n'
351+
f'in_namespace_{i}/mod{suffix},,\n'
352+
f'in_package_{i}/__init__.py,,\n'
353+
f'in_package_{i}/mod{suffix},,\n'
353354
for i, suffix in enumerate(suffixes)
354355
),
355356
},
@@ -360,9 +361,11 @@ def test_packages_distributions_all_module_types(self):
360361
distributions = packages_distributions()
361362

362363
for i in range(len(suffixes)):
363-
assert distributions[f'{i}-top-level'] == ['all_distributions']
364-
assert distributions[f'{i}-in-namespace'] == ['all_distributions']
365-
assert distributions[f'{i}-in-package'] == ['all_distributions']
364+
assert distributions[f'importable-name {i}'] == ['all_distributions']
365+
assert distributions[f'in_namespace_{i}'] == ['all_distributions']
366+
assert distributions[f'in_package_{i}'] == ['all_distributions']
367+
368+
assert not any(name.endswith('.dist-info') for name in distributions)
366369

367370

368371
class PackagesDistributionsEggTest(

0 commit comments

Comments
 (0)