
     <iR                     |    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  G d dej                  ZdS )	    N)trace)Context)textmap)format_span_idformat_trace_id)
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j        e         de
j        e
j                 d	efd
Zde
j        fde
j        dej        e         de
j        e
j                 d	dfdZed	ej        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}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   ff   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_NAMEr   from_headerr   SpanContextint
TraceFlagsset_span_in_contextNonRecordingSpan)selfr   r   r   headermatchversionr   r   r   tracestate_headersr   span_contexts                /Users/kimhansen/Desktop/03 Workspace/ceo-agents/chl-effectiveness/mcp-servers/whoop/.venv/lib/python3.11/site-packages/opentelemetry/trace/propagation/tracecontext.pyextractz%TraceContextTextMapPropagator.extract$   s    ?iiGGT%BCC 	N	$<fQiHH 	N{{1~~A{{1~~ ;;q>>x7h#6#6Nd??{{1~~ d??N#ZZ1MNN%JJ#/0BCCJ(2&&$$([")=)=>>"
 
 
 ("<00'
 
 	
    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'   )r.   r   r   r7   spanr3   traceparent_stringtracestate_strings           r4   injectz$TraceContextTextMapPropagator.injectY   s     %g..,,..5555F R?<3H#I#I  R  RN[g[oLpLp  R  Rs  tL  R  R  R

7D9;MNNN# 	 , 8 B B D DJJ57H    	 	r6   c                     | j         | j        hS )zReturns a set with the fields set in `inject`.

        See
        `opentelemetry.propagators.textmap.TextMapPropagator.fields`
        )r"   r'   )r.   s    r4   fieldsz$TraceContextTextMapPropagator.fieldso   s     -t/KLLr6   )__name__
__module____qualname____doc__r"   r'   _TRACEPARENT_HEADER_FORMATr#   compiler%   r   default_getterCarrierTtypingOptionalr   Getterr5   default_setterSetterrC   propertySetstrrE    r6   r4   r
   r
      s6       @@,*	  %/BJ/I$J$J!
 -13:3I	3
 3
!3
 )3
 w/0	3

 
3
 3
 3
 3
p -13:3I	 ! ) w/0	
 
   , M
3 M M M XM M Mr6   r
   )r#   rN   opentelemetryr   opentelemetry.context.contextr   opentelemetry.propagatorsr   opentelemetry.tracer   r   opentelemetry.trace.spanr   TextMapPropagatorr
   rV   r6   r4   <module>r]      s    
			        1 1 1 1 1 1 - - - - - - ? ? ? ? ? ? ? ? / / / / / /]M ]M ]M ]M ]MG$= ]M ]M ]M ]M ]Mr6   