import logging.config import threading from anydi import Container _container: Container | None = None _setup_lock = threading.Lock() def setup() -> Container: """Set up the application.""" from app.config.container import initialize_container from app.config.settings import initialize_settings global _container with _setup_lock: if _container: return _container # Initialize settings settings = initialize_settings() # Configure logging logging.config.dictConfig(settings.logging_config) # Setup Sentry if settings.sentry_dsn: import sentry_sdk from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from sentry_sdk.integrations.httpx import HttpxIntegration sentry_sdk.init( dsn=settings.sentry_dsn, environment=settings.environment, integrations=[ AwsLambdaIntegration(), HttpxIntegration(), ], ) # Initialize container _container = initialize_container(settings) return _container