44from typing import Callable
55
66from dependency_injector .wiring import (
7- inject ,
87 Provide ,
98 Provider ,
10- as_int ,
11- as_float ,
129 as_ ,
13- required ,
10+ as_float ,
11+ as_int ,
12+ inject ,
1413 invariant ,
1514 provided ,
15+ required ,
1616)
1717
1818from .container import Container
1919from .service import Service
2020
21-
2221service : Service = Provide ["service" ]
2322service_provider : Callable [..., Service ] = Provider ["service" ]
2423undefined : Callable = Provide ["undefined" ]
@@ -55,22 +54,24 @@ def test_function(service: Service = Provide["service"]):
5554
5655
5756@inject
58- def test_function_provider (service_provider : Callable [..., Service ] = Provider ["service" ]):
57+ def test_function_provider (
58+ service_provider : Callable [..., Service ] = Provider ["service" ],
59+ ):
5960 service = service_provider ()
6061 return service
6162
6263
6364@inject
6465def test_config_value (
65- value_int : int = Provide ["config.a.b.c" , as_int ()],
66- value_float : float = Provide ["config.a.b.c" , as_float ()],
67- value_str : str = Provide ["config.a.b.c" , as_ (str )],
68- value_decimal : Decimal = Provide ["config.a.b.c" , as_ (Decimal )],
69- value_required : str = Provide ["config.a.b.c" , required ()],
70- value_required_int : int = Provide ["config.a.b.c" , required ().as_int ()],
71- value_required_float : float = Provide ["config.a.b.c" , required ().as_float ()],
72- value_required_str : str = Provide ["config.a.b.c" , required ().as_ (str )],
73- value_required_decimal : str = Provide ["config.a.b.c" , required ().as_ (Decimal )],
66+ value_int : int = Provide ["config.a.b.c" , as_int ()],
67+ value_float : float = Provide ["config.a.b.c" , as_float ()],
68+ value_str : str = Provide ["config.a.b.c" , as_ (str )],
69+ value_decimal : Decimal = Provide ["config.a.b.c" , as_ (Decimal )],
70+ value_required : str = Provide ["config.a.b.c" , required ()],
71+ value_required_int : int = Provide ["config.a.b.c" , required ().as_int ()],
72+ value_required_float : float = Provide ["config.a.b.c" , required ().as_float ()],
73+ value_required_str : str = Provide ["config.a.b.c" , required ().as_ (str )],
74+ value_required_decimal : str = Provide ["config.a.b.c" , required ().as_ (Decimal )],
7475):
7576 return (
7677 value_int ,
@@ -87,25 +88,60 @@ def test_config_value(
8788
8889@inject
8990def test_config_value_required_undefined (
90- value_required : int = Provide ["config.a.b.c" , required ()],
91+ value_required : int = Provide ["config.a.b.c" , required ()],
9192):
9293 return value_required
9394
9495
9596@inject
96- def test_provide_provider (service_provider : Callable [..., Service ] = Provide ["service.provider" ]):
97+ def test_provide_provider (
98+ service_provider : Callable [..., Service ] = Provide ["service.provider" ],
99+ ):
97100 service = service_provider ()
98101 return service
99102
100103
101104@inject
102- def test_provider_provider (service_provider : Callable [..., Service ] = Provider ["service.provider" ]):
105+ def test_provider_provider (
106+ service_provider : Callable [..., Service ] = Provider ["service.provider" ],
107+ ):
103108 service = service_provider ()
104109 return service
105110
106111
107112@inject
108- def test_provided_instance (some_value : int = Provide ["service" , provided ().foo ["bar" ].call ()]):
113+ def test_provided_instance (
114+ some_value : int = Provide ["service" , provided ().foo ["bar" ].call ()]
115+ ):
116+ return some_value
117+
118+
119+ @inject
120+ def test_provided_instance_call_with_args (
121+ some_value : int = Provide [
122+ "service_with_callable" ,
123+ provided ().method_with_args .call (1 , 2 ),
124+ ],
125+ ):
126+ return some_value
127+
128+
129+ @inject
130+ def test_provided_instance_call_with_kwargs (
131+ some_value : dict = Provide [
132+ "service_with_callable" ,
133+ provided ().method_with_kwargs .call (a = 1 , b = 2 ),
134+ ],
135+ ):
136+ return some_value
137+
138+
139+ @inject
140+ def test_provided_instance_call_with_args_and_kwargs (
141+ some_value : dict = Provide [
142+ "service_with_callable" , provided ().foo .process .call (1 , 2 , key = "value" )
143+ ]
144+ ):
109145 return some_value
110146
111147
@@ -115,14 +151,16 @@ def test_subcontainer_provider(some_value: int = Provide["sub.int_object"]):
115151
116152
117153@inject
118- def test_config_invariant (some_value : int = Provide ["config.option" , invariant ("config.switch" )]):
154+ def test_config_invariant (
155+ some_value : int = Provide ["config.option" , invariant ("config.switch" )]
156+ ):
119157 return some_value
120158
121159
122160@inject
123161def test_provide_from_different_containers (
124- service : Service = Provide ["service" ],
125- some_value : int = Provide ["int_object" ],
162+ service : Service = Provide ["service" ],
163+ some_value : int = Provide ["int_object" ],
126164):
127165 return service , some_value
128166
0 commit comments