python-dependency-injector/docs/providers/index.rst
Roman Mogylatov 742e73af1a
Aggregate provider (#544)
* Add implementation and typing stubs

* Add tests

* Add typing tests

* Refactor FactoryAggregate

* Update changelog

* Add Aggregate provider docs and example

* Update cross links between Aggregate, Selector, and FactoryAggregate docs

* Add wording improvements to the docs
2022-01-09 21:45:20 -05:00

58 lines
1.4 KiB
ReStructuredText

.. _providers:
Providers
=========
Providers help to assemble the objects. They create objects and inject the dependencies.
Each provider is a callable. You call the provider like a function when you need to create an
object. Provider retrieves the underlying dependencies and inject them into the created object.
It causes the cascade effect that helps to assemble object graphs. See ``Factory``, ``Singleton``,
``Callable`` and other provider docs below.
.. code-block:: bash
provider1()
├──> provider2()
├──> provider3()
│ │
│ └──> provider4()
└──> provider5()
└──> provider6()
Another providers feature is an overriding. You can override any provider with another provider.
This helps in testing. This also helps in overriding API clients with stubs for the development
or staging environment. See the example at :ref:`provider-overriding`.
If you need to inject not the whole object but the parts see :ref:`provided-instance`.
To create a new provider see :ref:`create-provider`.
Providers module API docs - :py:mod:`dependency_injector.providers`
.. toctree::
:maxdepth: 2
factory
singleton
callable
coroutine
object
list
dict
configuration
resource
aggregate
selector
dependency
overriding
provided_instance
inject_self
custom
async
typing_mypy