python-dependency-injector/examples/callable_provider.py
2015-03-10 00:55:38 +02:00

44 lines
1.1 KiB
Python

"""Callable provider examples."""
from objects import AbstractCatalog
from objects.providers import Singleton
from objects.providers import Callable
from objects.injections import InitArg
from objects.injections import Attribute
from objects.injections import Injection
import sqlite3
def consuming_function(arg, db):
"""Example function that has input arg and dependency on database."""
return arg, db
class Catalog(AbstractCatalog):
"""Catalog of objects providers."""
database = Singleton(sqlite3.Connection,
InitArg('database', ':memory:'),
Attribute('row_factory', sqlite3.Row))
""":type: (objects.Provider) -> sqlite3.Connection"""
consuming_function = Callable(consuming_function,
Injection('db', database))
""":type: (objects.Provider) -> consuming_function"""
# Some calls.
arg1, db1 = Catalog.consuming_function(1)
arg2, db2 = Catalog.consuming_function(2)
arg3, db3 = Catalog.consuming_function(3)
# Some asserts.
assert db1 is db2 is db3
assert arg1 == 1
assert arg2 == 2
assert arg3 == 3