autowire.resource package

Submodules

autowire.resource.function module

autowire.resource.function

Resource implementation as a function

class autowire.resource.function.FunctionResource(func, *, name=None, namespace=None)[source]

Bases: autowire.base.BaseResource, autowire.impl.types.Implementable

Resource class that wraps a function.

default_implementation
implement(implementation: typing.Callable[[autowire.base.BaseContext], typing.Any])[source]

Set implementation of implementable.

autowire.resource.plain module

autowire.resource.plain

Plain resource implementation

class autowire.resource.plain.Resource(name, namespace)[source]

Bases: autowire.base.BaseResource, autowire.impl.types.Implementable

Resource class of some functionalities like default implementation.

default_implementation
implement(implementation: typing.Callable[[autowire.base.BaseContext], typing.Any])[source]

Set implementation of implementable.

autowire.resource.utils module

autowire.resource.utils

Resource utilties.

autowire.resource.utils.create_default_impl(name: str, namespace: str)[source]

Module contents

autowire.resource

Resource implementations.

class autowire.resource.Resource(name, namespace)[source]

Bases: autowire.base.BaseResource, autowire.impl.types.Implementable

Resource class of some functionalities like default implementation.

default_implementation
implement(implementation: typing.Callable[[autowire.base.BaseContext], typing.Any])[source]

Set implementation of implementable.

class autowire.resource.FunctionResource(func, *, name=None, namespace=None)[source]

Bases: autowire.base.BaseResource, autowire.impl.types.Implementable

Resource class that wraps a function.

default_implementation
implement(implementation: typing.Callable[[autowire.base.BaseContext], typing.Any])[source]

Set implementation of implementable.

autowire.resource.contextual(*dependencies: autowire.base.BaseResource, decorators=(), name=None, namespace=None)[source]

Create a resource with contextual function implementation.

@resource.contextual(dependency1, dependency2)
@contextlib.contextmanager
def contextual_resource(dependency1, dependency2):
    yield dependency1.make_resource(dependency2)

with context.resolve(contextual_resource) as value:
    print(value)
    # ...

The default name and namespace will be resolved from decorated function.

autowire.resource.plain(*dependencies: autowire.base.BaseResource, decorators=(), name=None, namespace=None)[source]

Create a resource with plain function implementation.

@resource.plain(dependency)
def resource_path(dependency):
    return os.path.join(dependency, 'resource.json')

with context.resolve(resource_path) as path:
    with open(path) as f:
        # ...

The default name and namespace will be resolved from decorated function.

autowire.resource.partial(*positionals, decorators=(), name=None, namespace=None, **keywords)[source]

Create a partial resource which is a partial function of decorated function. Arguments will be partially filled with resolved resources.

@resource.partial(user_repository=user_repository):
def find_user_by_id(user_id, user_repository):
    return user_repository.find_by_id(user_id)

with context.resolve(find_user_by_id) as func:
    user = func(100001)  # user_repository will be resolved partially.
    # ...

The default name and namespace will be resolved from decorated function.