import logging.config import pydantic import sentry_sdk from anydi import Container, Provider from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from sentry_sdk.integrations.httpx import HttpxIntegration from app.config import Settings from app.exceptions import ImproperlyConfigured from app.modules import AppModule def configure() -> Container: # Create settings try: settings = Settings() except pydantic.ValidationError as exc: raise ImproperlyConfigured(f"Configuration error: {exc}") from exc # Configure logging logging.config.dictConfig(settings.logging_config) # Setup Sentry if settings.sentry_dsn: sentry_sdk.init( dsn=settings.sentry_dsn, environment=settings.environment, integrations=[ AwsLambdaIntegration(), HttpxIntegration(), ], ) # Create DI container return Container( providers={ Settings: Provider(obj=lambda: settings, scope="singleton"), }, modules=[AppModule], )