mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2024-11-25 11:04:01 +03:00
109 lines
3.2 KiB
ReStructuredText
109 lines
3.2 KiB
ReStructuredText
Configuration providers
|
|
-----------------------
|
|
|
|
.. currentmodule:: dependency_injector.providers
|
|
|
|
:py:class:`Configuration` provider provides configuration options to the other providers.
|
|
|
|
.. literalinclude:: ../../examples/providers/configuration/configuration.py
|
|
:language: python
|
|
:emphasize-lines: 4,9-10
|
|
:lines: 4-14
|
|
:linenos:
|
|
|
|
It implements "use first, define later" principle.
|
|
|
|
Loading from ``ini`` file
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
:py:class:`Configuration` provider can load configuration from ``ini`` file using
|
|
:py:meth:`Configuration.from_ini`:
|
|
|
|
.. literalinclude:: ../../examples/providers/configuration/configuration_ini.py
|
|
:language: python
|
|
:lines: 3-5,6-
|
|
:emphasize-lines: 6
|
|
:linenos:
|
|
|
|
where ``examples/providers/configuration/config.ini`` is:
|
|
|
|
.. literalinclude:: ../../examples/providers/configuration/config.ini
|
|
:language: ini
|
|
:linenos:
|
|
|
|
:py:meth:`Configuration.from_ini` supports environment variables interpolation. Use
|
|
``${ENV_NAME}`` format in the configuration file to substitute value of environment
|
|
variable ``ENV_NAME``.
|
|
|
|
Loading from ``yaml`` file
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
:py:class:`Configuration` provider can load configuration from ``yaml`` file using
|
|
:py:meth:`Configuration.from_yaml`:
|
|
|
|
.. literalinclude:: ../../examples/providers/configuration/configuration_yaml.py
|
|
:language: python
|
|
:lines: 3-5,6-
|
|
:emphasize-lines: 6
|
|
:linenos:
|
|
|
|
where ``examples/providers/configuration/config.yml`` is:
|
|
|
|
.. literalinclude:: ../../examples/providers/configuration/config.yml
|
|
:language: ini
|
|
:linenos:
|
|
|
|
:py:meth:`Configuration.from_yaml` supports environment variables interpolation. Use
|
|
``${ENV_NAME}`` format in the configuration file to substitute value of environment
|
|
variable ``ENV_NAME``.
|
|
|
|
.. note::
|
|
|
|
Loading configuration from yaml requires ``PyYAML`` package. You can install
|
|
`Dependency Injector` with extras ``pip install dependency-injector[yaml]`` or install
|
|
``PyYAML`` separately ``pip install pyyaml``.
|
|
|
|
Loading from ``dict``
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
:py:class:`Configuration` provider can load configuration from Python ``dict`` using
|
|
:py:meth:`Configuration.from_dict`:
|
|
|
|
.. literalinclude:: ../../examples/providers/configuration/configuration_dict.py
|
|
:language: python
|
|
:lines: 3-5,6-
|
|
:emphasize-lines: 6-13
|
|
:linenos:
|
|
|
|
Loading from environment variable
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
:py:class:`Configuration` provider can load configuration from environment variable using
|
|
:py:meth:`Configuration.from_env`:
|
|
|
|
.. literalinclude:: ../../examples/providers/configuration/configuration_env.py
|
|
:language: python
|
|
:lines: 5-7,13-21
|
|
:emphasize-lines: 6-8
|
|
:linenos:
|
|
|
|
Loading from multiple sources
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
:py:class:`Configuration` provider can load configuration from multiple sources. Loaded
|
|
configuration is merged recursively over existing configuration.
|
|
|
|
.. literalinclude:: ../../examples/providers/configuration/configuration_multiple.py
|
|
:language: python
|
|
:lines: 3-5,6-14
|
|
:emphasize-lines: 6-7
|
|
:linenos:
|
|
|
|
where ``examples/providers/configuration/config.local.yml`` is:
|
|
|
|
.. literalinclude:: ../../examples/providers/configuration/config.local.yml
|
|
:language: ini
|
|
:linenos:
|
|
|
|
.. disqus::
|