
    tni                     
   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 n# e$ r  ed
          w xY wd dlm Z  e rd dlm!Z!m"Z"  G d de          Z#dS )    )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                   b    e Zd ZdZdef	 	 	 	 	 	 	 ddZdef	 	 	 	 	 	 	 ddZedd            Z	dS )SentryPropagatorz[
    Propagates tracing headers for Sentry's tracing system in a way OTel understands.
    Ncarrierr   contextOptional[Context]getterGetter[CarrierT]returnr   c                    |t                      }|                    |t                    }|s|S t          |d                   }|s|S t	          t
          ||          }|d         |d         }}t          t          |d          t          |d          t          t          j	                  d          }|                    |t                    }	|	rt          j        |	d                   }
nt          i           }
|
                                 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)selfr   r   r    sentry_tracesentrytracer$   r'   span_contextbaggage_headerbaggagespanmodified_contexts                m/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/integrations/opentelemetry/propagator.pyextractzSentryPropagator.extract1   sE    ?!mmGzz'+CDD 	N.|A?? 	N,k7CC'
3[AQ5R'"2&&$$":#566
 
 
  G-@AA 	/2>!3DEEGG
 2...G.AA-- 4T7CC    setterSetter[CarrierT]c                 $   |t                      }t          j        |          }|                                }|j        sd S t          j        |j                  }t                      j        }|	                    |d           }|sd S |
                    |t          |                                           |j        rO|j                                        }	|	r6|	                                }
|
r"|
                    |t           |
           d S d S d S d S 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   )r1   r   r   r<   current_spancurrent_span_contextr'   span_mapsentry_spanr6   baggage_datas              r9   injectzSentryPropagator.inject_   s-    ?!mmG-g66+<<>>#, 	F&';'CDD&((6ll7D11 	F

74k6P6P6R6RSSS- 	K!8DDFFG K&0022 KJJw(;\JJJJJ	K 	KK KK Kr;   Set[str]c                     t           t          hS r?   )r   r   )r1   s    r9   fieldszSentryPropagator.fields~   s    (*=>>r;   )r   r   r   r   r    r!   r"   r   )r   r   r   r   r<   r=   r"   N)r"   rP   )
__name__
__module____qualname____doc__r   r:   r   rO   propertyrR    r;   r9   r   r   ,   s          (,%3	, ,  %,  #	, 
 
,  ,  ,  , b (,%3	KK %K #	K
 
K K K K> ? ? ? X? ? ?r;   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   rX   r;   r9   <module>rd      s   0 0 0 0 0 0                    G F F F F F F F6######         
                         
  6 6 6
,4
5
556 !           %$$$$$$$$T? T? T? T? T?( T? T? T? T? T?s   *A A"