From fc4998b86d11982ebdfee1fef1054f4242fcb886 Mon Sep 17 00:00:00 2001 From: Philip Bjorge Date: Wed, 2 Aug 2023 17:17:15 -0700 Subject: [PATCH 1/6] fix: type propogation through provided --- src/dependency_injector/providers.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dependency_injector/providers.pyi b/src/dependency_injector/providers.pyi index 83d6ca88..e1d2c445 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) -> T: ... def enable_async_mode(self) -> None: ... def disable_async_mode(self) -> None: ... def reset_async_mode(self) -> None: ... From 68be7ec3b18a6a4c8f8a02a34c60d5f2cbaeee15 Mon Sep 17 00:00:00 2001 From: Philip Bjorge Date: Wed, 2 Aug 2023 17:31:20 -0700 Subject: [PATCH 2/6] chore: fix tests --- tests/typing/callable.py | 5 +---- tests/typing/dict.py | 2 +- tests/typing/factory.py | 5 +---- tests/typing/list.py | 5 +---- tests/typing/object.py | 5 +---- tests/typing/provider.py | 2 +- tests/typing/singleton.py | 5 +---- 7 files changed, 7 insertions(+), 22 deletions(-) diff --git a/tests/typing/callable.py b/tests/typing/callable.py index 51c8d3a7..e5bed609 100644 --- a/tests/typing/callable.py +++ b/tests/typing/callable.py @@ -34,10 +34,7 @@ def create(cls) -> Animal: # Test 5: to check the provided instance interface provider5 = providers.Callable(Animal) -provided5: providers.ProvidedInstance = 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) +provided5: Animal = provider5.provided # Test 6: to check the DelegatedCallable provider6 = providers.DelegatedCallable(Cat) diff --git a/tests/typing/dict.py b/tests/typing/dict.py index 31205067..73fb53cf 100644 --- a/tests/typing/dict.py +++ b/tests/typing/dict.py @@ -34,7 +34,7 @@ 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..831decf0 100644 --- a/tests/typing/factory.py +++ b/tests/typing/factory.py @@ -37,10 +37,7 @@ def create(cls) -> Animal: # Test 5: to check the provided instance interface provider5 = providers.Factory(Animal) -provided5: providers.ProvidedInstance = 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) +provided5: Animal = provider5.provided # Test 6: to check the DelegatedFactory provider6 = providers.DelegatedFactory(Cat) diff --git a/tests/typing/list.py b/tests/typing/list.py index 3ceae7cc..030978c5 100644 --- a/tests/typing/list.py +++ b/tests/typing/list.py @@ -23,10 +23,7 @@ providers.Factory(object), providers.Factory(object), ) -provided3: providers.ProvidedInstance = 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) +provided3: List[Any] = provider3.provided # Test 4: to check the return type with await provider4 = providers.List( diff --git a/tests/typing/object.py b/tests/typing/object.py index b099c83b..2c95d309 100644 --- a/tests/typing/object.py +++ b/tests/typing/object.py @@ -9,10 +9,7 @@ # Test 2: to check the provided instance interface provider2 = providers.Object(int) -provided2: providers.ProvidedInstance = 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) +provided2: Type[int] = provider2.provided # Test 3: to check the return type with await provider3 = providers.Object(int(3)) diff --git a/tests/typing/provider.py b/tests/typing/provider.py index 46dd23a0..f4309c8c 100644 --- a/tests/typing/provider.py +++ b/tests/typing/provider.py @@ -3,7 +3,7 @@ # 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..a1ad1bff 100644 --- a/tests/typing/singleton.py +++ b/tests/typing/singleton.py @@ -37,10 +37,7 @@ def create(cls) -> Animal: # Test 5: to check the provided instance interface provider5 = providers.Singleton(Animal) -provided5: providers.ProvidedInstance = 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) +provided5: Animal = provider5.provided # Test 6: to check the DelegatedSingleton provider6 = providers.DelegatedSingleton(Cat) From 839de5d527200c2f5c647f376e200694391e766f Mon Sep 17 00:00:00 2001 From: Gonzalo Martinez Date: Tue, 7 Jan 2025 12:26:14 -0800 Subject: [PATCH 3/6] Fix typing tests --- tests/typing/callable.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/typing/callable.py b/tests/typing/callable.py index e5bed609..1cc61778 100644 --- a/tests/typing/callable.py +++ b/tests/typing/callable.py @@ -34,7 +34,7 @@ def create(cls) -> Animal: # Test 5: to check the provided instance interface provider5 = providers.Callable(Animal) -provided5: Animal = provider5.provided +provided5: Animal = provider5.provided() # Test 6: to check the DelegatedCallable provider6 = providers.DelegatedCallable(Cat) From 185a491521af70bbac2cfeb5023d0c1328389bf3 Mon Sep 17 00:00:00 2001 From: Gonzalo Martinez Date: Tue, 7 Jan 2025 12:30:43 -0800 Subject: [PATCH 4/6] fix: typing tests --- 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 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/typing/dict.py b/tests/typing/dict.py index 73fb53cf..f676b67d 100644 --- a/tests/typing/dict.py +++ b/tests/typing/dict.py @@ -34,7 +34,7 @@ a1=providers.Factory(object), a2=providers.Factory(object), ) -provided5: dict[Any, Any] = 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 831decf0..71943b65 100644 --- a/tests/typing/factory.py +++ b/tests/typing/factory.py @@ -37,7 +37,7 @@ def create(cls) -> Animal: # Test 5: to check the provided instance interface provider5 = providers.Factory(Animal) -provided5: Animal = provider5.provided +provided5: Animal = provider5.provided() # Test 6: to check the DelegatedFactory provider6 = providers.DelegatedFactory(Cat) diff --git a/tests/typing/list.py b/tests/typing/list.py index 030978c5..0f9e46b6 100644 --- a/tests/typing/list.py +++ b/tests/typing/list.py @@ -23,7 +23,7 @@ providers.Factory(object), providers.Factory(object), ) -provided3: List[Any] = provider3.provided +provided3: List[Any] = provider3.provided() # Test 4: to check the return type with await provider4 = providers.List( diff --git a/tests/typing/object.py b/tests/typing/object.py index 2c95d309..40d6d72b 100644 --- a/tests/typing/object.py +++ b/tests/typing/object.py @@ -9,7 +9,7 @@ # Test 2: to check the provided instance interface provider2 = providers.Object(int) -provided2: Type[int] = provider2.provided +provided2: Type[int] = provider2.provided() # Test 3: to check the return type with await provider3 = providers.Object(int(3)) diff --git a/tests/typing/provider.py b/tests/typing/provider.py index f4309c8c..6ceed96a 100644 --- a/tests/typing/provider.py +++ b/tests/typing/provider.py @@ -3,7 +3,7 @@ # Test 1: to check .provided attribute provider1: providers.Provider[int] = providers.Object(1) -provided: int = 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 a1ad1bff..cbee4439 100644 --- a/tests/typing/singleton.py +++ b/tests/typing/singleton.py @@ -37,7 +37,7 @@ def create(cls) -> Animal: # Test 5: to check the provided instance interface provider5 = providers.Singleton(Animal) -provided5: Animal = provider5.provided +provided5: Animal = provider5.provided() # Test 6: to check the DelegatedSingleton provider6 = providers.DelegatedSingleton(Cat) From a3bca549c8ee34417235dffecf2ac1e1e35ffbe7 Mon Sep 17 00:00:00 2001 From: Gonzalo Martinez Date: Tue, 7 Jan 2025 14:18:53 -0800 Subject: [PATCH 5/6] Update src/dependency_injector/providers.pyi Co-authored-by: ZipFile --- src/dependency_injector/providers.pyi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dependency_injector/providers.pyi b/src/dependency_injector/providers.pyi index d6d9a22d..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) -> T: ... + def provided(self) -> ProvidedInstance[T]: ... def enable_async_mode(self) -> None: ... def disable_async_mode(self) -> None: ... def reset_async_mode(self) -> None: ... From 2d2b8f301678433099c166aecdb582b2b2ebcbc9 Mon Sep 17 00:00:00 2001 From: Gonzalo Martinez Date: Tue, 7 Jan 2025 14:54:18 -0800 Subject: [PATCH 6/6] fix: Reintroduce removed tests --- tests/typing/callable.py | 3 +++ tests/typing/factory.py | 3 +++ tests/typing/list.py | 3 +++ tests/typing/object.py | 3 +++ tests/typing/singleton.py | 3 +++ 5 files changed, 15 insertions(+) diff --git a/tests/typing/callable.py b/tests/typing/callable.py index 1cc61778..09a5a3f8 100644 --- a/tests/typing/callable.py +++ b/tests/typing/callable.py @@ -35,6 +35,9 @@ def create(cls) -> Animal: # Test 5: to check the provided instance interface provider5 = providers.Callable(Animal) 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) # Test 6: to check the DelegatedCallable provider6 = providers.DelegatedCallable(Cat) diff --git a/tests/typing/factory.py b/tests/typing/factory.py index 71943b65..089bef07 100644 --- a/tests/typing/factory.py +++ b/tests/typing/factory.py @@ -38,6 +38,9 @@ def create(cls) -> Animal: # Test 5: to check the provided instance interface provider5 = providers.Factory(Animal) 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) # Test 6: to check the DelegatedFactory provider6 = providers.DelegatedFactory(Cat) diff --git a/tests/typing/list.py b/tests/typing/list.py index 0f9e46b6..d29baadb 100644 --- a/tests/typing/list.py +++ b/tests/typing/list.py @@ -24,6 +24,9 @@ providers.Factory(object), ) 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) # Test 4: to check the return type with await provider4 = providers.List( diff --git a/tests/typing/object.py b/tests/typing/object.py index 40d6d72b..103071ae 100644 --- a/tests/typing/object.py +++ b/tests/typing/object.py @@ -10,6 +10,9 @@ # Test 2: to check the provided instance interface provider2 = providers.Object(int) 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) # Test 3: to check the return type with await provider3 = providers.Object(int(3)) diff --git a/tests/typing/singleton.py b/tests/typing/singleton.py index cbee4439..8dc3df23 100644 --- a/tests/typing/singleton.py +++ b/tests/typing/singleton.py @@ -38,6 +38,9 @@ def create(cls) -> Animal: # Test 5: to check the provided instance interface provider5 = providers.Singleton(Animal) 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) # Test 6: to check the DelegatedSingleton provider6 = providers.DelegatedSingleton(Cat)