python-dependency-injector/examples/miniapps/decoupled-packages/example/containers.py
Roman Mogylatov 29f209d382
Update bundles example (#292)
* Fix dependency provider stub issue with required init arg

* Refactor bundles example app

* Rename bundles package

* Rename bundles example container

* Rename bundles mini app to decoupled packages

* Move decoupled packages example to main examples

* Fix a typo

* Add meta
2020-09-06 21:51:38 -04:00

42 lines
1.0 KiB
Python

"""Containers module."""
import sqlite3
import boto3
from dependency_injector import containers, providers
from .user.containers import UserContainer
from .photo.containers import PhotoContainer
from .analytics.containers import AnalyticsContainer
class ApplicationContainer(containers.DeclarativeContainer):
config = providers.Configuration()
sqlite = providers.Singleton(sqlite3.connect, config.database.dsn)
s3 = providers.Singleton(
boto3.client,
service_name='s3',
aws_access_key_id=config.aws.access_key_id,
aws_secret_access_key=config.aws.secret_access_key,
)
user_package = providers.Container(
UserContainer,
database=sqlite,
)
photo_package = providers.Container(
PhotoContainer,
database=sqlite,
file_storage=s3,
)
analytics_package = providers.Container(
AnalyticsContainer,
user_repository=user_package.user_repository,
photo_repository=photo_package.photo_repository,
)