File tree Expand file tree Collapse file tree 2 files changed +40
-5
lines changed Expand file tree Collapse file tree 2 files changed +40
-5
lines changed Original file line number Diff line number Diff line change 13
13
import itertools
14
14
import posixpath
15
15
import collections
16
+ import inspect
16
17
17
18
from . import _adapters , _meta , _py39compat
18
19
from ._collections import FreezableDefaultDict , Pair
@@ -897,8 +898,11 @@ def _top_level_declared(dist):
897
898
898
899
899
900
def _top_level_inferred (dist ):
900
- return {
901
- f .parts [0 ] if len (f .parts ) > 1 else f .with_suffix ('' ).name
902
- for f in always_iterable (dist .files )
903
- if f .suffix == ".py"
904
- }
901
+ return filter (
902
+ None ,
903
+ {
904
+ # this logic relies on the assumption that dist.files only contains files (not directories)
905
+ inspect .getmodulename (f ) if len (f .parts ) == 1 else f .parts [0 ]
906
+ for f in always_iterable (dist .files )
907
+ },
908
+ )
Original file line number Diff line number Diff line change @@ -322,3 +322,34 @@ def test_packages_distributions_neither_toplevel_nor_files(self):
322
322
prefix = self .site_dir ,
323
323
)
324
324
packages_distributions ()
325
+
326
+ def test_packages_distributions_all_module_types (self ):
327
+ """
328
+ Test top-level modules detected on a package without 'top-level.txt'.
329
+ """
330
+ suffixes = importlib .machinery .all_suffixes ()
331
+ fixtures .build_files (
332
+ {
333
+ 'all_distributions-1.0.0.dist-info' : {
334
+ 'METADATA' : """
335
+ Name: all_distributions
336
+ Version: 1.0.0
337
+ """ ,
338
+ 'RECORD' : '' .join (
339
+ f'{ i } -top-level{ suffix } ,,\n '
340
+ f'{ i } -in-namespace/mod{ suffix } ,,\n '
341
+ f'{ i } -in-package/__init__.py,,\n '
342
+ f'{ i } -in-package/mod{ suffix } ,,\n '
343
+ for i , suffix in enumerate (suffixes )
344
+ ),
345
+ },
346
+ },
347
+ prefix = self .site_dir ,
348
+ )
349
+
350
+ distributions = packages_distributions ()
351
+
352
+ for i in range (len (suffixes )):
353
+ assert distributions [f'{ i } -top-level' ] == ['all_distributions' ]
354
+ assert distributions [f'{ i } -in-namespace' ] == ['all_distributions' ]
355
+ assert distributions [f'{ i } -in-package' ] == ['all_distributions' ]
You can’t perform that action at this time.
0 commit comments