mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 01:47:36 +03:00 
			
		
		
		
	Update advanced examples
This commit is contained in:
		
							parent
							
								
									81f278d3dc
								
							
						
					
					
						commit
						ec1c488c44
					
				| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
"""Config provider examples."""
 | 
			
		||||
 | 
			
		||||
import dependency_injector as di
 | 
			
		||||
from dependency_injector import catalogs
 | 
			
		||||
from dependency_injector import providers
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ObjectA(object):
 | 
			
		||||
| 
						 | 
				
			
			@ -13,17 +14,17 @@ class ObjectA(object):
 | 
			
		|||
        self.timezone = timezone
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Catalog(di.AbstractCatalog):
 | 
			
		||||
class Catalog(catalogs.DeclarativeCatalog):
 | 
			
		||||
    """Catalog of providers."""
 | 
			
		||||
 | 
			
		||||
    config = di.Config()
 | 
			
		||||
    """:type: di.Config"""
 | 
			
		||||
    config = providers.Config()
 | 
			
		||||
    """:type: providers.Config"""
 | 
			
		||||
 | 
			
		||||
    object_a = di.Factory(ObjectA,
 | 
			
		||||
                          fee=config.FEE,
 | 
			
		||||
                          price=config.PRICE,
 | 
			
		||||
                          timezone=config.GLOBAL.TIMEZONE)
 | 
			
		||||
    """:type: di.Provider -> ObjectA"""
 | 
			
		||||
    object_a = providers.Factory(ObjectA,
 | 
			
		||||
                                 fee=config.FEE,
 | 
			
		||||
                                 price=config.PRICE,
 | 
			
		||||
                                 timezone=config.GLOBAL.TIMEZONE)
 | 
			
		||||
    """:type: providers.Provider -> ObjectA"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Setting config value and making some tests.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,22 +1,24 @@
 | 
			
		|||
"""`@di.inject()` decorator and Flask view example."""
 | 
			
		||||
"""`inject()` decorator and Flask view example."""
 | 
			
		||||
 | 
			
		||||
import sqlite3
 | 
			
		||||
import flask
 | 
			
		||||
import dependency_injector as di
 | 
			
		||||
 | 
			
		||||
from dependency_injector import providers
 | 
			
		||||
from dependency_injector import injections
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
database = di.Singleton(sqlite3.connect,
 | 
			
		||||
                        ':memory:',
 | 
			
		||||
                        timeout=30,
 | 
			
		||||
                        detect_types=True,
 | 
			
		||||
                        isolation_level='EXCLUSIVE')
 | 
			
		||||
database = providers.Singleton(sqlite3.connect,
 | 
			
		||||
                               ':memory:',
 | 
			
		||||
                               timeout=30,
 | 
			
		||||
                               detect_types=True,
 | 
			
		||||
                               isolation_level='EXCLUSIVE')
 | 
			
		||||
 | 
			
		||||
app = flask.Flask(__name__)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@app.route('/')
 | 
			
		||||
@di.inject(database)
 | 
			
		||||
@di.inject(flask.request)
 | 
			
		||||
@injections.inject(database)
 | 
			
		||||
@injections.inject(flask.request)
 | 
			
		||||
def hello(request, database):
 | 
			
		||||
    """Example Flask view."""
 | 
			
		||||
    print request
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,22 +1,24 @@
 | 
			
		|||
"""`@di.inject()` decorator with classes example."""
 | 
			
		||||
"""`inject()` decorator with classes example."""
 | 
			
		||||
 | 
			
		||||
import sqlite3
 | 
			
		||||
import flask
 | 
			
		||||
import flask.views
 | 
			
		||||
import dependency_injector as di
 | 
			
		||||
 | 
			
		||||
from dependency_injector import providers
 | 
			
		||||
from dependency_injector import injections
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
database = di.Singleton(sqlite3.Connection,
 | 
			
		||||
                        database=':memory:',
 | 
			
		||||
                        timeout=30,
 | 
			
		||||
                        detect_types=True,
 | 
			
		||||
                        isolation_level='EXCLUSIVE')
 | 
			
		||||
database = providers.Singleton(sqlite3.Connection,
 | 
			
		||||
                               database=':memory:',
 | 
			
		||||
                               timeout=30,
 | 
			
		||||
                               detect_types=True,
 | 
			
		||||
                               isolation_level='EXCLUSIVE')
 | 
			
		||||
 | 
			
		||||
app = flask.Flask(__name__)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@di.inject(database=database)
 | 
			
		||||
@di.inject(some_setting=777)
 | 
			
		||||
@injections.inject(database=database)
 | 
			
		||||
@injections.inject(some_setting=777)
 | 
			
		||||
class HelloView(flask.views.View):
 | 
			
		||||
    """Example flask class-based view."""
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,14 +1,15 @@
 | 
			
		|||
"""`@di.inject()` decorator simple example."""
 | 
			
		||||
"""`inject()` decorator simple example."""
 | 
			
		||||
 | 
			
		||||
import dependency_injector as di
 | 
			
		||||
from dependency_injector import providers
 | 
			
		||||
from dependency_injector import injections
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
dependency_injector_factory = di.Factory(object)
 | 
			
		||||
dependency_injector_factory = providers.Factory(object)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Example of using `di.inject()` decorator keyword argument injections:
 | 
			
		||||
@di.inject(new_object=dependency_injector_factory)
 | 
			
		||||
@di.inject(some_setting=1334)
 | 
			
		||||
@injections.inject(new_object=dependency_injector_factory)
 | 
			
		||||
@injections.inject(some_setting=1334)
 | 
			
		||||
def example_callback1(new_object, some_setting):
 | 
			
		||||
    """Example callback that does some asserts for input args."""
 | 
			
		||||
    assert isinstance(new_object, object)
 | 
			
		||||
| 
						 | 
				
			
			@ -16,7 +17,7 @@ def example_callback1(new_object, some_setting):
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
# Example of using `di.inject()` decorator with positional argument injections:
 | 
			
		||||
@di.inject(dependency_injector_factory, 1334)
 | 
			
		||||
@injections.inject(dependency_injector_factory, 1334)
 | 
			
		||||
def example_callback2(new_object, some_setting):
 | 
			
		||||
    """Example callback that does some asserts for input args."""
 | 
			
		||||
    assert isinstance(new_object, object)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user