.. _selector-provider:

Selector providers
------------------

.. currentmodule:: dependency_injector.providers

:py:class:`Selector` provider selects provider based on the configuration value or other callable.

.. literalinclude:: ../../examples/providers/selector.py
   :language: python
   :emphasize-lines: 6-10
   :lines: 3-5,14-20

:py:class:`Selector` provider has a callable called ``selector`` and a dictionary of providers.

The ``selector`` callable is provided as a first positional argument. It can be
:py:class:`Configuration` provider or any other callable. It has to return a string value.
This value is used as a key for selecting the provider from the dictionary of providers.

The providers are provided as keyword arguments. Argument name is used as a key for
selecting the provider.

Full example:

.. literalinclude:: ../../examples/providers/selector.py
   :language: python
   :emphasize-lines: 14-18
   :lines: 3-

.. disqus::
