@@ -185,7 +185,7 @@ def client_response_hook(span: Span, scope: dict[str, Any], message: dict[str, A
185
185
import functools
186
186
import logging
187
187
import types
188
- from typing import Collection , Literal
188
+ from typing import Any , Collection , Literal
189
189
from weakref import WeakSet as _WeakSet
190
190
191
191
import fastapi
@@ -426,30 +426,9 @@ def uninstrument_app(app: fastapi.FastAPI):
426
426
def instrumentation_dependencies (self ) -> Collection [str ]:
427
427
return _instruments
428
428
429
- def _instrument (self , ** kwargs ):
429
+ def _instrument (self , ** kwargs : Any ):
430
430
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
453
432
fastapi .FastAPI = _InstrumentedFastAPI
454
433
455
434
def _uninstrument (self , ** kwargs ):
@@ -464,35 +443,16 @@ def _uninstrument(self, **kwargs):
464
443
465
444
466
445
class _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 ] = {}
477
447
478
448
# Track instrumented app instances using weak references to avoid GC leaks
479
- _instrumented_fastapi_apps = _WeakSet ()
449
+ _instrumented_fastapi_apps : _WeakSet [ fastapi . FastAPI ] = _WeakSet ()
480
450
_sem_conv_opt_in_mode = _StabilityMode .DEFAULT
481
451
482
- def __init__ (self , * args , ** kwargs ):
452
+ def __init__ (self , * args : Any , ** kwargs : Any ):
483
453
super ().__init__ (* args , ** kwargs )
484
454
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
496
456
)
497
457
_InstrumentedFastAPI ._instrumented_fastapi_apps .add (self )
498
458
0 commit comments