@@ -185,7 +185,7 @@ def client_response_hook(span: Span, scope: dict[str, Any], message: dict[str, A
185185import functools
186186import logging
187187import types
188- from typing import Collection , Literal
188+ from typing import Any , Collection , Literal
189189from weakref import WeakSet as _WeakSet
190190
191191import fastapi
@@ -426,30 +426,9 @@ def uninstrument_app(app: fastapi.FastAPI):
426426 def instrumentation_dependencies (self ) -> Collection [str ]:
427427 return _instruments
428428
429- def _instrument (self , ** kwargs ):
429+ def _instrument (self , ** kwargs : Any ):
430430 self ._original_fastapi = fastapi .FastAPI
431- _InstrumentedFastAPI ._tracer_provider = kwargs .get ("tracer_provider" )
432- _InstrumentedFastAPI ._server_request_hook = kwargs .get (
433- "server_request_hook"
434- )
435- _InstrumentedFastAPI ._client_request_hook = kwargs .get (
436- "client_request_hook"
437- )
438- _InstrumentedFastAPI ._client_response_hook = kwargs .get (
439- "client_response_hook"
440- )
441- _InstrumentedFastAPI ._http_capture_headers_server_request = kwargs .get (
442- "http_capture_headers_server_request"
443- )
444- _InstrumentedFastAPI ._http_capture_headers_server_response = (
445- kwargs .get ("http_capture_headers_server_response" )
446- )
447- _InstrumentedFastAPI ._http_capture_headers_sanitize_fields = (
448- kwargs .get ("http_capture_headers_sanitize_fields" )
449- )
450- _InstrumentedFastAPI ._excluded_urls = kwargs .get ("excluded_urls" )
451- _InstrumentedFastAPI ._meter_provider = kwargs .get ("meter_provider" )
452- _InstrumentedFastAPI ._exclude_spans = kwargs .get ("exclude_spans" )
431+ _InstrumentedFastAPI ._instrument_kwargs = kwargs
453432 fastapi .FastAPI = _InstrumentedFastAPI
454433
455434 def _uninstrument (self , ** kwargs ):
@@ -464,35 +443,16 @@ def _uninstrument(self, **kwargs):
464443
465444
466445class _InstrumentedFastAPI (fastapi .FastAPI ):
467- _tracer_provider = None
468- _meter_provider = None
469- _excluded_urls = None
470- _server_request_hook : ServerRequestHook = None
471- _client_request_hook : ClientRequestHook = None
472- _client_response_hook : ClientResponseHook = None
473- _http_capture_headers_server_request : list [str ] | None = None
474- _http_capture_headers_server_response : list [str ] | None = None
475- _http_capture_headers_sanitize_fields : list [str ] | None = None
476- _exclude_spans : list [Literal ["receive" , "send" ]] | None = None
446+ _instrument_kwargs : dict [str , Any ] = {}
477447
478448 # Track instrumented app instances using weak references to avoid GC leaks
479- _instrumented_fastapi_apps = _WeakSet ()
449+ _instrumented_fastapi_apps : _WeakSet [ fastapi . FastAPI ] = _WeakSet ()
480450 _sem_conv_opt_in_mode = _StabilityMode .DEFAULT
481451
482- def __init__ (self , * args , ** kwargs ):
452+ def __init__ (self , * args : Any , ** kwargs : Any ):
483453 super ().__init__ (* args , ** kwargs )
484454 FastAPIInstrumentor .instrument_app (
485- self ,
486- server_request_hook = self ._server_request_hook ,
487- client_request_hook = self ._client_request_hook ,
488- client_response_hook = self ._client_response_hook ,
489- tracer_provider = self ._tracer_provider ,
490- meter_provider = self ._meter_provider ,
491- excluded_urls = self ._excluded_urls ,
492- http_capture_headers_server_request = self ._http_capture_headers_server_request ,
493- http_capture_headers_server_response = self ._http_capture_headers_server_response ,
494- http_capture_headers_sanitize_fields = self ._http_capture_headers_sanitize_fields ,
495- exclude_spans = self ._exclude_spans ,
455+ self , ** _InstrumentedFastAPI ._instrument_kwargs
496456 )
497457 _InstrumentedFastAPI ._instrumented_fastapi_apps .add (self )
498458
0 commit comments