Source code for autowire.resource

"""
autowire.resource
=================

Resource implementations.

"""
from autowire import impl
from autowire.base import Implementation

from .plain import Resource
from .function import FunctionResource


[docs]def create(implementation: Implementation=None, *, name=None, namespace=None): """ Create a resource with implementation. :: @resource.create @impl.implementation @contextlib.contextmanager def some_resource(resource, context: Context): with open('output.log', 'w') as output: yield output with context.resolve(some_resource) as f: f.write('...') The default name and namespace will be resolved from decorated function. """ def decorator(implementation): resource = FunctionResource( implementation, name=name, namespace=namespace ) resource.implement(implementation) return resource if impl is not None: return decorator(implementation) return decorator
__all__ = [ 'Resource', 'FunctionResource', 'create', ]