Skip to content

Commit 06c26e6

Browse files
committed
Include namespaces in graph
1 parent 4fce233 commit 06c26e6

3 files changed

Lines changed: 27 additions & 7 deletions

File tree

src/grimp/application/usecases.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"""
44

55
from typing import cast
6-
6+
import itertools
77
from collections.abc import Sequence, Iterable
88

99
from .scanning import scan_imports
@@ -158,6 +158,11 @@ def _assemble_graph(
158158
) -> ImportGraph:
159159
graph: ImportGraph = settings.IMPORT_GRAPH_CLASS()
160160

161+
for namespace_package in itertools.chain.from_iterable(
162+
found_package.namespace_packages for found_package in found_packages
163+
):
164+
graph.add_module(namespace_package)
165+
161166
package_modules = {Module(found_package.name) for found_package in found_packages}
162167

163168
for module, direct_imports in imports_by_module.items():

tests/functional/test_namespace_packages.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
def test_build_graph_for_namespace():
2626
graph = build_graph("mynamespace", cache_dir=None)
2727

28-
assert graph.modules == YELLOW_MODULES | GREEN_MODULES | BLUE_MODULES
28+
assert graph.modules == {"mynamespace"} | YELLOW_MODULES | GREEN_MODULES | BLUE_MODULES
2929
assert graph.count_imports()
3030

3131

@@ -120,16 +120,31 @@ def test_import_between_namespace_children():
120120
@pytest.mark.parametrize(
121121
"package_name, expected",
122122
[
123-
# TODO: include the namespace packages as modules too.
124123
(
125124
"nestednamespace",
126-
FOO_ALPHA_BLUE_MODULES | FOO_ALPHA_GREEN_MODULES | BAR_BETA_MODULES,
125+
{
126+
"nestednamespace",
127+
"nestednamespace.foo",
128+
"nestednamespace.foo.alpha",
129+
"nestednamespace.bar",
130+
}
131+
| FOO_ALPHA_BLUE_MODULES
132+
| FOO_ALPHA_GREEN_MODULES
133+
| BAR_BETA_MODULES,
127134
),
128135
(
129136
"nestednamespace.foo",
130-
FOO_ALPHA_BLUE_MODULES | FOO_ALPHA_GREEN_MODULES,
137+
{
138+
"nestednamespace.foo",
139+
"nestednamespace.foo.alpha",
140+
}
141+
| FOO_ALPHA_BLUE_MODULES
142+
| FOO_ALPHA_GREEN_MODULES,
143+
),
144+
(
145+
"nestednamespace.foo.alpha",
146+
{"nestednamespace.foo.alpha"} | FOO_ALPHA_BLUE_MODULES | FOO_ALPHA_GREEN_MODULES,
131147
),
132-
("nestednamespace.foo.alpha", FOO_ALPHA_BLUE_MODULES | FOO_ALPHA_GREEN_MODULES),
133148
],
134149
)
135150
def test_build_graph_for_nested_namespace(package_name, expected):

tests/unit/application/test_usecases.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ class FakePackageFinder(BaseFakePackageFinder):
197197
graph = usecases.build_graph("mypackage")
198198

199199
assert graph.modules == {
200-
# TODO "mypackage" should also be included.
200+
"mypackage",
201201
"mypackage.foo",
202202
"mypackage.foo.one",
203203
"mypackage.foo.two",

0 commit comments

Comments
 (0)