diff --git a/src/dependency_injector/providers.pyi b/src/dependency_injector/providers.pyi index 19699536..8a8ec9f5 100644 --- a/src/dependency_injector/providers.pyi +++ b/src/dependency_injector/providers.pyi @@ -261,6 +261,13 @@ class List(Provider): def clear_args(self) -> List: ... +class Container(Provider): + + def __init__(self, container_cls: Type[T], container: Optional[T] = None, **overriding_providers: Provider) -> None: ... + def __call__(self, *args: Injection, **kwargs: Injection) -> T: ... + def __getattr__(self, name: str) -> Provider: ... + + class ProvidedInstanceFluentInterface: def __getattr__(self, item: str) -> AttributeGetter: ... def __getitem__(self, item: str) -> ItemGetter: ... diff --git a/tests/typing/container.py b/tests/typing/container.py new file mode 100644 index 00000000..768f1d3f --- /dev/null +++ b/tests/typing/container.py @@ -0,0 +1,14 @@ +from dependency_injector import providers + + +class Container: + ... + + +# Test 1: to check the return type +provider1 = providers.Container(Container) +var1: Container = provider1() + +# Test 2: to check the getattr +provider2 = providers.Container(Container) +attr: providers.Provider = provider2.attr