
    \j                         d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZmZ 	 d dlmZ d dlmZmZmZ d dlmZmZmZmZmZmZ d d	lmZmZmZ d dlm Z  e rd dlm!Z!m"Z"  G d de      Z#y# e$ r	  ed
      w xY w)    )DidNotEnable)SENTRY_BAGGAGE_KEYSENTRY_TRACE_KEY)SentrySpanProcessor)BAGGAGE_HEADER_NAMESENTRY_TRACE_HEADER_NAME)Baggageextract_sentrytrace_data)trace)Contextget_current	set_value)CarrierTGetterSetterTextMapPropagatordefault_getterdefault_setter)NonRecordingSpanSpanContext
TraceFlagszopentelemetry not installed)TYPE_CHECKING)OptionalSetc                   Z    e Zd ZdZdef	 	 	 	 	 	 	 ddZdef	 	 	 	 	 	 	 ddZedd       Z	y)	SentryPropagatorz[
    Propagates tracing headers for Sentry's tracing system in a way OTel understands.
    Nc                    |
t               }|j                  |t              }|s|S t        |d         }|s|S t	        t
        ||      }|d   |d   }}t        t        |d      t        |d      t        t        j                        d      }|j                  |t              }	|	rt        j                  |	d         }
nt        i       }
|
j                          t	        t        |
|      }t        |      }t!        j"                  ||      }|S )Nr   trace_idparent_span_id   T)r   span_idtrace_flags	is_remote)sentry_items)r   getr   r
   r   r   r   intr   SAMPLEDr   r	   from_incoming_headerfreezer   r   r   set_span_in_context)selfcarriercontextgettersentry_tracesentrytracer   r!   span_contextbaggage_headerbaggagespanmodified_contexts                Z/root/env/lib/python3.12/site-packages/sentry_sdk/integrations/opentelemetry/propagator.pyextractzSentryPropagator.extract1   s    ?!mGzz'+CDN.|A?N,k7C'
3[AQ5R'"2&$":#5#56
  G-@A22>!3DEG
 2.G.A- 44T7C    c                    |
t               }t        j                  |      }|j                         }|j                  sy t        j
                  |j                        }t               j                  }|j                  |d       }|sy |j                  |t        |j                                |j                  rH|j                  j                         }	|	r+|	j                         }
|
r|j                  |t         |
       y y y y N)r   r   get_current_spanget_span_contextis_validformat_span_idr!   r   otel_span_mapr%   setr   to_traceparentcontaining_transactionget_baggage	serializer   )r+   r,   r-   settercurrent_spancurrent_span_contextr!   span_mapsentry_spanr3   baggage_datas              r6   injectzSentryPropagator.inject_   s     ?!mG--g6+<<>#,,&&';'C'CD&(66ll7D1

74k6P6P6RS--!88DDFG&002JJw(;\J    .r8   c                     t         t        hS r:   )r   r   )r+   s    r6   fieldszSentryPropagator.fields~   s    (*=>>r8   )r,   r   r-   Optional[Context]r.   zGetter[CarrierT]returnr   )r,   r   r-   rN   rE   zSetter[CarrierT]rO   N)rO   zSet[str])
__name__
__module____qualname____doc__r   r7   r   rK   propertyrM    r8   r6   r   r   ,   s     (,%3	, ,  %,  #	, 
 
, b (,%3	KK %K #	K
 
K> ? ?r8   r   N)$sentry_sdk.integrationsr   ,sentry_sdk.integrations.opentelemetry.constsr   r   4sentry_sdk.integrations.opentelemetry.span_processorr   sentry_sdk.tracingr   r   sentry_sdk.tracing_utilsr	   r
   opentelemetryr   opentelemetry.contextr   r   r   !opentelemetry.propagators.textmapr   r   r   r   r   r   opentelemetry.tracer   r   r   ImportErrortypingr   r   r   r   rU   r8   r6   <module>ra      sz    0 G6# 
   !$T?( T?  6
4
556s   *A, ,A: