File tree Expand file tree Collapse file tree 3 files changed +43
-4
lines changed Expand file tree Collapse file tree 3 files changed +43
-4
lines changed Original file line number Diff line number Diff line change @@ -54,6 +54,14 @@ provider.
54
54
Resetting of the memorized object clears the reference to it. Further object's lifecycle is
55
55
managed by the garbage collector.
56
56
57
+ Method ``.reset() `` resets only current provider. To reset all dependent singleton providers
58
+ call ``.full_reset() `` method.
59
+
60
+ .. literalinclude :: ../../examples/providers/singleton_full_resetting.py
61
+ :language: python
62
+ :lines: 3-
63
+ :emphasize-lines: 25
64
+
57
65
Using singleton with multiple threads
58
66
-------------------------------------
59
67
Original file line number Diff line number Diff line change
1
+ """`Singleton` provider full resetting example."""
2
+
3
+ from dependency_injector import containers , providers
4
+
5
+
6
+ class Database :
7
+ ...
8
+
9
+
10
+ class UserService :
11
+ def __init__ (self , db : Database ):
12
+ self .db = db
13
+
14
+
15
+ class Container (containers .DeclarativeContainer ):
16
+
17
+ database = providers .Singleton (Database )
18
+
19
+ user_service = providers .Singleton (UserService , db = database )
20
+
21
+
22
+ if __name__ == '__main__' :
23
+ container = Container ()
24
+
25
+ user_service1 = container .user_service ()
26
+
27
+ container .user_service .full_reset ()
28
+
29
+ user_service2 = container .user_service ()
30
+ assert user_service2 is not user_service1
31
+ assert user_service2 .db is not user_service1 .db
Original file line number Diff line number Diff line change @@ -9,15 +9,15 @@ class UserService:
9
9
10
10
class Container (containers .DeclarativeContainer ):
11
11
12
- user_service_provider = providers .Singleton (UserService )
12
+ user_service = providers .Singleton (UserService )
13
13
14
14
15
15
if __name__ == '__main__' :
16
16
container = Container ()
17
17
18
- user_service1 = container .user_service_provider ()
18
+ user_service1 = container .user_service ()
19
19
20
- container .user_service_provider .reset ()
20
+ container .user_service .reset ()
21
21
22
- user_service2 = container .user_service_provider ()
22
+ user_service2 = container .user_service ()
23
23
assert user_service2 is not user_service1
You can’t perform that action at this time.
0 commit comments