import logging.config import threading import warnings from anydi import Container from sqlalchemy.exc import SAWarning _container: Container | None = None _setup_lock = threading.Lock() warnings.filterwarnings("ignore", category=SAWarning) 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