autowire package¶
Submodules¶
autowire.base_container module¶
autowire.base¶
Base definitions of autowire.
-
class
autowire.base_container.
BaseContainer
(parent: Optional[autowire.base_container.BaseContainer] = None)[source]¶ Bases:
abc.ABC
Dependency injection container base class.
-
contextual
(resource: autowire.resource.Resource[~R][R], *arg_resources, **kwarg_resources) → Callable[[C], C][source]¶ Provide resource’s implementation with context manager
arg_resources and kwarg_resources will be used for dependency injection.
db_connection = Resource("db_connection", __name__) db_transaction = Resource("transaction", __name__) container = Container() @container.contextual(db_transaction, db_connection) @contextlib.contextmanager def begin_trasaction(db_connection: Connection): tx = db_connection.begin() try: yield tx except Exception: tx.rollback() raise finally: tx.commit()
-
find_implementation
(resource: autowire.base_resource.BaseResource[~R][R]) → autowire.implementation.Implementation[~R][R][source]¶
-
plain
(resource: autowire.resource.Resource[~R][R], *arg_resources, **kwarg_resources) → Callable[[F], F][source]¶ Provide resource’s implementation with plain function
arg_resources and kwarg_resources will be used for dependency injection.
config = Resource("config", __name__) connection_pool = Resource("connection_pool", __name__) db_connection = Resource("db_connection", __name__) container = Container() @container.plain(db_connection, connection_pool, config=config) def get_db_connection(connection_pool: Pool, *, config: dict) -> Connection: # ...
-
provide
(resource: autowire.resource.Resource[~R][R], implementation: autowire.implementation.Implementation[~R][R])[source]¶ Provide an implementation for resource.
-
provide_constant
(resource: autowire.resource.Resource[~R][R], constant: R)[source]¶ Provide resource’s implementation with constant implementation that holds given
constant
as a value.global_config = Resource("global_config", __name__) container = Container() container.provide_constant(global_config, {"DB_TIMEOUT": 30})
-
autowire.base_resource module¶
autowire.container module¶
-
class
autowire.container.
Container
(parent: Optional[autowire.base_container.BaseContainer] = None)[source]¶ Bases:
autowire.base_container.BaseContainer
Dependency injection container
autowire.context module¶
autowire.base¶
Base definitions of autowire.
-
class
autowire.context.
Context
(container: autowire.base_container.BaseContainer, parent: Optional[autowire.context.Context])[source]¶ Bases:
autowire.provider.ResourceProvider
,contextlib.AbstractContextManager
,typing.Generic
Resource management context base class
autowire.exc module¶
autowire.implementation module¶
-
class
autowire.implementation.
ConstantImplementation
(value: R)[source]¶ Bases:
autowire.implementation.ContextManagerImplementation
Use constant as an implementation
-
class
autowire.implementation.
ContextManagerImplementation
(manager_generator: Callable[[...], AbstractContextManager[R]], arg_resources: Tuple[autowire.base_resource.BaseResource[typing.Any][Any], ...], kwarg_resources: Dict[str, autowire.base_resource.BaseResource[typing.Any][Any]])[source]¶ Bases:
autowire.implementation.Implementation
Use context manager as an implementation
-
class
autowire.implementation.
Implementation
[source]¶ Bases:
typing.Generic
Declarative base type for implementation
-
class
autowire.implementation.
PlainFunctionImplementation
(fn: Callable[[...], R], arg_resources: Tuple[autowire.base_resource.BaseResource[typing.Any][Any], ...], kwarg_resources: Dict[str, autowire.base_resource.BaseResource[typing.Any][Any]])[source]¶ Bases:
autowire.implementation.ContextManagerImplementation
Use plain function as an implementation
autowire.provider module¶
autowire.resource module¶
-
class
autowire.resource.
Resource
(name: str, namespace: str)[source]¶ Bases:
autowire.base_resource.BaseResource
Decalarative resource definition.
Namespace generally be the module’s name.
name cannot include any dot(.) characters.
>>> resource = BaseResource('name', __name__)
-
contextual
(*arg_resources, **kwarg_resources) → Callable[[C], C][source]¶ Set the default implementation with context manager
arg_resources and kwarg_resources will be used for dependency injection.
db_connection = Resource("db_connection", __name__) db_transaction = Resource("transaction", __name__) @db_transaction.contextual(db_connection) @contextlib.contextmanager def begin_trasaction(db_connection: Connection): tx = db_connection.begin() try: yield tx except Exception: tx.rollback() raise finally: tx.commit()
-
plain
(*arg_resources, **kwarg_resources) → Callable[[F], F][source]¶ Set the default implementation with plain function
arg_resources and kwarg_resources will be used for dependency injection.
config = Resource("config", __name__) connection_pool = Resource("connection_pool", __name__) db_connection = Resource("db_connection", __name__) @db_connection.plain(connection_pool, config=config) def get_db_connection(connection_pool: Pool, *, config: dict) -> Connection: # ...
-
Module contents¶
-
class
autowire.
Context
(container: autowire.base_container.BaseContainer, parent: Optional[autowire.context.Context])[source]¶ Bases:
autowire.provider.ResourceProvider
,contextlib.AbstractContextManager
,typing.Generic
Resource management context base class
-
class
autowire.
Container
(parent: Optional[autowire.base_container.BaseContainer] = None)[source]¶ Bases:
autowire.base_container.BaseContainer
Dependency injection container
-
class
autowire.
Resource
(name: str, namespace: str)[source]¶ Bases:
autowire.base_resource.BaseResource
Decalarative resource definition.
Namespace generally be the module’s name.
name cannot include any dot(.) characters.
>>> resource = BaseResource('name', __name__)
-
contextual
(*arg_resources, **kwarg_resources) → Callable[[C], C][source]¶ Set the default implementation with context manager
arg_resources and kwarg_resources will be used for dependency injection.
db_connection = Resource("db_connection", __name__) db_transaction = Resource("transaction", __name__) @db_transaction.contextual(db_connection) @contextlib.contextmanager def begin_trasaction(db_connection: Connection): tx = db_connection.begin() try: yield tx except Exception: tx.rollback() raise finally: tx.commit()
-
plain
(*arg_resources, **kwarg_resources) → Callable[[F], F][source]¶ Set the default implementation with plain function
arg_resources and kwarg_resources will be used for dependency injection.
config = Resource("config", __name__) connection_pool = Resource("connection_pool", __name__) db_connection = Resource("db_connection", __name__) @db_connection.plain(connection_pool, config=config) def get_db_connection(connection_pool: Pool, *, config: dict) -> Connection: # ...
-