Skip to content

Commit 1a8e808

Browse files
committed
Add fallback to infer top-level names for a distribution. Fixes #330.
1 parent 43afaeb commit 1a8e808

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

importlib_metadata/__init__.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1013,6 +1013,18 @@ def packages_distributions() -> Mapping[str, List[str]]:
10131013
"""
10141014
pkg_to_dist = collections.defaultdict(list)
10151015
for dist in distributions():
1016-
for pkg in (dist.read_text('top_level.txt') or '').split():
1016+
for pkg in _top_level_declared(dist) or _top_level_inferred(dist):
10171017
pkg_to_dist[pkg].append(dist.metadata['Name'])
10181018
return dict(pkg_to_dist)
1019+
1020+
1021+
def _top_level_declared(dist):
1022+
return (dist.read_text('top_level.txt') or '').split()
1023+
1024+
1025+
def _top_level_inferred(dist):
1026+
return {
1027+
f.parts[0] if len(f.parts) > 1 else f.with_suffix('').name
1028+
for f in dist.files
1029+
if f.suffix == ".py"
1030+
}

0 commit comments

Comments
 (0)