ó
    Ð]jöI  ã                  ó  • % S SK Jr  S SKrS SKJs  Jr  S SK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  S SKJrJrJrJr  S SKJrJr  S SKJr  S S	KJr   S S
K!J"r"  S SK#J$r$  S SK%J&r&J'r(J)r)J*r+J,r-  S SK.J/r/  S SKJ0r0J1r1J'r'J2r2J3r3J*r*J,r,  S SK4J5r5  S SK6J7r7J8r8  S SK9J:r;  SSK<J=r=J>r>J?r?J@r@JArAJBrBJCrC  SSKDJErEJFrF  \(       a  SSK:JGrG  SSKHJIrI   S SKJJKrK  \" 5       rMS\NS'   \ " S S\,5      5       rO\ " S S5      5       rP\" SS 9 " S! S"\RN                  \&5      5       rQS0S# jrRS1S$ jrS\ " S% S&\*5      5       rT " S' S(\*5      rU\ " S) S*\)5      5       rVS2S+ jrWS3S, jrX\ESSSSS-.             S4S. jj5       rYS5S/ jrZg! \L a    SrK N·f = f)6é    )ÚannotationsN)Údefaultdict)ÚMappingÚSequence)Ú	dataclassÚfield)ÚLock)ÚTYPE_CHECKINGÚAnyÚCallableÚcast)ÚWeakKeyDictionaryÚWeakValueDictionary)Úcontext)ÚContext)ÚResource)ÚReadableSpanÚSpanÚSpanProcessorÚTracerÚTracerProvider)ÚIdGenerator)ÚLinkÚNonRecordingSpanr   ÚSpanContextÚSpanKindr   r   )Úget_current_span)ÚStatusÚ
StatusCode)Útypesé   )Ú$ATTRIBUTES_EXCEPTION_FINGERPRINT_KEYÚATTRIBUTES_MESSAGE_KEYÚ'ATTRIBUTES_PENDING_SPAN_REAL_PARENT_KEYÚATTRIBUTES_SAMPLE_RATE_KEYÚATTRIBUTES_SPAN_TYPE_KEYÚATTRIBUTES_VALIDATION_ERROR_KEYÚlog_level_attributes)Úhandle_internal_errorsÚsha256_stringé   )ÚExceptionCallback)ÚLogfireConfig)ÚValidationErrorz9WeakValueDictionary[tuple[int, int], _LogfireWrappedSpan]Ú
OPEN_SPANSc                  óÞ   • \ rS rSr% SrS\S'   S\S'   \" \S9rS\S	'   \" \	S9r
S
\S'   \" \S9rS\S'   SS jrSS jrSS.         SS jjrSS jrSS jr\SS j5       rSS S jjrSrg)!ÚProxyTracerProvideré4   z\A tracer provider that wraps another internal tracer provider allowing it to be re-assigned.r   Úproviderr-   Úconfig©Údefault_factoryz5WeakKeyDictionary[_ProxyTracer, Callable[[], Tracer]]Útracersr	   Úlockzset[str]Úsuppressed_scopesc                óÎ   • U R                      Xl        U R                  R                  5        H  u  p#UR	                  U" 5       5        M     S S S 5        g ! , (       d  f       g = f©N)r8   r3   r7   ÚitemsÚ
set_tracer)Úselfr3   ÚtracerÚfactorys       ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/logfire/_internal/tracer.pyÚset_providerÚ ProxyTracerProvider.set_provider>   sA   € Ø�Y‹YØ$ŒMØ#'§<¡<×#5Ñ#5Ö#7‘�Ø×!Ñ!¡'£)Ö,ñ $8÷ �YŽYús   �A AÁ
A$c                ó  • U R                      U R                  R                  U5        U R                  R	                  5        H-  u  p#UR
                  U;   d  M  UR                  U" 5       5        M/     S S S 5        g ! , (       d  f       g = fr;   )r8   r9   Úupdater7   r<   Úinstrumenting_module_namer=   )r>   Úscopesr?   r@   s       rA   Úsuppress_scopesÚ#ProxyTracerProvider.suppress_scopesD   s^   € Ø�Y‹YØ×"Ñ"×)Ñ)¨&Ô1Ø#'§<¡<×#5Ñ#5Ö#7‘�Ø×3Ñ3°vÕ=Ø×%Ñ%¡g£iÖ0ñ $8÷ �YŽYús   �A	A=ÁA=Á=
BT)Úis_span_tracerc               ó¶   ^ ^^^• T R                      SUUUU 4S jjn[        TU" 5       T U5      nUT R                  U'   UsS S S 5        $ ! , (       d  f       g = f)Nc                 óx   >• TTR                   ;   a
  [        5       $ TR                  R                  " T/T Q70 TD6$ r;   )r9   ÚSuppressedTracerr3   Ú
get_tracer)ÚargsrF   Úkwargsr>   s   €€€€rA   ÚmakeÚ,ProxyTracerProvider.get_tracer.<locals>.makeT   s<   ø€ Ø,°×0FÑ0FÓFÜ+Ó-Ð-àŸ=™=×3Ò3Ð4MÐ_ÐPTÒ_ÐX^Ñ_Ð_ó    )Úreturnr   )r8   Ú_ProxyTracerr7   )r>   rF   rJ   rO   rP   rQ   r?   s   `` ``  rA   rN   ÚProxyTracerProvider.get_tracerK   sH   û€ ð �Y‹Y÷`ò `ô "Ð";¹T»VÀTÈ>ÓZˆFØ#'ˆD�L‰L˜Ñ Ø÷ �Y�Yús   ‘/A
Á

Ac                óÄ   • U R                      [        U R                  [        5      (       a  U R                  R	                  U5        S S S 5        g ! , (       d  f       g = fr;   )r8   Ú
isinstancer3   ÚSDKTracerProviderÚadd_span_processor)r>   Úspan_processors     rA   rZ   Ú&ProxyTracerProvider.add_span_processor^   s7   € Ø�Y‹YÜ˜$Ÿ-™-Ô):×;Ñ;Ø—‘×0Ñ0°Ô@÷ �YŽYús   �;AÁ
Ac                óÂ   • U R                      [        U R                  [        5      (       a  U R                  R	                  5         S S S 5        g ! , (       d  f       g = fr;   )r8   rX   r3   rY   Úshutdown©r>   s    rA   r^   ÚProxyTracerProvider.shutdownc   s5   € Ø�Y‹YÜ˜$Ÿ-™-Ô):×;Ñ;Ø—‘×&Ñ&Ô(÷ �YŽYús   �:AÁ
Ac                ó$  • U R                      [        U R                  [        5      (       a  U R                  R                  sS S S 5        $ [
        R                  " SU R                  R                  05      sS S S 5        $ ! , (       d  f       g = f)Nzservice.name)	r8   rX   r3   rY   Úresourcer   Úcreater4   Úservice_namer_   s    rA   rb   ÚProxyTracerProvider.resourceh   sV   € à�Y‹YÜ˜$Ÿ-™-Ô):×;Ñ;Ø—}‘}×-Ñ-÷ ‰Yô —?’? N°D·K±K×4LÑ4LÐ#MÓN÷ �Y�Yús   �5BÁ+BÂ
Bc                óØ   • U R                      [        U R                  [        5      (       a$  U R                  R	                  U5      sS S S 5        $  S S S 5        g! , (       d  f       g = f)NT)r8   rX   r3   rY   Úforce_flush)r>   Útimeout_milliss     rA   rg   ÚProxyTracerProvider.force_flusho   sC   € Ø�Y‹YÜ˜$Ÿ-™-Ô):×;Ñ;Ø—}‘}×0Ñ0°Ó@÷ ‰Yð ÷ �YŽYús   �:AÁAÁ
A))r3   N)r3   rY   rT   ÚNone)rG   ÚstrrT   rj   )
rF   rk   rO   r   rJ   ÚboolrP   r   rT   rU   )r[   r   rT   rj   )rT   rj   )rT   r   )i0u  )rh   ÚintrT   rl   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r   r   r7   r	   r8   Úsetr9   rB   rH   rN   rZ   r^   Úpropertyrb   rg   Ú__static_attributes__© rS   rA   r1   r1   4   s°   ‡ áfàÓØÓÙEJÐ[lÑEm€GÐBÓmÙ tÑ,€Dˆ$Ó,Ù"'¸Ñ"<Ð�xÓ<ô-ô1ð  $ñ	à#&ðð ðð ð	ð
 ðð 
õô&Aô
)ð
 óOó ðO÷ñ rS   r1   c                  ó>   • \ rS rSr% \" S S9rS\S'   S rS
S jrSr	g	)Ú
SpanMetricév   c                 ó    • [        [        5      $ r;   )r   rm   rw   rS   rA   Ú<lambda>ÚSpanMetric.<lambda>y   s	   € ¤¬CÔ 0rS   r5   z>dict[tuple[tuple[str, otel_types.AttributeValue], ...], float]Údetailsc                óÚ   • U R                   R                  5        VVs/ s H  u  p[        U5      US.PM     snn[        S U R                   R	                  5        5       5      S.$ s  snnf )N)Ú
attributesÚtotalc              3  ó$   #   • U  H  ov •  M     g 7fr;   rw   )Ú.0r�   s     rA   Ú	<genexpr>Ú"SpanMetric.dump.<locals>.<genexpr>   s   é € ÐBÒ,A 5œÒ,Aùs   ‚)r~   r�   )r~   r<   ÚdictÚsumÚvalues)r>   r€   r�   s      rA   ÚdumpÚSpanMetric.dump|   sZ   € àbf×bnÑbn×btÑbtÔbvÔwÒbvÑM^ÈZ¤t¨JÓ'7À%ÔHÑbvÒwÜÑB¨D¯L©L×,?Ñ,?Ô,AÓBÓBñ
ð 	
ùÛws   žA'c                óv   • [        [        UR                  5       5      5      nU R                  U==   U-  ss'   g r;   )ÚtupleÚsortedr<   r~   )r>   r€   ÚvalueÚkeys       rA   Ú	incrementÚSpanMetric.increment‚   s.   € Ü”F˜:×+Ñ+Ó-Ó.Ó/ˆØ�‰�SÓ˜UÑ"ÔrS   rw   N)r€   ú'Mapping[str, otel_types.AttributeValue]rŽ   Úfloat)
rn   ro   rp   rq   r   r~   rs   r‰   r�   rv   rw   rS   rA   ry   ry   v   s"   ‡ áNSÙ0ñO€GÐKó ò
÷#rS   ry   F)Úeqc                  óJ  • \ rS rSr% SrS\S'   S\S'   S\S'   \" S	 S
9rS\S'   SrS\S'   S r	S S!S jjr
S rS"S jrS#S jrS$S jrS S%S jjr  S&       S'S jjrS(S jrS)S jr S      S*S jjr   S+         S,S jjrS-S jrS.S jr\(       d  S/S jrSrgSrg)0Ú_LogfireWrappedSpané‡   aR  A span that wraps another span and overrides some behaviors in a logfire-specific way.

In particular:
* Stores a reference to itself in `OPEN_SPANS`, used to close open spans when the program exits
* Adds some logfire-specific tweaks to the exception recording behavior
* Overrides end() to use a timestamp generator if one was provided
r   ÚspanzCallable[[], int]Úns_timestamp_generatorrl   Úrecord_metricsc                 ó    • [        [        5      $ r;   )r   ry   rw   rS   rA   r|   Ú_LogfireWrappedSpan.<lambda>”   s	   € Ä;ÌzÔCZrS   r5   zdict[str, SpanMetric]ÚmetricsNúExceptionCallback | NoneÚexception_callbackc                ó2   • U [         U R                  5       '   g r;   )r/   Ú_open_spans_keyr_   s    rA   Ú__post_init__Ú!_LogfireWrappedSpan.__post_init__—   s   € Ø-1Œ
�4×'Ñ'Ó)Ò*rS   c                óô  • [            [        R                  U R                  5       S 5        U R                  (       ak  U R
                  R                  S[        R                  " U R                  R                  5        VVs0 s H  u  p#X#R                  5       _M     snn5      5        S S S 5        U R
                  R                  U=(       d    U R                  5       5        g s  snnf ! , (       d  f       NG= f)Nzlogfire.metrics)r)   r/   Úpopr¡   r�   r˜   Úset_attributeÚjsonÚdumpsr<   r‰   Úendr™   )r>   Úend_timeÚnameÚmetrics       rA   r©   Ú_LogfireWrappedSpan.endš   s£   € Þ#Ü�N‰N˜4×/Ñ/Ó1°4Ô8Ø�|�|Ø—	‘	×'Ñ'Ø%¤t§z¢zÐ[_×[gÑ[g×[mÑ[mÔ[oÔ2pÒ[oÉ<È4°4¿¹»Ò3FÑ[oÒ2pÓ'qô÷ $ð 	�	‰	�‰�h×? $×"=Ñ"=Ó"?Õ@ùó 3q÷	 $Õ#ús   ‡A9C)Â C#ÂC)Ã#C)Ã)
C7c                óH   • [        U R                  R                  5       5      $ r;   )r¡   r˜   Úget_span_contextr_   s    rA   r¡   Ú#_LogfireWrappedSpan._open_spans_key£   s   € Ü˜tŸy™y×9Ñ9Ó;Ó<Ð<rS   c                ó6   • U R                   R                  5       $ r;   )r˜   r¯   r_   s    rA   r¯   Ú$_LogfireWrappedSpan.get_span_context¦   s   € Ø�y‰y×)Ñ)Ó+Ð+rS   c                ó:   • U R                   R                  U5        g r;   )r˜   Úset_attributes)r>   r€   s     rA   r´   Ú"_LogfireWrappedSpan.set_attributes©   s   € Ø�	‰	× Ñ  Õ,rS   c                ó:   • U R                   R                  X5        g r;   )r˜   r¦   )r>   r�   rŽ   s      rA   r¦   Ú!_LogfireWrappedSpan.set_attribute¬   s   € Ø�	‰	×Ñ Õ+rS   c                ó8   • U R                   R                  X5      $ r;   )r˜   Úadd_link)r>   r   r€   s      rA   r¹   Ú_LogfireWrappedSpan.add_link¯   s   € Ø�y‰y×!Ñ! 'Ó6Ð6rS   c                ój   • U R                   R                  XU=(       d    U R                  5       5        g r;   )r˜   Ú	add_eventr™   )r>   r«   r€   Ú	timestamps       rA   r¼   Ú_LogfireWrappedSpan.add_event²   s&   € ð 	�	‰	×Ñ˜D¨i×.X¸4×;VÑ;VÓ;XÕYrS   c                ó:   • U R                   R                  U5        g r;   )r˜   Úupdate_name©r>   r«   s     rA   rÀ   Ú_LogfireWrappedSpan.update_nameº   s   € Ø�	‰	×Ñ˜dÕ#rS   c                ó6   • U R                   R                  5       $ r;   )r˜   Úis_recordingr_   s    rA   rÄ   Ú _LogfireWrappedSpan.is_recording½   s   € Ø�y‰y×%Ñ%Ó'Ð'rS   c                ó:   • U R                   R                  X5        g r;   )r˜   Ú
set_status)r>   ÚstatusÚdescriptions      rA   rÇ   Ú_LogfireWrappedSpan.set_statusÀ   s   € ð
 	�	‰	×Ñ˜VÕ1rS   c           	     óz   • U=(       d    U R                  5       n[        U R                  UUUUU R                  S9  g )N©r€   r½   ÚescapedÚcallback)r™   Úrecord_exceptionr˜   rŸ   )r>   Ú	exceptionr€   r½   rÍ   s        rA   rÏ   Ú$_LogfireWrappedSpan.record_exceptionÇ   s;   € ð ×> ×!<Ñ!<Ó!>ˆ	ÜØ�I‰IØØ!ØØØ×,Ñ,ó	
rS   c                ó  • U R                  5       (       a-  U R                  (       a  UR                  S5      (       a  US;   d  g U R                  U   R	                  X#5        [        U 5      =n(       a  UR                  XU5        g g )Nz	otel.sdk.)zoperation.costzgen_ai.client.token.usage)rÄ   rš   Ú
startswithr�   r�   Úget_parent_spanÚincrement_metric)r>   r«   r€   rŽ   Úparents        rA   rÕ   Ú$_LogfireWrappedSpan.increment_metricØ   su   € à×Ñ×Ñð ×'×'à ŸO™O¨K×8Ñ8àÐJÓJð à�‰�TÑ×$Ñ$ ZÔ7Ü$ TÓ*Ð*ˆ6Õ*Ø×#Ñ# D°eÕ<ð +rS   c                óš   • U R                  5       (       a6  [        U[        5      (       a  U R                  USS9  U R	                  5         g g )NT)rÍ   )rÄ   rX   ÚBaseExceptionrÏ   r©   )r>   Úexc_typeÚ	exc_valueÚ	tracebacks       rA   Ú__exit__Ú_LogfireWrappedSpan.__exit__ê   s?   € Ø×Ñ×ÑÜ˜)¤]×3Ñ3Ø×%Ñ% i¸Ð%Ñ>Ø�H‰H�Jð rS   c                ó.   • [        U R                  U5      $ r;   )Úgetattrr˜   rÁ   s     rA   Ú__getattr__Ú_LogfireWrappedSpan.__getattr__ò   s   € Ü˜4Ÿ9™9 dÓ+Ð+rS   rw   r;   )rª   ú
int | NonerT   rj   )rT   r   )r€   r’   rT   rj   )r�   rk   rŽ   zotel_types.AttributeValuerT   rj   )r   r   r€   úotel_types.AttributesrT   rj   )NN)r«   rk   r€   rä   r½   rã   rT   rj   )r«   rk   rT   rj   )rT   rl   )rÈ   zStatus | StatusCoderÉ   z
str | NonerT   rj   )NNF)
rÐ   rÙ   r€   rä   r½   rã   rÍ   rl   rT   rj   )r«   rk   r€   r’   rŽ   r“   rT   rj   )rÚ   ztype[BaseException] | NonerÛ   zBaseException | NonerÜ   r   rT   rj   )r«   rk   rT   r   )rn   ro   rp   rq   rr   rs   r   r�   rŸ   r¢   r©   r¡   r¯   r´   r¦   r¹   r¼   rÀ   rÄ   rÇ   rÏ   rÕ   rÝ   r
   rá   rv   rw   rS   rA   r–   r–   ‡   s  ‡ ñð ƒJØ-Ó-ØÓÙ%*Ñ;ZÑ%[€GÐ"Ó[Ø37ÐÐ0Ó7ò2öAò=ô,ô-ô,ö7ð -1Ø $ð	ZàðZð *ðZð ð	Zð
 
õZô$ô(ð #'ð2à#ð2ð  ð2ð 
õ	2ð -1Ø $Øð
à ð
ð *ð
ð ð	
ð
 ð
ð 
õ
ô"=ô$ö ÷	,ò rS   r–   c                óx   • U R                   =(       a(    [        R                  [        U R                   5      5      $ r;   )rÖ   r/   Úgetr¡   )r˜   s    rA   rÔ   rÔ   ö   s#   € Ø�;‰;×Gœ:Ÿ>™>¬/¸$¿+¹+Ó*FÓGÐGrS   c                ó2   • U R                   U R                  4$ r;   )Útrace_idÚspan_id)Úctxs    rA   r¡   r¡   ú   s   € Ø�<‰<˜Ÿ™Ð$Ð$rS   c                  óÊ   • \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   SS jrSS jrSS jrS\	R                  SSSSS4                 SS jjr\R                  rSrg)rU   éþ   zJA tracer that wraps another internal tracer allowing it to be re-assigned.rk   rF   r   r?   r1   r3   rl   rJ   c                ó   • [        U 5      $ r;   )Úidr_   s    rA   Ú__hash__Ú_ProxyTracer.__hash__  s   € Ü�$‹xˆrS   c                ó   • XL $ r;   rw   )r>   Úothers     rA   Ú__eq__Ú_ProxyTracer.__eq__
  s
   € Øˆ}ÐrS   c                ó   • Xl         g r;   ©r?   )r>   r?   s     rA   r=   Ú_ProxyTracer.set_tracer  s   € Ø�rS   NTc	                óp  • U R                   R                  n	U	R                  R                  n
[	        U	R
                  [        [        S 5      45      (       + =(       a    U	R
                  R                  nU	R                  R                  nU=(       d    U
" 5       n0 U=(       d    0 EnU R                  (       a	  SU[        '   UR                  [        U5        U R                  R                  XX4XVXx5      n[!        UR#                  5       U5      (       d˜  [$        R&                  " [)        UR#                  5       R*                  UR#                  5       R,                  S[$        R.                  " UR#                  5       R0                  [$        R.                  R2                  ) -  5      S95      n[5        UU
UUS9$ )Nr˜   F©rè   ré   Ú	is_remoteÚtrace_flags)r™   rš   rŸ   )r3   r4   Úadvancedr™   rX   r�   rl   ÚtypeÚcollect_in_spansrŸ   rJ   r&   Ú
setdefaultr#   r?   Ú
start_spanÚshould_sampler¯   Ú	trace_apir   r   rè   ré   Ú
TraceFlagsrû   ÚSAMPLEDr–   )r>   r«   r   Úkindr€   ÚlinksÚ
start_timerÏ   Úset_status_on_exceptionr4   r™   rš   rŸ   r˜   s                 rA   r   Ú_ProxyTracer.start_span  si  € ð —‘×%Ñ%ˆØ!'§¡×!GÑ!GÐÜ#-¨f¯n©n¼tÄTÈ$ÃZÐ>PÓ#QÔQ×uÐV\×VdÑVd×VuÑVuˆØ#Ÿ_™_×?Ñ?Ðà×;Ñ#9Ó#;ˆ
ð ,˜×) rÐ+ˆ
Ø××Ø39ˆJÔ/Ñ0Ø×ÑÔ4°dÔ;à�{‰{×%Ñ%Ø˜4¨UÐ@Pó
ˆô ˜T×2Ñ2Ó4°j×AÑAÜ×-Ò-ÜØ!×2Ñ2Ó4×=Ñ=Ø ×1Ñ1Ó3×;Ñ;Ø#Ü )× 4Ò 4Ø×-Ñ-Ó/×;Ñ;¼y×?SÑ?S×?[Ñ?[Ð>[Ñ[ó!ñ	ó	ˆDô #ØØ#9Ø)Ø1ñ	
ð 	
rS   rö   )rT   rm   )rò   ÚobjectrT   rl   )r?   r   rT   rj   )r«   rk   r   úContext | Noner  r   r€   rä   r  zSequence[Link] | Noner  rã   rÏ   rl   r  rl   rT   r–   )rn   ro   rp   rq   rr   rs   rï   ró   r=   r   ÚINTERNALr   Ú	SDKTracerÚstart_as_current_spanrv   rw   rS   rA   rU   rU   þ   s´   ‡ áTà"Ó"ØƒNØ!Ó!ØÓôôôð #'Ø!×*Ñ*Ø,0Ø'+Ø!%Ø!%Ø(,ð,
àð,
ð  ð,
ð ð	,
ð
 *ð,
ð %ð,
ð ð,
ð ð,
ð "&ð,
ð 
õ,
ð` &×;Ñ;ÓrS   rU   c                  ó:   • \ rS rSrSSS jjr\R                  rSrg)rM   iC  Nc                óF   • [        [        U5      R                  5       5      $ r;   )r   r   r¯   )r>   r«   r   rO   rP   s        rA   r   ÚSuppressedTracer.start_spanD  s   € ô  Ô 0°Ó 9× JÑ JÓ LÓMÐMrS   rw   r;   )
r«   rk   r   r  rO   r   rP   r   rT   r   )rn   ro   rp   rq   r   r  r  rv   rw   rS   rA   rM   rM   C  s   † öNð &×;Ñ;ÓrS   rM   c                  óH   • \ rS rSr% SrS\S'   S\S'    S
     SS jjrS	rg)ÚPendingSpanProcessoriO  a¤  Span processor that emits an extra pending span for each span as it starts.

The pending span is emitted by calling `on_end` on the inner `processor`.
This is intentionally not a `WrapperSpanProcessor` to avoid the default implementations of `on_end`
and `shutdown`. This processor is expected to contain processors which are already included
elsewhere in the pipeline where `on_end` and `shutdown` are called normally.
r   Úid_generatorr   Ú	processorNc                óJ  • / n[        U[        5      oDoT(       a  [        U[        5      ofnU(       Gd€  SS[        R                  " 5       ;   d  [
        R                  " [         5      (       a  [
        R                  " [         5      OSS[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OSS[        R                  " 5       ;   d  [
        R                  " [        5      (       a  [
        R                  " [        5      OS[
        R                  " U5      S.-  osR                  U5        U(       Ga  SS[        R                  " 5       ;   d  [
        R                  " [         5      (       a  [
        R                  " [         5      OSS[        R                  " 5       ;   d  [
        R                  " U5      (       a  [
        R                  " U5      OSS[        R                  " 5       ;   d  [
        R                  " [        5      (       a  [
        R                  " [        5      OS[
        R                  " W5      S.-  oƒR                  U5        [
        R                  " US	5      0 -  n	S
SU	0-  n
[        [
        R                  " U
5      5      eS =n=n=pFUR                  5       (       d  g UR                  nU(       a  UR                  [        5      S;  a  g UR!                  5       n[#        XË5      (       d  g [%        UR&                  U R(                  R+                  5       SUR,                  S9n0 UE[        S[.        [0        R2                  " UR4                  (       a  UR4                  R6                  OS	5      0EnUR8                  n[        UR:                  UUUR<                  UUR>                  UR@                  URB                  URD                  UUURF                  S9nU RH                  RK                  U5        g )Nz.%(py6)s
{%(py6)s = %(py2)s(%(py3)s, %(py4)s)
}rX   r˜   r   )Úpy2Úpy3Úpy4Úpy6z1%(py12)s
{%(py12)s = %(py8)s(%(py9)s, %(py10)s)
}r   )Úpy8Úpy9Úpy10Úpy12r   zassert %(py15)sÚpy15)Nr˜   Frù   Úpending_span)r«   r   rÖ   rb   r€   Úeventsr  rÈ   r  r  rª   Úinstrumentation_scope)&rX   r   r   Ú@py_builtinsÚlocalsÚ
@pytest_arÚ_should_repr_global_nameÚ	_safereprÚappendÚ_format_boolopÚAssertionErrorÚ_format_explanationrÄ   r€   ræ   r&   r¯   r  r   rè   r  Úgenerate_span_idrû   r$   r  Úformat_span_idrÖ   ré   r  r«   rb   r!  r  rÈ   r  r"  r  Úon_end)r>   r˜   Úparent_contextÚ@py_assert1Ú@py_assert5Ú@py_assert0Ú@py_assert11Ú@py_format7Ú@py_format13Ú@py_format14Ú@py_format16r€   Úreal_span_contextÚspan_contextÚstart_and_end_timer   s                   rA   Úon_startÚPendingSpanProcessor.on_start\  si  € ñ
 	IŒz˜$¤Ó-ÑHÕ-´*¸TÄ4Ó2H×H×H×H×H×H×HÓHŒz×H×H×HÑHŒz×H×H×H×H×HÖH˜$×H×H×HÑH˜$×H×H×H×H×HÖH¤×H×H×HÑH¤×H×HÕHÐ-×H×H×HÐH×-×H×H×H×H×HÑH´*×H×H×HÑH´*×H×H×H×H×HÖH¸T×H×H×HÑH¸T×H×H×H×H×HÖHÄ4×H×H×HÑHÄ4×H×HÕHÐ2H×H×H×H×H×H×H×H×H×H×H×H×HØ× Ñ ×"Ñ"àà—_‘_ˆ
Þ˜ZŸ^™^Ô,DÓEÈ^Ó[Øà ×1Ñ1Ó3ÐÜÐ.×;Ñ;ð
 ä"Ø&×/Ñ/Ø×%Ñ%×6Ñ6Ó8ØØ)×5Ñ5ñ	
ˆð
Øð
ä$ nô 4´Y×5MÒ5MØ'+§{§{�—‘×#Ò#¸ó6ñ
ˆ
ð "Ÿ_™_ÐÜ#Ø—‘Ø Ø$Ø—]‘]Ø!Ø—;‘;Ø—*‘*Ø—;‘;Ø—‘Ø)Ø'Ø"&×"<Ñ"<ñ
ˆð 	�‰×Ñ˜lÕ+rS   rw   r;   )r˜   r   r/  zcontext_api.Context | NonerT   rj   )rn   ro   rp   rq   rr   rs   r;  rv   rw   rS   rA   r  r  O  s@   ‡ ñð ÓØÓð
 6:ð4,àð4,ð 3ð4,ð 
÷	4,ð 4,rS   r  c                ód   • [        U5      nUSL =(       d    U R                  [        US-  5      :*  $ )zoDetermine if a span should be sampled.

This is used to sample spans that are not sampled by the OTEL sampler.
Nl            )Úget_sample_rate_from_attributesré   Úround)r9  r€   Úsample_rates      rA   r  r  “  s3   € ô
 2°*Ó=€KØ˜$Ð×T ,×"6Ñ"6¼%ÀÈeÑ@SÓ:TÑ"TÐTrS   c                óP   • U (       d  g [        SU R                  [        5      5      $ )Núfloat | None)r   ræ   r%   )r€   s    rA   r>  r>  œ  s   € ÞØÜ� 
§¡Ô/IÓ JÓKÐKrS   rÌ   c               ó  • SSK Jn  U R                  5       (       d  gU(       a%  [        X5        U R	                  [        S5      5        U" [        [        U 5      U0 U=(       d    0 ES9nUb  [           U" U5        SSS5        UR                  (       d  gUR                  n[        bC  [        U[        5      (       a.   UR                  SS9nU R                  [         U5        X‚[         '   UR"                  (       aJ  [%        UR&                  5      n	UR)                  S5      (       a	  X’[*        '   OU R                  [*        U	5        U R-                  XX4S	9  g! , (       d  f       Nâ= f! [         a    UR                  5       n N·f = f)
zMSimilar to the OTEL SDK Span.record_exception method, with our own additions.r+   )ÚExceptionCallbackHelperNÚerror)r˜   rÐ   Úevent_attributesF)Úinclude_urlÚrecorded_by_logfire_fastapi)r€   r½   rÍ   )r    rD  rÄ   Úset_exception_statusr´   r(   r   ÚSDKSpanr)   Ú_record_exceptionrF  r.   rX   r§   Ú	TypeErrorr¦   r'   Úcreate_issuer*   Úissue_fingerprint_sourceræ   r"   rÏ   )
r˜   rÐ   r€   r½   rÍ   rÎ   rD  ÚhelperÚerr_jsonÚfingerprints
             rA   rÏ   rÏ   ¢  sR  € õ 0à×Ñ×ÑØö Ü˜TÔ-Ø×ÑÔ0°Ó9Ô:á$Ü”'˜4Ó ØØ/˜Z×-¨2Ð/ñ€Fð ÑÞ#Ù�VÔ÷ $ð ×#×#Øà×(Ñ(€JÜÑ"¤z°)¼_×'MÑ'Mð	(Ø —~‘~°%�~Ð8ˆHð 	×ÑÔ:¸HÔEØ6>Ô2Ñ3à××Ü# F×$CÑ$CÓDˆØ�>‰>Ð7×8Ñ8ð @KÔ;Ò<à×ÑÔCÀ[ÔQà×Ñ˜)ÀiÐÒa÷C $Õ#ûô ó 	(à —~‘~Ó'ŠHð	(ús   Á3	EÂ?E) Å
E&Å)FÆFc                óš   • U R                  [        R                  " [        R                  UR
                  R                   SU 3S95        g )Nz: )Ústatus_coderÉ   )rÇ   r  r   r   ÚERRORÚ	__class__rn   )r˜   rÐ   s     rA   rI  rI  å  s@   € Ø‡O�OÜ×ÒÜ"×(Ñ(Ø$×.Ñ.×7Ñ7Ð8¸¸9¸+ÐFñ	
õrS   )r˜   r   rT   z_LogfireWrappedSpan | None)rê   r   rT   ztuple[int, int])r9  r   r€   r’   rT   rl   )r€   rä   rT   rB  )r˜   útrace_api.SpanrÐ   rÙ   r€   rä   r½   rã   rÍ   rl   rÎ   rž   rT   rj   )r˜   rV  rÐ   rÙ   )[Ú
__future__r   Úbuiltinsr#  Ú_pytest.assertion.rewriteÚ	assertionÚrewriter%  r§   Úcollectionsr   Úcollections.abcr   r   Údataclassesr   r   Ú	threadingr	   Útypingr
   r   r   r   Úweakrefr   r   Úopentelemetry.traceÚtracer  Úopentelemetryr   Úcontext_apiÚopentelemetry.contextr   Úopentelemetry.sdk.resourcesr   Úopentelemetry.sdk.tracer   r   rJ  r   r   r  r   rY   Ú$opentelemetry.sdk.trace.id_generatorr   r   r   r   r   Úopentelemetry.trace.propagationr   Úopentelemetry.trace.statusr   r   Úopentelemetry.utilr    Ú
otel_typesÚ	constantsr"   r#   r$   r%   r&   r'   r(   Úutilsr)   r*   r,   r4   r-   Úpydanticr.   ÚImportErrorr/   rs   r1   ry   r–   rÔ   r¡   rU   rM   r  r  r>  rÏ   rI  rw   rS   rA   Ú<module>rr     sÒ  ðÞ "ç  „ ƒÝ #ß -ß (Ý ß 5Ó 5ß :å 'Ý 0Ý )Ý 0÷õ õ =ß k× kÑ kÝ <ß 9Ý 2÷÷ ñ ÷ 9æÝ)Ý%ðÝ(ñ
 I\ÓH]€
ÐEÓ ]ð ô>˜.ó >ó ð>ðB ÷#ð #ó ð#ñ  ˆeÑôk,˜)Ÿ.™.¨,ó k,ó ðk,ô\Hô%ð ôA<�6ó A<ó ðA<ôH	<�vô 	<ð ô@,˜=ó @,ó ð@,ôFUôLð ð
 )-Ø ØØ)-ñ?bØ
ð?bàð?bð &ð	?bð
 ð?bð ð?bð 'ð?bð 
ô?bó ð?bõDøðq ó Ø‚Oðús   Ã	E< Å<FÆF