From 9111f5d4f60c7d2c1d810a5af028ccd218405149 Mon Sep 17 00:00:00 2001 From: Leonardus Chen Date: Sat, 25 Oct 2025 13:11:27 +0700 Subject: [PATCH] Fix aggregate.py --- tests/typing/aggregate.py | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/tests/typing/aggregate.py b/tests/typing/aggregate.py index 1f134cb0..3beff893 100644 --- a/tests/typing/aggregate.py +++ b/tests/typing/aggregate.py @@ -1,4 +1,5 @@ from dependency_injector import providers +from typing_extensions import assert_type, Any class Animal: ... @@ -8,29 +9,36 @@ class Cat(Animal): ... # Test 1: to check Aggregate provider -provider1: providers.Aggregate[str] = providers.Aggregate( +provider1 = providers.Aggregate( a=providers.Object("str1"), b=providers.Object("str2"), ) -provider_a_1: providers.Provider[str] = provider1.a +provider_a_1 = provider1.a provider_b_1: providers.Provider[str] = provider1.b -val1: str = provider1("a") +val1 = provider1("a") +assert_type(provider1, providers.Aggregate[str]) +assert_type(provider_a_1, providers.Provider[str]) +assert_type(provider_b_1, providers.Provider[str]) +assert_type(val1, str) -provider1_set_non_string_keys: providers.Aggregate[str] = providers.Aggregate() +provider1_set_non_string_keys = providers.Aggregate[str]() provider1_set_non_string_keys.set_providers({Cat: providers.Object("str")}) -provider_set_non_string_1: providers.Provider[str] = ( - provider1_set_non_string_keys.providers[Cat] -) +provider_set_non_string_1 = provider1_set_non_string_keys.providers[Cat] +assert_type(provider_set_non_string_1, providers.Provider[str]) -provider1_new_non_string_keys: providers.Aggregate[str] = providers.Aggregate( + +# TODO: Change providers.Aggregate to accept Mapping? Then remove explicit typing here +provider1_new_non_string_keys = providers.Aggregate[str]( {Cat: providers.Object("str")}, ) -factory_new_non_string_1: providers.Provider[str] = ( - provider1_new_non_string_keys.providers[Cat] -) +factory_new_non_string_1 = provider1_new_non_string_keys.providers[Cat] +assert_type(provider1_new_non_string_keys, providers.Aggregate[str]) +assert_type(factory_new_non_string_1, providers.Provider[str]) + provider1_no_explicit_typing = providers.Aggregate(a=providers.Object("str")) -provider1_no_explicit_typing_factory: providers.Provider[str] = ( - provider1_no_explicit_typing.providers["a"] -) -provider1_no_explicit_typing_object: str = provider1_no_explicit_typing("a") +provider1_no_explicit_typing_factory = provider1_no_explicit_typing.providers["a"] +provider1_no_explicit_typing_object = provider1_no_explicit_typing("a") + +assert_type(provider1_no_explicit_typing_factory, providers.Provider[str]) +assert_type(provider1_no_explicit_typing_object, str)