diff --git a/src/dependency_injector/containers.pyi b/src/dependency_injector/containers.pyi new file mode 100644 index 00000000..ce99aa4f --- /dev/null +++ b/src/dependency_injector/containers.pyi @@ -0,0 +1,18 @@ +from typing import Type, Dict, Tuple, Optional, Any, Union + +from .providers import Provider + + +class DynamicContainer: + provider_type: Type[Provider] = Provider + providers: Dict[str, Provider] + overridden: Tuple[Provider] + def __init__(self) -> None: ... + def __deepcopy__(self, memo: Optional[Dict[str, Any]]) -> Provider: ... + def __setattr__(self, name: str, value: Union[Provider, Any]) -> None: ... + def __delattr__(self, name: str) -> None: ... + def set_providers(self, **providers: Provider): ... + def override(self, overriding: DynamicContainer) -> None: ... + def override_providers(self, **overriding_providers: Provider) -> None: ... + def reset_last_overriding(self) -> None: ... + def reset_override(self) -> None: ... diff --git a/tests/typing/dynamic_container.py b/tests/typing/dynamic_container.py new file mode 100644 index 00000000..991e92e8 --- /dev/null +++ b/tests/typing/dynamic_container.py @@ -0,0 +1,18 @@ +from dependency_injector import containers, providers + + +# Test 1: to check setattr +container1 = containers.DynamicContainer() +container1.abc = providers.Provider() + +# Test 2: to check override() +container2 = containers.DynamicContainer() +container2.override(containers.DynamicContainer()) + +# Test 3: to check override_providers() +container3 = containers.DynamicContainer() +container3.override_providers(a=providers.Provider()) + +# Test 4: to check set_providers() +container4 = containers.DynamicContainer() +container4.set_providers(a=providers.Provider())