From 03b4aebe11995e136c12262d4614f5c07c5c6cb1 Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Wed, 6 Oct 2021 21:11:58 -0400 Subject: [PATCH] Update documentation --- docs/containers/declarative.rst | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/docs/containers/declarative.rst b/docs/containers/declarative.rst index 5f362b31..febc0bf9 100644 --- a/docs/containers/declarative.rst +++ b/docs/containers/declarative.rst @@ -34,10 +34,39 @@ Injections in the declarative container are done the usual way: :language: python :lines: 3- -You can override the container providers when you create the container instance: +You can override container providers while creating a container instance: .. literalinclude:: ../../examples/containers/declarative_override_providers.py :language: python :lines: 3- + :emphasize-lines: 13 + +Alternatively, you can call ``container.override_providers()`` method when the container instance +already exists: + +.. code-block:: python + :emphasize-lines: 3 + + container = Container() + + container.override_providers(foo=mock.Mock(Foo), bar=mock.Mock(Bar)) + + assert isinstance(container.foo(), mock.Mock) + assert isinstance(container.bar(), mock.Mock) + +You can also use ``container.override_providers()`` with a context manager to reset +provided overriding after the context is closed: + +.. code-block:: python + :emphasize-lines: 3 + + container = Container() + + with container.override_providers(foo=mock.Mock(Foo), bar=mock.Mock(Bar)): + assert isinstance(container.foo(), mock.Mock) + assert isinstance(container.bar(), mock.Mock) + + assert isinstance(container.foo(), Foo) + assert isinstance(container.bar(), Bar) .. disqus::