§
    xÅj   ã                   ó    — d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ  e j        e¦  «        Z G d„ dej        ¦  «        ZdS )	é    N)Útrace)ÚContext)Útextmap)Úformat_span_idÚformat_trace_id)Ú'_TRACECONTEXT_MAXIMUM_TRACESTATE_LENGTHÚ
TraceStatec            	       ó  — e Zd ZdZdZdZdZ ej        e¦  «        Z	de
j        fde
j        dedz  de
j        e
j                 d	efd
„Zde
j        fde
j        dedz  de
j        e
j                 d	dfd„Zed	ee         fd„¦   «         ZdS )ÚTraceContextTextMapPropagatorz6Extracts and injects using w3c TraceContext's headers.ÚtraceparentÚ
tracestatezK^[ 	]*([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})(-.*)?[ 	]*$NÚcarrierÚcontextÚgetterÚreturnc                 óÆ  — |€t          ¦   «         }|                     || j        ¦  «        }|s|S t          j        | j        |d         ¦  «        }|s|S |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }	|dk    s|dk    r|S |d	k    r|                     d
¦  «        r|S |dk    r|S |                     || j        ¦  «        }
|
€d}nlt          d„ |
D ¦   «         ¦  «        t          |
¦  «        z   dz
  t          k    r#t                               dt          ¦  «         d}nt          j        |
¦  «        }t          j        t#          |d¦  «        t#          |d¦  «        dt          j        t#          |	d¦  «        ¦  «        |¬¦  «        }t          j        t          j        |¦  «        |¦  «        S )zzExtracts SpanContext from the carrier.

        See `opentelemetry.propagators.textmap.TextMapPropagator.extract`
        Nr   é   é   é   é   Ú 00000000000000000000000000000000Ú0000000000000000Ú00é   Úffc              3   ó4   K  — | ]}t          |¦  «        V — Œd S )N)Úlen)Ú.0Úheaders     ú]C:\Projects\Historical\venv\Lib\site-packages\opentelemetry/trace/propagation/tracecontext.pyú	<genexpr>z8TraceContextTextMapPropagator.extract.<locals>.<genexpr>D   s(   è è € Ð=Ð= •�F‘”Ð=Ð=Ð=Ð=Ð=Ð=ó    z>tracestate header exceeded the maximum length of %d charactersé   T)Útrace_idÚspan_idÚ	is_remoteÚtrace_flagsÚtrace_state)r   ÚgetÚ_TRACEPARENT_HEADER_NAMEÚreÚsearchÚ_TRACEPARENT_HEADER_FORMAT_REÚgroupÚ_TRACESTATE_HEADER_NAMEÚsumr   r   Ú_loggerÚwarningr	   Úfrom_headerr   ÚSpanContextÚintÚ
TraceFlagsÚset_span_in_contextÚNonRecordingSpan)Úselfr   r   r   r   ÚmatchÚversionr$   r%   r'   Útracestate_headersr   Úspan_contexts                r    Úextractz%TraceContextTextMapPropagator.extract   sç  € ð ˆ?Ý‘i”iˆGà—’˜G TÔ%BÑCÔCˆàð 	ØˆNå”	˜$Ô<¸fÀQ¼iÑHÔHˆØð 	ØˆNà—{’{ 1‘~”~ˆØŸš A™œˆØ—{’{ 1‘~”~ˆØ Ÿ;š; q™>œ>ˆà�xÒÐ 7¨hÒ#6Ð#6ØˆNà�dŠ?ˆ?Ø�{Š{˜1‰~Œ~ð Ø�Ø�dŠ?ˆ?ØˆNà#ŸZšZ¨°Ô1MÑNÔNÐØÐ%ØˆJˆJõ Ð=Ð=Ð*<Ð=Ñ=Ô=Ñ=Ô=ÅÐDVÑ@WÔ@WÑWÐZ[Ñ[Ý5ò6ð 6õ �OŠOØPÝ7ñô ð ð ˆJˆJå#Ô/Ð0BÑCÔCˆJåÔ(Ý˜ 2Ñ&Ô&Ý˜ Ñ$Ô$ØÝÔ(­¨[¸"Ñ)=Ô)=Ñ>Ô>Ø"ð
ñ 
ô 
ˆõ Ô(­Ô)?ÀÑ)MÔ)MÈwÑWÔWÐWr"   Úsetterc                 ó˜  — t          j        |¦  «        }|                     ¦   «         }|t           j        k    rdS dt	          |j        ¦  «        › dt          |j        ¦  «        › d|j        d›�}| 	                    || j
        |¦  «         |j        r7|j                             ¦   «         }| 	                    || j        |¦  «         dS dS )zxInjects SpanContext into the carrier.

        See `opentelemetry.propagators.textmap.TextMapPropagator.inject`
        Nz00-ú-Ú02x)r   Úget_current_spanÚget_span_contextÚINVALID_SPAN_CONTEXTr   r$   r   r%   r'   Úsetr*   r(   Ú	to_headerr/   )r9   r   r   r?   Úspanr=   Útraceparent_stringÚtracestate_strings           r    Úinjectz$TraceContextTextMapPropagator.injectX   s÷   € õ Ô% gÑ.Ô.ˆØ×,Ò,Ñ.Ô.ˆØ�5Ô5Ò5Ð5ØˆFð R¥?°<Ô3HÑ#IÔ#Ið  Rð  RÍNÐ[gÔ[oÑLpÔLpð  Rð  RÐsô  tLð  Rð  Rð  RÐØ�
Š
�7˜DÔ9Ð;MÑNÔNÐNØÔ#ð 	QØ ,Ô 8× BÒ BÑ DÔ DÐØ�JŠJ�w Ô <Ð>OÑPÔPÐPÐPÐPð	Qð 	Qr"   c                 ó   — | j         | j        hS )z‰Returns a set with the fields set in `inject`.

        See
        `opentelemetry.propagators.textmap.TextMapPropagator.fields`
        )r*   r/   )r9   s    r    Úfieldsz$TraceContextTextMapPropagator.fieldsl   s   € ð Ô-¨tÔ/KÐLÐLr"   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   r/   Ú_TRACEPARENT_HEADER_FORMATr+   Úcompiler-   r   Údefault_getterÚCarrierTr   ÚGetterr>   Údefault_setterÚSetterrK   ÚpropertyrF   ÚstrrM   © r"   r    r   r      s:  € € € € € Ø@Ð@à,ÐØ*ÐØ!uÐØ$. B¤JÐ/IÑ$JÔ$JÐ!ð
 #'Ø3:Ô3Ið	;Xð ;XàÔ!ð;Xð ˜4‘ð;Xð ”˜wÔ/Ô0ð	;Xð
 
ð;Xð ;Xð ;Xð ;Xð@ #'Ø3:Ô3Ið	Qð QàÔ!ðQð ˜4‘ðQð ”˜wÔ/Ô0ð	Qð
 
ðQð Qð Qð Qð( ðM˜˜Cœð Mð Mð Mñ „XðMð Mð Mr"   r   )Úloggingr+   Úopentelemetryr   Úopentelemetry.context.contextr   Úopentelemetry.propagatorsr   Úopentelemetry.tracer   r   Úopentelemetry.trace.spanr   r	   Ú	getLoggerrN   r1   ÚTextMapPropagatorr   r[   r"   r    ú<module>rd      sî   ðð €€€Ø 	€	€	€	à Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø -Ð -Ð -Ð -Ð -Ð -Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð
 ˆ'Ô
˜HÑ
%Ô
%€ð`Mð `Mð `Mð `Mð `M GÔ$=ñ `Mô `Mð `Mð `Mð `Mr"   