Adding docs on callale provider

This commit is contained in:
Roman Mogilatov 2015-04-14 23:56:46 +03:00
parent be302793e1
commit 219932d9cc
3 changed files with 61 additions and 42 deletions

View File

@ -156,6 +156,41 @@ predicted by readability and providable object's type.
Callable provider
-----------------
``Callable`` provider is a provider that decorates particular callable with
some injections. Every call of this provider returns result of call of initial
callable.
Example:
.. code-block:: python
"""`Callable` provider examples."""
from objects.providers import Callable
from objects.providers import Singleton
from objects.injections import KwArg
import sqlite3
def some_function(arg, database):
"""Example function that has input arg and dependency on database."""
return database.execute('SELECT @1', [arg]).fetchone()[0]
# Database and `ObjectA` providers.
database = Singleton(sqlite3.Connection,
KwArg('database', ':memory:'))
some_function = Callable(some_function,
KwArg('database', database))
# Some asserts.
assert some_function(1) == 1
assert some_function(2) == 2
assert some_function(2231) == 2231
External dependency provider
----------------------------

View File

@ -1,42 +0,0 @@
"""Callable provider examples."""
from objects.catalog import AbstractCatalog
from objects.providers import Singleton
from objects.providers import Callable
from objects.injections import KwArg
from objects.injections import Attribute
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,
KwArg('database', ':memory:'),
Attribute('row_factory', sqlite3.Row))
""":type: (objects.Provider) -> sqlite3.Connection"""
consuming_function = Callable(consuming_function,
KwArg('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

View File

@ -0,0 +1,26 @@
"""`Callable` provider examples."""
from objects.providers import Callable
from objects.providers import Singleton
from objects.injections import KwArg
import sqlite3
def some_function(arg, database):
"""Example function that has input arg and dependency on database."""
return database.execute('SELECT @1', [arg]).fetchone()[0]
# Database and `ObjectA` providers.
database = Singleton(sqlite3.Connection,
KwArg('database', ':memory:'))
some_function = Callable(some_function,
KwArg('database', database))
# Some asserts.
assert some_function(1) == 1
assert some_function(2) == 2
assert some_function(2231) == 2231