From c8a8603cb1baef4d99986e3cf0ab3cee574fc21e Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Fri, 19 Feb 2021 17:59:33 -0500 Subject: [PATCH] Add prototype implementation --- src/dependency_injector/wiring.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/dependency_injector/wiring.py b/src/dependency_injector/wiring.py index 205eee04..5658cece 100644 --- a/src/dependency_injector/wiring.py +++ b/src/dependency_injector/wiring.py @@ -109,6 +109,11 @@ class ProvidersMap: return self._resolve_config_option(provider) elif isinstance(provider, providers.TypedConfigurationOption): return self._resolve_config_option(provider.option, as_=provider.provides) + elif isinstance(provider, str): + current_provider = self._container + for segment in provider.split('.'): + current_provider = getattr(current_provider, segment) + return current_provider else: return self._resolve_provider(provider) @@ -524,10 +529,10 @@ class ClassGetItemMeta(GenericMeta): class _Marker(Generic[T], metaclass=ClassGetItemMeta): - def __init__(self, provider: Union[providers.Provider, Container]) -> None: + def __init__(self, provider: Union[providers.Provider, Container, str]) -> None: if _is_declarative_container(provider): provider = provider.__self__ - self.provider: providers.Provider = provider + self.provider = provider def __class_getitem__(cls, item) -> T: return cls(item)