Skip to content

Commit

Permalink
Add missing modules to packages_distributions
Browse files Browse the repository at this point in the history
Signed-off-by: Filipe Laíns <lains@riseup.net>
  • Loading branch information
FFY00 authored and jaraco committed Mar 18, 2023
1 parent b944c37 commit 56aee03
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 5 deletions.
14 changes: 9 additions & 5 deletions importlib_metadata/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import itertools
import posixpath
import collections
import inspect

from . import _adapters, _meta, _py39compat
from ._collections import FreezableDefaultDict, Pair
Expand Down Expand Up @@ -897,8 +898,11 @@ def _top_level_declared(dist):


def _top_level_inferred(dist):
return {
f.parts[0] if len(f.parts) > 1 else f.with_suffix('').name
for f in always_iterable(dist.files)
if f.suffix == ".py"
}
return filter(
None,
{
# this logic relies on the assumption that dist.files only contains files (not directories)
inspect.getmodulename(f) if len(f.parts) == 1 else f.parts[0]
for f in always_iterable(dist.files)
},
)
31 changes: 31 additions & 0 deletions tests/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,3 +322,34 @@ def test_packages_distributions_neither_toplevel_nor_files(self):
prefix=self.site_dir,
)
packages_distributions()

def test_packages_distributions_all_module_types(self):
"""
Test top-level modules detected on a package without 'top-level.txt'.
"""
suffixes = importlib.machinery.all_suffixes()
fixtures.build_files(
{
'all_distributions-1.0.0.dist-info': {
'METADATA': """
Name: all_distributions
Version: 1.0.0
""",
'RECORD': ''.join(
f'{i}-top-level{suffix},,\n'
f'{i}-in-namespace/mod{suffix},,\n'
f'{i}-in-package/__init__.py,,\n'
f'{i}-in-package/mod{suffix},,\n'
for i, suffix in enumerate(suffixes)
),
},
},
prefix=self.site_dir,
)

distributions = packages_distributions()

for i in range(len(suffixes)):
assert distributions[f'{i}-top-level'] == ['all_distributions']
assert distributions[f'{i}-in-namespace'] == ['all_distributions']
assert distributions[f'{i}-in-package'] == ['all_distributions']

0 comments on commit 56aee03

Please sign in to comment.