Skip to content

Commit 7bdcc33

Browse files
committed
Update wiring to support modules provided as packages
1 parent b4ddf61 commit 7bdcc33

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

src/dependency_injector/wiring.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,8 @@ def _unbind_injections(fn: Callable[..., Any]) -> None:
552552

553553
def _fetch_modules(package):
554554
modules = [package]
555+
if not hasattr(package, '__path__') or not hasattr(package, '__name__'):
556+
return modules
555557
for module_info in pkgutil.walk_packages(
556558
path=package.__path__,
557559
prefix=package.__name__ + '.',

tests/unit/wiring/test_wiring_py36.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,18 @@ def test_container(self):
310310
self.assertIsInstance(service, Service)
311311

312312

313+
class ModuleAsPackagingTest(unittest.TestCase):
314+
315+
def setUp(self):
316+
self.container = Container(config={'a': {'b': {'c': 10}}})
317+
self.addCleanup(self.container.unwire)
318+
319+
def test_module_as_package_wiring(self):
320+
# See: https://github.com/ets-labs/python-dependency-injector/issues/481
321+
self.container.wire(packages=[module])
322+
self.assertIsInstance(module.service, Service)
323+
324+
313325
class WiringAndQueue(unittest.TestCase):
314326

315327
def test_wire_queue(self) -> None:

0 commit comments

Comments
 (0)