1+ import dataclasses
2+
13import fastapi
24import modern_di_fastapi
35from advanced_alchemy .exceptions import DuplicateKeyError
4- from lite_bootstrap import FastAPIBootstrapper , FastAPIConfig
6+ from lite_bootstrap import FastAPIBootstrapper
7+ from opentelemetry .instrumentation .asyncpg import AsyncPGInstrumentor
8+ from opentelemetry .instrumentation .sqlalchemy import SQLAlchemyInstrumentor
59
610from app import exceptions
711from app .api .decks import ROUTER
@@ -13,22 +17,14 @@ def include_routers(app: fastapi.FastAPI) -> None:
1317
1418
1519def build_app () -> fastapi .FastAPI :
16- bootstrapper = FastAPIBootstrapper (
17- bootstrap_config = FastAPIConfig (
18- service_name = settings .service_name ,
19- service_version = settings .service_version ,
20- service_environment = settings .service_environment ,
21- service_debug = settings .service_debug ,
22- opentelemetry_endpoint = settings .opentelemetry_endpoint ,
23- sentry_dsn = settings .sentry_dsn ,
24- cors_allowed_origins = settings .cors_allowed_origins ,
25- cors_allowed_methods = settings .cors_allowed_methods ,
26- cors_allowed_headers = settings .cors_allowed_headers ,
27- cors_exposed_headers = settings .cors_exposed_headers ,
28- logging_buffer_capacity = settings .logging_buffer_capacity ,
29- swagger_offline_docs = settings .swagger_offline_docs ,
30- ),
20+ bootstrap_config = dataclasses .replace (
21+ settings .api_bootstrapper_config ,
22+ opentelemetry_instrumentors = [
23+ SQLAlchemyInstrumentor (),
24+ AsyncPGInstrumentor (capture_parameters = True ), # type: ignore[no-untyped-call]
25+ ],
3126 )
27+ bootstrapper = FastAPIBootstrapper (bootstrap_config = bootstrap_config )
3228 app : fastapi .FastAPI = bootstrapper .bootstrap ()
3329 modern_di_fastapi .setup_di (app )
3430 include_routers (app )
0 commit comments