Updating wiring module

This commit is contained in:
Roman Mogylatov 2021-09-27 20:22:46 -04:00
parent 67d16bf48b
commit d0ea82949f

View File

@ -15,6 +15,7 @@ from typing import (
Callable, Callable,
Any, Any,
Tuple, Tuple,
List,
Dict, Dict,
Generic, Generic,
TypeVar, TypeVar,
@ -321,16 +322,20 @@ class InspectFilter:
def wire( # noqa: C901 def wire( # noqa: C901
container: Container, container: Container,
*, *,
modules: Optional[Iterable[ModuleType]] = None, modules: Optional[Iterable[Union[ModuleType, str]]] = None,
packages: Optional[Iterable[ModuleType]] = None, packages: Optional[Iterable[Union[ModuleType, str]]] = None,
from_package: Optional[str] = None,
) -> None: ) -> None:
"""Wire container providers with provided packages and modules.""" """Wire container providers with provided packages and modules."""
if not modules: if not modules:
modules = [] modules = []
modules = _resolve_string_imports(modules, from_package)
if packages: if not packages:
for package in packages: packages = []
modules.extend(_fetch_modules(package)) packages = _resolve_string_imports(packages, from_package)
for package in packages:
modules.extend(_fetch_modules(package))
providers_map = ProvidersMap(container) providers_map = ProvidersMap(container)
@ -672,6 +677,16 @@ def _is_declarative_container(instance: Any) -> bool:
and getattr(instance, 'declarative_parent', None) is None) and getattr(instance, 'declarative_parent', None) is None)
def _resolve_string_imports(
modules: Optional[Iterable[Union[ModuleType, str]]],
from_package: Optional[str],
) -> List[ModuleType]:
return [
importlib.import_module(module, from_package) if isinstance(module, str) else module
for module in modules
]
class Modifier: class Modifier:
def modify( def modify(