§
    xÅ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 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                úaC:\Projects\Historical\venv\Lib\site-packages\sentry_sdk/integrations/opentelemetry/propagator.pyÚextractzSentryPropagator.extract1   sE  € ð ˆ?Ý!‘m”mˆGà—z’z 'Õ+CÑDÔDˆØð 	ØˆNå.¨|¸A¬Ñ?Ô?ˆØð 	ØˆNåÕ,¨k¸7ÑCÔCˆà'¨
Ô3°[ÐAQÔ5R�'ˆå"Ý˜ 2Ñ&Ô&Ý˜ Ñ$Ô$å"¥:Ô#5Ñ6Ô6Øð
ñ 
ô 
ˆð  Ÿš GÕ-@ÑAÔAˆàð 	/ÝÔ2°>À!Ô3DÑEÔEˆGˆGõ
 ¨2Ð.Ñ.Ô.ˆGà�ŠÑÔÐÝÕ.°¸ÑAÔAˆå Ñ-Ô-ˆÝ Ô4°T¸7Ñ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'  € ð ˆ?Ý!‘m”mˆGåÔ-¨gÑ6Ô6ˆØ+×<Ò<Ñ>Ô>Ðà#Ô,ð 	ØˆFåÔ&Ð';Ô'CÑDÔDˆå&Ô4ˆØ—l’l 7¨DÑ1Ô1ˆØð 	ØˆFà�
Š
�7Õ4°k×6PÒ6PÑ6RÔ6RÑSÔSÐSàÔ-ð 	KØ!Ô8×DÒDÑFÔFˆGØð KØ&×0Ò0Ñ2Ô2�Øð KØ—J’J˜wÕ(;¸\Ñ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"