forked from ets-labs/python-dependency-injector
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeclarative_container.py
More file actions
72 lines (43 loc) · 1.78 KB
/
declarative_container.py
File metadata and controls
72 lines (43 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from typing import Any, Dict
from typing_extensions import assert_type
from dependency_injector import containers, providers
# Test 1: to check declarative container subclass
class Container1(containers.DeclarativeContainer):
provider = providers.Factory(int)
# NOTE: Using assignment to check base class instead of exact type
container1 = Container1()
container1_type: containers.Container = Container1()
provider1: providers.Provider[int] = container1.provider
val1 = container1.provider(3)
assert_type(val1, int)
# Test 2: to check @override decorator
class Container21(containers.DeclarativeContainer):
provider = providers.Factory(int)
@containers.override(Container21)
class Container22(containers.DeclarativeContainer): ...
# Test 3: to check @copy decorator
class Container31(containers.DeclarativeContainer):
provider = providers.Factory(int)
@containers.copy(Container31)
class Container32(containers.DeclarativeContainer): ...
# Test 4: to override()
class Container4(containers.DeclarativeContainer):
provider = providers.Factory(int)
container4 = Container4()
container4.override(Container4())
# Test 5: to check .dependencies attribute
class Container5(containers.DeclarativeContainer):
provider = providers.Factory(int)
dependencies = Container5.dependencies
assert_type(dependencies, Dict[str, providers.Provider[Any]])
# Test 6: to check base class
class Container6(containers.DeclarativeContainer):
provider = providers.Factory(int)
container6: containers.Container = Container6()
# Test 7: to override_providers()
class Container7(containers.DeclarativeContainer):
provider = providers.Factory(str)
container7 = Container7()
container7.override_providers(provider="new_value")
with container7.override_providers(a=providers.Provider()):
...