mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 01:47:36 +03:00 
			
		
		
		
	* Add bootstrap and remove created at from ghnav-flask app * Update readme * Add logo to the docs * Update key features description * Update README * Change headers of API docs * Add alabaster theme config * Update docs index * Add tutorials section * Update what is DI page * Update DI in Python page * Update tutorials index page * Update provider docs * Update container docs * Update examples docs
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
Overriding of providers
 | 
						|
-----------------------
 | 
						|
 | 
						|
.. currentmodule:: dependency_injector.providers
 | 
						|
 | 
						|
Every provider could be overridden by another provider.
 | 
						|
 | 
						|
This gives opportunity to make system behaviour more flexible at some point.
 | 
						|
The main feature is that while your code is using providers, it depends on 
 | 
						|
providers, but not on the objects that providers provide. As a result of this, 
 | 
						|
you can change providing by provider object to a different one, but still
 | 
						|
compatible one, without changing your previously written code.
 | 
						|
 | 
						|
Provider overriding functionality has such interface:
 | 
						|
 | 
						|
.. image:: /images/providers/provider_override.png
 | 
						|
    :width: 55%
 | 
						|
    :align: center
 | 
						|
 | 
						|
+ :py:meth:`Provider.override()` - takes another provider that will be used 
 | 
						|
  instead of current provider. This method could be called several times. 
 | 
						|
  In such case, last passed provider would be used as overriding one.
 | 
						|
+ :py:meth:`Provider.reset_override()` - resets all overriding providers. 
 | 
						|
  Provider starts to behave itself like usual.
 | 
						|
+ :py:meth:`Provider.reset_last_overriding()` - remove last overriding 
 | 
						|
  provider from stack of overriding providers.
 | 
						|
 | 
						|
Example:
 | 
						|
 | 
						|
.. image:: /images/providers/overriding_simple.png
 | 
						|
    :width: 80%
 | 
						|
    :align: center
 | 
						|
 | 
						|
.. literalinclude:: ../../examples/providers/overriding_simple.py
 | 
						|
   :language: python
 | 
						|
 | 
						|
Example:
 | 
						|
 | 
						|
.. image:: /images/providers/overriding_users_model.png
 | 
						|
    :width: 100%
 | 
						|
    :align: center
 | 
						|
 | 
						|
.. literalinclude:: ../../examples/providers/overriding_users_model.py
 | 
						|
   :language: python
 | 
						|
 | 
						|
 | 
						|
.. disqus::
 |