HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.60.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Nov 5 05:00:59 EST 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //var/opt/nydus/ops/mysql/opentelemetry/trace/propagation/__pycache__/tracecontext.cpython-39.pyc
a

�,�hN�@sfddlZddlZddlmZddlmZddlmZddlm	Z	m
Z
ddlmZGdd�dej
�ZdS)	�N)�trace)�Context)�textmap)�format_span_id�format_trace_id)�
TraceStatec@s�eZdZdZdZdZdZe�e�Z	de
jfe
je
jee
je
jed�dd�Zde
jfe
je
jee
je
jdd	�d
d�Zee
jed�d
d��ZdS)�TraceContextTextMapPropagatorz6Extracts and injects using w3c TraceContext's headers.Ztraceparent�
tracestatezK^[ 	]*([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})(-.*)?[ 	]*$N)�carrier�context�getter�returnc
	Cs|durt�}|�||j�}|s$|St�|j|d�}|s>|S|�d�}|�d�}|�d�}|�d�}	|dksv|dkrz|S|d	kr�|�d
�r�|S|dkr�|S|�||j�}
|
dur�d}n
t�	|
�}t
jt|d�t|d�d
t
�
t|	d��|d�}t
�t
�|�|�S)z�Extracts SpanContext from the carrier.

        See `mysql.opentelemetry.propagators.textmap.TextMapPropagator.extract`
        Nr����Z 00000000000000000000000000000000Z0000000000000000Z00��ff�T)�trace_id�span_idZ	is_remote�trace_flags�trace_state)r�get�_TRACEPARENT_HEADER_NAME�re�search�_TRACEPARENT_HEADER_FORMAT_RE�group�_TRACESTATE_HEADER_NAMErZfrom_headerrZSpanContext�intZ
TraceFlagsZset_span_in_contextZNonRecordingSpan)
�selfr
rr�header�match�versionrrrZtracestate_headersr	�span_context�r&�e/opt/nydus/tmp/pip-target-wkfpz8uv/lib64/python/mysql/opentelemetry/trace/propagation/tracecontext.py�extract$s>






�z%TraceContextTextMapPropagator.extract)r
r�setterr
cCszt�|�}|��}|tjkr dSdt|j��dt|j��d|jd��}|�	||j
|�|jrv|j��}|�	||j
|�dS)z~Injects SpanContext into the carrier.

        See `mysql.opentelemetry.propagators.textmap.TextMapPropagator.inject`
        Nz00-�-Z02x)rZget_current_spanZget_span_contextZINVALID_SPAN_CONTEXTrrrrr�setrrZ	to_headerr)r!r
rr)�spanr%Ztraceparent_stringZtracestate_stringr&r&r'�injectWs


&
z$TraceContextTextMapPropagator.inject)r
cCs|j|jhS)z�Returns a set with the fields set in `inject`.

        See
        `mysql.opentelemetry.propagators.textmap.TextMapPropagator.fields`
        )rr)r!r&r&r'�fieldsksz$TraceContextTextMapPropagator.fields)�__name__�
__module__�__qualname__�__doc__rrZ_TRACEPARENT_HEADER_FORMATr�compilerrZdefault_getterZCarrierT�typing�OptionalrZGetterr(Zdefault_setterZSetterr-�property�Set�strr.r&r&r&r'rs0�
�
�6�
�r)rr4Zmysql.opentelemetryrZ#mysql.opentelemetry.context.contextrZmysql.opentelemetry.propagatorsrZmysql.opentelemetry.tracerrZmysql.opentelemetry.trace.spanrZTextMapPropagatorrr&r&r&r'�<module>s