-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmy_container.py
41 lines (30 loc) · 870 Bytes
/
my_container.py
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
import cargo
class LoggerMiddleware(cargo.types.Middleware):
def execute(
self,
dependency_type: cargo.types.DependencyType,
next_middleware: cargo.types.NextMiddleware,
):
print(f"Start resolving {dependency_type}")
dependency_value = next_middleware()
print(f"End resolving {dependency_type}")
return dependency_value
middleware_factories = [
LoggerMiddleware,
cargo.middlewares.CircularDependencyCircuitBreaker,
cargo.middlewares.Singleton,
]
container = cargo.containers.create(middleware_factories)
class A:
pass
class B:
def __init__(self, a: A):
pass
container[A] = A
container[B] = B
# Prints:
# Start resolving <class '__main__.B'>
# Start resolving <class '__main__.A'>
# End resolving <class '__main__.A'>
# End resolving <class '__main__.B'>
container[B]