Skip to content

Commit 441cc66

Browse files
committed
Improve singleton provider docs
1 parent ad260fe commit 441cc66

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

docs/providers/singleton.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ factories:
3232
- :ref:`factory-specialize-provided-type`
3333
- :ref:`abstract-factory`
3434

35+
``Singleton`` provider scope is tied to the container. Two different containers will provider
36+
two different singleton objects:
37+
38+
.. literalinclude:: ../../examples/providers/singleton_multiple_containers.py
39+
:language: python
40+
:lines: 3-
41+
3542
Resetting memorized object
3643
--------------------------
3744

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""`Singleton` provider resetting example."""
2+
3+
from dependency_injector import containers, providers
4+
5+
6+
class UserService:
7+
...
8+
9+
10+
class Container(containers.DeclarativeContainer):
11+
12+
user_service_provider = providers.Singleton(UserService)
13+
14+
15+
if __name__ == '__main__':
16+
container1 = Container()
17+
user_service1 = container1.user_service_provider()
18+
assert user_service1 is container1.user_service_provider()
19+
20+
container2 = Container()
21+
user_service2 = container2.user_service_provider()
22+
assert user_service2 is container2.user_service_provider()
23+
24+
assert user_service1 is not user_service2

examples/providers/singleton_resetting.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ class Container(containers.DeclarativeContainer):
1919

2020
container.user_service_provider.reset()
2121

22-
users_service2 = container.user_service_provider()
23-
assert users_service2 is not user_service1
22+
user_service2 = container.user_service_provider()
23+
assert user_service2 is not user_service1

0 commit comments

Comments
 (0)