
    lh                         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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 erd d
lmZmZ  G d de
      Z y)    )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                   8    e Zd ZdZdefdZdefdZe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                /var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/opentelemetry/propagator.pyextractzSentryPropagator.extract-   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_spanr2   baggage_datas              r5   injectz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    .r7   c                     t         t        hS r9   )r   r   )r*   s    r5   fieldszSentryPropagator.fieldsr   s     )*=>>r7   )
__name__
__module____qualname____doc__r   r6   r   rJ   propertyrL    r7   r5   r   r   (   s5     (,N ( T '+> K6 ? ?r7   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   rR   r7   r5   <module>r\      sS     
   G  $M?( M?r7   