Update bundles example

This commit is contained in:
Roman Mogylatov 2017-12-24 22:59:36 +02:00
parent e3dbf789b2
commit 8259210f27
5 changed files with 3 additions and 46 deletions

View File

@ -1,6 +1,6 @@
"""Photos bundle."""
from core import containers
from dependency_injector import containers
from dependency_injector import providers
from . import entities

View File

@ -1,6 +1,6 @@
"""Users bundle."""
from core import containers
from dependency_injector import containers
from dependency_injector import providers
from . import entities

View File

@ -1,43 +0,0 @@
"""Containers module."""
import six
from dependency_injector import containers, providers
class DeclarativeContainer(containers.DeclarativeContainer):
"""Declarative container."""
def __new__(cls, **dependencies):
"""Constructor.
:return: Dynamic container with copy of all providers.
:rtype: :py:class:`DynamicContainer`
"""
# Make copy of declarative container providers for container instance
container_providers = providers.deepcopy(cls.providers)
# Fetch container dependencies
container_dependencies = dict()
for name, provider in six.iteritems(container_providers):
if isinstance(provider, providers.Dependency):
container_dependencies[name] = provider
# Satisfy container dependencies
for name, dependency in six.iteritems(container_dependencies):
try:
dependency_provider = dependencies[name]
except KeyError:
raise Exception('Dependency {name} of container {container} '
'is not satisfied'.format(
name=name, container=cls))
else:
dependency.provided_by(dependency_provider)
# Create dynamic container
container = cls.instance_type()
container.provider_type = cls.provider_type
for name, provider in six.iteritems(container_providers):
setattr(container, name, provider)
return container

View File

@ -1,6 +1,6 @@
"""Example application - Bundles."""
from core import containers
from dependency_injector import containers
from dependency_injector import providers
from bundles.users import Users