"""Provides a request-context global object. Taken from: https://glenfant.github.io/flask-g-object-for-fastapi.html """ from contextvars import ContextVar from dataclasses import dataclass from ddtrace import tracer @dataclass class RequestContext: """Contains the context for the current request.""" authorization: str | None = None correlation_id: str | None = None token: dict | None = None request_global = ContextVar( 'request_global', default=RequestContext()) @tracer.wrap('g function') def g() -> RequestContext: """Get the global request context object. Returns: RequestContext: """ return request_global.get()