
    6|h>                         d Z  G d d      Zy)z:Middleware for making it easier to do distributed tracing.c                   "    e Zd ZdZd ZdefdZy)TracingMiddlewareaZ  Middleware for propagating distributed tracing context using LangSmith.

    This middleware checks for the 'langsmith-trace' header and propagates the
    tracing context if present. It does not start new traces by default.
    It is designed to work with ASGI applications.

    Attributes:
        app: The ASGI application being wrapped.
    c                 ,    ddl m} || _        || _        y)zInitialize the middleware.    )tracing_contextN)langsmith.run_helpersr   _with_headersapp)selfr	   r   s      S/var/www/html/test/engine/venv/lib/python3.12/site-packages/langsmith/middleware.py__init__zTracingMiddleware.__init__   s    9,    scopec                   K   |d   dk(  rMd|v rIt        |d         }d|v r7| j                  |      5  | j                  |||       d{    ddd       y| j                  |||       d{    y7 )# 1 sw Y   yxY w7 w)a  Handle incoming requests and propagate tracing context if applicable.

        Args:
            scope: A dict containing ASGI connection scope.
            receive: An awaitable callable for receiving ASGI events.
            send: An awaitable callable for sending ASGI events.

        If the request is HTTP and contains the 'langsmith-trace' header,
        it propagates the tracing context before calling the wrapped application.
        Otherwise, it calls the application directly without modifying the context.
        typehttpheaderss   langsmith-trace)parentN)dictr   r	   )r
   r   receivesendr   s        r   __call__zTracingMiddleware.__call__   s      =F"yE'95+,G!W,''w'7 9((5'48889hhugt,,, 99,s:   1BA6
A4A6B.B/B4A66A?;BN)__name__
__module____qualname____doc__r   r   r    r   r   r   r      s    -D -r   r   N)r   r   r   r   r   <module>r      s    @$- $-r   