diff --git a/docs/advanced_usage/index.rst b/docs/advanced_usage/index.rst index eb39613a..18195577 100644 --- a/docs/advanced_usage/index.rst +++ b/docs/advanced_usage/index.rst @@ -8,22 +8,21 @@ Current section of documentation describes advanced usage of @inject decorator ----------------- -``@inject`` decorator can be used for making *inline* dependency injections. +``@di.inject`` decorator can be used for making *inline* dependency injections. It *patches* decorated callable in such way that dependency injection will be done during every call of decorated callable. -``@inject`` decorator takes only argument that is supposed to be an -``dependency_injector.injections.KwArg`` injection. - -Any Python object will be injected *as is*, except *Dependency Injector* -providers, that will be called to provide injectable value. +``@di.inject`` decorator takes keyword argument, that will be injected during +every next call of decorated callback with the same name. Any Python object +will be injected *as is*, except ``di.Provider``'s, which will be called to +provide injectable values. Example: .. literalinclude:: ../../examples/advanced_usage/inject_decorator_simple.py :language: python -Example of dependecy injection in Flask view: +Example of usage ``@di.inject`` decorator with Flask: .. literalinclude:: ../../examples/advanced_usage/inject_decorator_flask.py :language: python diff --git a/examples/advanced_usage/inject_decorator_flask.py b/examples/advanced_usage/inject_decorator_flask.py index 0122ba1e..21a1405b 100644 --- a/examples/advanced_usage/inject_decorator_flask.py +++ b/examples/advanced_usage/inject_decorator_flask.py @@ -1,30 +1,24 @@ -"""`@inject` decorator and Flask view example.""" +"""`@di.inject` decorator and Flask view example.""" import sqlite3 - -from flask import Flask - -from dependency_injector.providers import Singleton -from dependency_injector.injections import KwArg -from dependency_injector.injections import Attribute -from dependency_injector.injections import inject +import flask +import dependency_injector as di # Database and `ObjectA` providers. -database = Singleton(sqlite3.Connection, - KwArg('database', ':memory:'), - KwArg('timeout', 30), - KwArg('detect_types', True), - KwArg('isolation_level', 'EXCLUSIVE'), - Attribute('row_factory', sqlite3.Row)) +database = di.Singleton(sqlite3.Connection, + database=':memory:', + timeout=30, + detect_types=True, + isolation_level='EXCLUSIVE') # Flask application: -app = Flask(__name__) +app = flask.Flask(__name__) # Flask view with @inject decorator: @app.route('/') -@inject(KwArg('database', database)) +@di.inject(database=database) def hello(database): """Example Flask view.""" one = database.execute('SELECT 1').fetchone()[0] diff --git a/examples/advanced_usage/inject_decorator_simple.py b/examples/advanced_usage/inject_decorator_simple.py index 82218b29..92711d3f 100644 --- a/examples/advanced_usage/inject_decorator_simple.py +++ b/examples/advanced_usage/inject_decorator_simple.py @@ -1,15 +1,13 @@ -"""`@inject` decorator simple example.""" +"""`@di.inject` decorator simple example.""" -from dependency_injector.providers import Factory -from dependency_injector.injections import KwArg -from dependency_injector.injections import inject +import dependency_injector as di -dependency_injector_factory = Factory(object) +dependency_injector_factory = di.Factory(object) -@inject(KwArg('new_object', dependency_injector_factory)) -@inject(KwArg('some_setting', 1334)) +@di.inject(new_object=dependency_injector_factory) +@di.inject(some_setting=1334) def example_callback(new_object, some_setting): """Example callback that does some asserts with input args.""" assert isinstance(new_object, object)