Source code for autowire.container
import contextlib
from typing import Iterator, Sequence
from autowire.base_container import BaseContainer
from autowire.base_resource import BaseResource
from autowire.context import Context
[docs]class Container(BaseContainer):
"""
Dependency injection container
"""
[docs] @contextlib.contextmanager
def context(
self, preload: Sequence[BaseResource] = ()
) -> Iterator[Context]:
"""
Get a DI context from this container. ::
with container.context() as context:
value = context.resolve(resource)
...
:param preload: resources to be preloaded on this context.
"""
with Context(self, None) as context:
# Preload
for resource in preload:
context.resolve(resource)
yield context