Ë
    `Qê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y)	é    N)Útrace)ÚContext)Útextmap)Úformat_span_idÚformat_trace_id)Ú'_TRACECONTEXT_MAXIMUM_TRACESTATE_LENGTHÚ
TraceStatec            	       óT  — e Zd ZdZdZdZdZ ej                  e«      Z	d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y)ÚTraceContextTextMapPropagatorz6Extracts and injects using w3c TraceContext's headers.ÚtraceparentÚ
tracestatezO^[ 	]*([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})(?:(-.*)|[ 	]*)$i   NÚcarrierÚcontextÚgetterÚreturnc                 óÞ  — |€
t        «       }|j                  || j                  «      }|s|S t        |d   «      | j                  kD  r"t
        j                  d| j                  «       |S t        j                  | j                  |d   «      }|s|S |j                  d«      }|j                  d«      }|j                  d«      }|j                  d«      }	|dk(  s|d	k(  r|S |d
k(  r|j                  d«      r|S |dk(  r|S |j                  || j                  «      }
|
€d}nZt        d„ |
D «       «      t        |
«      z   dz
  t        kD  rt
        j                  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   z?traceparent header exceeded the maximum length of %d charactersé   é   é   é   Ú 00000000000000000000000000000000Ú0000000000000000Ú00é   Úffc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w)N)Úlen)Ú.0Úheaders     úq/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/opentelemetry/trace/propagation/tracecontext.pyú	<genexpr>z8TraceContextTextMapPropagator.extract.<locals>.<genexpr>O   s   è ø€ Ò= ”�F—Ñ=ùs   ‚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_NAMEr   Ú_TRACEPARENT_MAXIMUM_LENGTHÚ_loggerÚwarningÚreÚsearchÚ_TRACEPARENT_HEADER_FORMAT_REÚgroupÚ_TRACESTATE_HEADER_NAMEÚsumr   r	   Ú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ˆGà—‘˜G T×%BÑ%BÓCˆáØˆNäˆv�a‰y‹>˜D×<Ñ<Ò<Ü�O‰OØQØ×0Ñ0ôð ˆNä—	‘	˜$×<Ñ<¸fÀQ¹iÓHˆÙØˆNà—{‘{ 1“~ˆØŸ™ A›ˆØ—{‘{ 1“~ˆØ Ÿ;™; q›>ˆà�xÒ 7¨hÒ#6ØˆNà�dŠ?Ø�{‰{˜1Œ~Ø�Ø�dŠ?ØˆNà#ŸZ™Z¨°×1MÑ1MÓNÐØÐ%Ø‰Jô Ñ=Ð*<Ô=Ó=ÄÐDVÓ@WÑWÐZ[Ñ[Ü5ò6ô �O‰OØPÜ7ôð ‰Jä#×/Ñ/Ð0BÓCˆJä×(Ñ(Ü˜ 2Ó&Ü˜ Ó$ØÜ×(Ñ(¬¨[¸"Ó)=Ó>Ø"ô
ˆô ×(Ñ(¬×)?Ñ)?ÀÓ)MÈwÓWÐWó    Úsetterc                 ó°  — t        j                  |«      }|j                  «       }|t         j                  k(  rydt	        |j
                  «      › dt        |j                  «      › d|j                  d›�}|j                  || j                  |«       |j                  r8|j                  j                  «       }|j                  || j                  |«       yy)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_headerr1   )r9   r   r   r@   Úspanr=   Útraceparent_stringÚtracestate_strings           r    Úinjectz$TraceContextTextMapPropagator.injectc   sÕ   € ô ×%Ñ% gÓ.ˆØ×,Ñ,Ó.ˆØœ5×5Ñ5Ò5ØØ"¤?°<×3HÑ3HÓ#IÐ"JÈ!ÌNÐ[g×[oÑ[oÓLpÐKqÐqrÐs÷  tLñ  tLð  MPð  sQð  RÐØ�
‰
�7˜D×9Ñ9Ð;MÔNØ×#Ò#Ø ,× 8Ñ 8× BÑ BÓ DÐØ�J‰J�w × <Ñ <Ð>OÕPð $r?   c                 ó2   — | j                   | j                  hS )z‰Returns a set with the fields set in `inject`.

        See
        `opentelemetry.propagators.textmap.TextMapPropagator.fields`
        )r)   r1   )r9   s    r    Úfieldsz$TraceContextTextMapPropagator.fieldsw   s   € ð ×-Ñ-¨t×/KÑ/KÐLÐLr?   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r)   r1   Ú_TRACEPARENT_HEADER_FORMATr-   Úcompiler/   r*   r   Údefault_getterÚCarrierTr   ÚGetterr>   Údefault_setterÚSetterrL   ÚpropertyrG   ÚstrrN   © r?   r    r   r      s	  „ Ù@à,ÐØ*Ðà`ð ð %/ B§J¡JÐ/IÓ$JÐ!Ø"%Ðð #'Ø3:×3IÑ3Iñ	BXà×!Ñ!ðBXð ˜4‘ðBXð —‘˜w×/Ñ/Ñ0ð	BXð
 
óBXðN #'Ø3:×3IÑ3Iñ	Qà×!Ñ!ðQð ˜4‘ðQð —‘˜w×/Ñ/Ñ0ð	Qð
 
óQð( ðM˜˜C™ò Mó ñMr?   r   )Úloggingr-   Úopentelemetryr   Úopentelemetry.context.contextr   Úopentelemetry.propagatorsr   Úopentelemetry.tracer   r   Úopentelemetry.trace.spanr   r	   Ú	getLoggerrO   r+   ÚTextMapPropagatorr   r\   r?   r    ú<module>re      sH   ðó Û 	å Ý 1Ý -ß ?÷ð
 ˆ'×
Ñ
˜HÓ
%€ôkM G×$=Ñ$=õ kMr?   