
    gh                         S SK Jr  S SKJrJrJr  S SKJrJrJ	r	J
r
JrJr  S SKJrJrJr  S SKJrJr  S SKJr  S SKJrJr  S SKJrJr  S S	KJr  \(       a  S S
KJrJr   " S S\
5      r g)    )trace)Contextget_current	set_value)CarrierTGetterSetterTextMapPropagatordefault_getterdefault_setter)NonRecordingSpanSpanContext
TraceFlags)SENTRY_BAGGAGE_KEYSENTRY_TRACE_KEY)SentrySpanProcessor)BAGGAGE_HEADER_NAMESENTRY_TRACE_HEADER_NAME)Baggageextract_sentrytrace_data)TYPE_CHECKING)OptionalSetc                   D    \ rS rSrSrS\4S jrS\4S jr\	S 5       r
Srg)SentryPropagator(   zS
Propagates tracing headers for Sentry's tracing system in a way OTel understands.
Nc                 .   Uc
  [        5       nUR                  U[        5      nU(       d  U$ [        US   5      nU(       d  U$ [	        [
        XR5      nUS   US   pv[        [        US5      [        US5      [        [        R                  5      SS9nUR                  U[        5      n	U	(       a  [        R                  " U	S   5      n
O	[        0 S9n
U
R                  5         [	        [        X5      n[        U5      n[         R"                  " X5      nU$ )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                s/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/integrations/opentelemetry/propagator.pyextractSentryPropagator.extract-   s    ?!mGzz'+CDN.|A?N,kC'
3[AQ5R'"2&$":#5#56
  G-@A22>!3DEG
 2.G.A- 44TC    c                 :   Uc
  [        5       n[        R                  " U5      nUR                  5       nUR                  (       d  g [        R
                  " UR                  5      n[        5       R                  nUR                  US 5      nU(       d  g UR                  U[        UR                  5       5        UR                  (       aR  UR                  R                  5       n	U	(       a0  U	R                  5       n
U
(       a  UR                  U[         U
5        g g g g 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   injectSentryPropagator.injectW   s    ?!mG--g6+<<>#,,&&';'C'CD&(66ll7D1

74k6P6P6RS--!88DDFG&002JJw(;\J    .r9   c                     [         [        1$ r;   )r   r   )r+   s    r6   fieldsSentryPropagator.fieldsr   s     )*=>>r9    )__name__
__module____qualname____firstlineno____doc__r   r7   r   rL   propertyrO   __static_attributes__rQ   r9   r6   r   r   (   s5     (,N ( T '+> K6 ? ?r9   r   N)!opentelemetryr   opentelemetry.contextr   r   r   !opentelemetry.propagators.textmapr   r   r	   r
   r   r   opentelemetry.tracer   r   r   ,sentry_sdk.integrations.opentelemetry.constsr   r   4sentry_sdk.integrations.opentelemetry.span_processorr   sentry_sdk.tracingr   r   sentry_sdk.tracing_utilsr   r   typingr   r   r   r   rQ   r9   r6   <module>rb      sS     
   G  $M?( M?r9   