From 00326e9a22b13ab1ce3ed60a85dc2d6c3dfeac1a Mon Sep 17 00:00:00 2001 From: Philip Bjorge Date: Wed, 8 Jan 2025 03:31:00 -0800 Subject: [PATCH] fix: type propogation through provided (#733) Co-authored-by: Gonzalo Martinez --- src/dependency_injector/providers.pyi | 2 +- tests/typing/callable.py | 2 +- tests/typing/dict.py | 2 +- tests/typing/factory.py | 2 +- tests/typing/list.py | 2 +- tests/typing/object.py | 2 +- tests/typing/provider.py | 2 +- tests/typing/singleton.py | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/dependency_injector/providers.pyi b/src/dependency_injector/providers.pyi index b7fbf211..85347084 100644 --- a/src/dependency_injector/providers.pyi +++ b/src/dependency_injector/providers.pyi @@ -69,7 +69,7 @@ class Provider(Generic[T]): @property def provider(self) -> Provider: ... @property - def provided(self) -> ProvidedInstance: ... + def provided(self) -> ProvidedInstance[T]: ... def enable_async_mode(self) -> None: ... def disable_async_mode(self) -> None: ... def reset_async_mode(self) -> None: ... diff --git a/tests/typing/callable.py b/tests/typing/callable.py index 51c8d3a7..09a5a3f8 100644 --- a/tests/typing/callable.py +++ b/tests/typing/callable.py @@ -34,7 +34,7 @@ kwargs4: Dict[str, Any] = provider4.kwargs # Test 5: to check the provided instance interface provider5 = providers.Callable(Animal) -provided5: providers.ProvidedInstance = provider5.provided +provided5: Animal = provider5.provided() attr_getter5: providers.AttributeGetter = provider5.provided.attr item_getter5: providers.ItemGetter = provider5.provided["item"] method_caller: providers.MethodCaller = provider5.provided.method.call(123, arg=324) diff --git a/tests/typing/dict.py b/tests/typing/dict.py index 31205067..f676b67d 100644 --- a/tests/typing/dict.py +++ b/tests/typing/dict.py @@ -34,7 +34,7 @@ provider5 = providers.Dict( a1=providers.Factory(object), a2=providers.Factory(object), ) -provided5: providers.ProvidedInstance = provider5.provided +provided5: dict[Any, Any] = provider5.provided() # Test 6: to check the return type with await diff --git a/tests/typing/factory.py b/tests/typing/factory.py index 132a4c29..089bef07 100644 --- a/tests/typing/factory.py +++ b/tests/typing/factory.py @@ -37,7 +37,7 @@ attributes4: Dict[str, Any] = provider4.attributes # Test 5: to check the provided instance interface provider5 = providers.Factory(Animal) -provided5: providers.ProvidedInstance = provider5.provided +provided5: Animal = provider5.provided() attr_getter5: providers.AttributeGetter = provider5.provided.attr item_getter5: providers.ItemGetter = provider5.provided["item"] method_caller5: providers.MethodCaller = provider5.provided.method.call(123, arg=324) diff --git a/tests/typing/list.py b/tests/typing/list.py index 3ceae7cc..d29baadb 100644 --- a/tests/typing/list.py +++ b/tests/typing/list.py @@ -23,7 +23,7 @@ provider3 = providers.List( providers.Factory(object), providers.Factory(object), ) -provided3: providers.ProvidedInstance = provider3.provided +provided3: List[Any] = provider3.provided() attr_getter3: providers.AttributeGetter = provider3.provided.attr item_getter3: providers.ItemGetter = provider3.provided["item"] method_caller3: providers.MethodCaller = provider3.provided.method.call(123, arg=324) diff --git a/tests/typing/object.py b/tests/typing/object.py index b099c83b..103071ae 100644 --- a/tests/typing/object.py +++ b/tests/typing/object.py @@ -9,7 +9,7 @@ var1: int = provider1() # Test 2: to check the provided instance interface provider2 = providers.Object(int) -provided2: providers.ProvidedInstance = provider2.provided +provided2: Type[int] = provider2.provided() attr_getter2: providers.AttributeGetter = provider2.provided.attr item_getter2: providers.ItemGetter = provider2.provided["item"] method_caller2: providers.MethodCaller = provider2.provided.method.call(123, arg=324) diff --git a/tests/typing/provider.py b/tests/typing/provider.py index 46dd23a0..6ceed96a 100644 --- a/tests/typing/provider.py +++ b/tests/typing/provider.py @@ -3,7 +3,7 @@ from dependency_injector import providers # Test 1: to check .provided attribute provider1: providers.Provider[int] = providers.Object(1) -provided: providers.ProvidedInstance = provider1.provided +provided: int = provider1.provided() # Test 2: to check async mode API provider2: providers.Provider = providers.Provider() diff --git a/tests/typing/singleton.py b/tests/typing/singleton.py index badfe1c6..8dc3df23 100644 --- a/tests/typing/singleton.py +++ b/tests/typing/singleton.py @@ -37,7 +37,7 @@ attributes4: Dict[str, Any] = provider4.attributes # Test 5: to check the provided instance interface provider5 = providers.Singleton(Animal) -provided5: providers.ProvidedInstance = provider5.provided +provided5: Animal = provider5.provided() attr_getter5: providers.AttributeGetter = provider5.provided.attr item_getter5: providers.ItemGetter = provider5.provided["item"] method_caller5: providers.MethodCaller = provider5.provided.method.call(123, arg=324)