Skip to content

Commit f52ef6f

Browse files
committed
Add container docs
1 parent b3b44f6 commit f52ef6f

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

docs/containers/reset_singletons.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ Method ``.reset_singletons()`` also resets singletons in sub-containers: ``provi
1818
:lines: 3-
1919
:emphasize-lines: 21
2020

21+
You can use ``.reset_singletons()`` method with a context manager. Singletons will be reset on
22+
both entering and exiting a context.
23+
24+
.. literalinclude:: ../../examples/containers/reset_singletons_with.py
25+
:language: python
26+
:lines: 3-
27+
:emphasize-lines: 14-15
28+
2129
See also: :ref:`singleton-provider`.
2230

2331
.. disqus::
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"""Container reset singletons context manager example."""
2+
3+
from dependency_injector import containers, providers
4+
5+
6+
class Container(containers.DeclarativeContainer):
7+
8+
service = providers.Singleton(object)
9+
10+
11+
if __name__ == '__main__':
12+
container = Container()
13+
14+
service1 = container.service()
15+
16+
with container.reset_singletons():
17+
service2 = container.service()
18+
19+
service3 = container.service()
20+
21+
assert service1 is not service2
22+
assert service2 is not service3
23+
assert service3 is not service1

0 commit comments

Comments
 (0)