Skip to content

Commit abd8372

Browse files
committed
Make package finder return multiple directories
This doesn't change the implementation yet, but it prepares us for supporting namespace packages passed in.
1 parent 474827e commit abd8372

5 files changed

Lines changed: 19 additions & 14 deletions

File tree

‎src/grimp/adaptors/packagefinder.py‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313

1414
class ImportLibPackageFinder(AbstractPackageFinder):
15-
def determine_package_directory(
15+
def _determine_package_directory(
1616
self, package_name: str, file_system: AbstractFileSystem
1717
) -> str:
1818
# TODO - do we need to add the current working directory here?
@@ -34,6 +34,11 @@ def determine_package_directory(
3434
"adding an __init__.py file should fix the problem."
3535
)
3636

37+
def determine_package_directories(
38+
self, package_name: str, file_system: AbstractFileSystem
39+
) -> set[str]:
40+
return {self._determine_package_directory(package_name, file_system)}
41+
3742
def _is_a_package(self, spec: ModuleSpec, file_system: AbstractFileSystem) -> bool:
3843
assert spec.origin
3944
filename = file_system.split(spec.origin)[1]

‎src/grimp/application/ports/packagefinder.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
class AbstractPackageFinder(abc.ABC):
77
@abc.abstractmethod
8-
def determine_package_directory(
8+
def determine_package_directories(
99
self, package_name: str, file_system: AbstractFileSystem
10-
) -> str:
10+
) -> set[str]:
1111
raise NotImplementedError

‎src/grimp/application/usecases.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def _find_packages(
7979
found_packages: set[FoundPackage] = set()
8080

8181
for package_name in package_names:
82-
package_directory = package_finder.determine_package_directory(
82+
[package_directory] = package_finder.determine_package_directories(
8383
package_name=package_name, file_system=file_system
8484
)
8585
found_package = module_finder.find_package(

‎tests/adaptors/packagefinder.py‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
class BaseFakePackageFinder(AbstractPackageFinder):
66
directory_map: dict[str, str] = {}
77

8-
def determine_package_directory(
8+
def determine_package_directories(
99
self, package_name: str, file_system: AbstractFileSystem
10-
) -> str:
11-
return self.directory_map[package_name]
10+
) -> set[str]:
11+
return {self.directory_map[package_name]}

‎tests/unit/adaptors/test_packagefinder.py‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
),
2626
),
2727
)
28-
def test_determine_package_directory(package, expected):
29-
assert ImportLibPackageFinder().determine_package_directory(package, FileSystem()) == str(
30-
expected
31-
)
28+
def test_determine_package_directories(package, expected):
29+
assert ImportLibPackageFinder().determine_package_directories(package, FileSystem()) == {
30+
str(expected)
31+
}
3232

3333

3434
def test_determine_package_directory_doesnt_support_namespace_packages():
@@ -40,7 +40,7 @@ def test_determine_package_directory_doesnt_support_namespace_packages():
4040
"namespace packages, adding an __init__.py file should fix the problem."
4141
),
4242
):
43-
ImportLibPackageFinder().determine_package_directory("mynamespace", FakeFileSystem())
43+
ImportLibPackageFinder().determine_package_directories("mynamespace", FakeFileSystem())
4444

4545

4646
@pytest.mark.parametrize(
@@ -53,8 +53,8 @@ def test_determine_package_directory_doesnt_support_namespace_packages():
5353
"mynamespace.yellow",
5454
),
5555
)
56-
def test_determine_package_directory_doesnt_support_non_top_level_modules(package):
56+
def test_determine_package_directories_doesnt_support_non_top_level_modules(package):
5757
with pytest.raises(
5858
exceptions.NotATopLevelModule,
5959
):
60-
ImportLibPackageFinder().determine_package_directory(package, FakeFileSystem())
60+
ImportLibPackageFinder().determine_package_directories(package, FakeFileSystem())

0 commit comments

Comments
 (0)