From 39923b36501b4b90dfc8b84f027e90b3b8ed1b7b Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Wed, 26 Aug 2020 16:52:07 -0400 Subject: [PATCH] Add stub for the FactoryAggregate provider --- src/dependency_injector/providers.pyi | 8 ++++++++ tests/typing/factory.py | 9 +++++++++ 2 files changed, 17 insertions(+) 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')