import logging.config import pydantic import sentry_sdk from anydi import Container, Provider from sentry_sdk.integrations.aws_lambda import AwsLambdaIntegration from app.config import Settings from app.exceptions import ImproperlyConfigured from app.modules import RootModule 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(), ], ) # Create DI container return Container( providers={ Settings: Provider(obj=lambda: settings, scope="singleton"), }, modules=[RootModule], strict=True, )