mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 09:57:37 +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::
 |