diff --git a/src/dependency_injector/providers.pyi b/src/dependency_injector/providers.pyi index 02edaaa3..de6bbf1a 100644 --- a/src/dependency_injector/providers.pyi +++ b/src/dependency_injector/providers.pyi @@ -188,6 +188,14 @@ class FactoryDelegate(Delegate): def __init__(self, factory: Factory): ... +class FactoryAggregate(Provider): + def __init__(self, **factories: Factory): ... + def __call__(self, factory_name: str, *args: Injection, **kwargs: Injection) -> Any: ... + def __getattr__(self, factory_name: str) -> Factory: ... + @property + def factories(self) -> Dict[str, Factory]: ... + + class ProvidedInstanceFluentInterface: def __getattr__(self, item: str) -> AttributeGetter: ... def __getitem__(self, item: str) -> ItemGetter: ... diff --git a/tests/typing/factory.py b/tests/typing/factory.py index 1c64861a..86876bef 100644 --- a/tests/typing/factory.py +++ b/tests/typing/factory.py @@ -53,3 +53,12 @@ animal7: Animal = provider7(1, 2, 3, b='1', c=2, e=0.0) # Test 8: to check the FactoryDelegate __init__ provider8 = providers.FactoryDelegate(providers.Factory(object)) + +# Test 9: to check FactoryAggregate provider +provider9 = providers.FactoryAggregate( + a=providers.Factory(object), + b=providers.Factory(object), +) +factory_a_9: providers.Factory = provider9.a +factory_b_9: providers.Factory = provider9.b +val9: Any = provider9('a')