mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-07-11 00:22:25 +03:00
Update bundles example
This commit is contained in:
parent
e3dbf789b2
commit
8259210f27
|
@ -1,6 +1,6 @@
|
||||||
"""Photos bundle."""
|
"""Photos bundle."""
|
||||||
|
|
||||||
from core import containers
|
from dependency_injector import containers
|
||||||
from dependency_injector import providers
|
from dependency_injector import providers
|
||||||
|
|
||||||
from . import entities
|
from . import entities
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"""Users bundle."""
|
"""Users bundle."""
|
||||||
|
|
||||||
from core import containers
|
from dependency_injector import containers
|
||||||
from dependency_injector import providers
|
from dependency_injector import providers
|
||||||
|
|
||||||
from . import entities
|
from . import entities
|
||||||
|
|
|
@ -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
|
|
|
@ -1,6 +1,6 @@
|
||||||
"""Example application - Bundles."""
|
"""Example application - Bundles."""
|
||||||
|
|
||||||
from core import containers
|
from dependency_injector import containers
|
||||||
from dependency_injector import providers
|
from dependency_injector import providers
|
||||||
|
|
||||||
from bundles.users import Users
|
from bundles.users import Users
|
||||||
|
|
Loading…
Reference in New Issue
Block a user