ó
    Ð]ja.  ã                  ó¸  • S SK Jr  S SKrS SKJs  Jr  S SKrS SK	r	S SK
r
S SK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Jr  S S	KJr  S SK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&  S SKJ'r'  S SK(r(SSK)J*r*J+r+  SSK,J-r-J.r.   " S S\5      r/ " S S\'5      r0S#S jr1 " S S5      r2 " S S\.5      r3 " S S\45      r5 " S S \.5      r6 " S! S"\-5      r7g)$é    )ÚannotationsN)Údeque)ÚMappingÚSequence)Úcached_property)ÚPath)Úmkdtemp)ÚLockÚThread)ÚAny)ÚOTLPSpanExporter)ÚReadableLogRecord)ÚLogRecordExportResult)ÚReadableSpan)ÚSpanExportResult)ÚSessioné   )ÚloggerÚplatform_is_emscriptené   )ÚWrapperLogExporterÚWrapperSpanExporterc                  óP   ^ • \ rS rSrSrSU 4S jjrSU 4S jjrS	U 4S jjrSrU =r	$ )
Ú BodySizeCheckingOTLPSpanExporteré   i  P c                ó4   >• [         TU ]  " U0 UD6  SU l        g )Nr   )ÚsuperÚ__init__Ú_current_num_spans)ÚselfÚargsÚkwargsÚ	__class__s      €Ú]/home/mande/repo/quber/.venv/lib/python3.13/site-packages/logfire/_internal/exporters/otlp.pyr   Ú)BodySizeCheckingOTLPSpanExporter.__init__$   s   ø€ Ü‰Ò˜$Ð) &Ò)Ø"#ˆÕó    c                óB   >• [        U5      U l        [        TU ]  U5      $ ©N)Úlenr   r   Úexport©r    Úspansr#   s     €r$   r*   Ú'BodySizeCheckingOTLPSpanExporter.export(   s   ø€ Ü"% e£*ˆÔÜ‰w‰~˜eÓ$Ð$r&   c                ó¼   >• U R                   S:”  a8  [        U5      U R                  :”  a  [        [        U5      U R                  5      e[        TU ]  " U/UQ70 UD6$ )Nr   )r   r)   Úmax_body_sizeÚBodyTooLargeErrorr   Ú_export)r    Úserialized_datar!   r"   r#   s       €r$   r1   Ú(BodySizeCheckingOTLPSpanExporter._export,   sT   ø€ à×"Ñ" QÓ&¬3¨Ó+?À$×BTÑBTÓ+Tä#¤C¨Ó$8¸$×:LÑ:LÓMÐMä‰wŠ˜Ð@°Ò@¸Ñ@Ð@r&   )r   )r!   r   r"   r   )r,   úSequence[ReadableSpan])r2   Úbytesr!   r   r"   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r/   r   r*   r1   Ú__static_attributes__Ú__classcell__©r#   s   @r$   r   r      s    ø† ð $€M÷$÷%÷Aõ Ar&   r   c                  óX   ^ • \ rS rSrSrSS jrS	S jrSU 4S jjr\S
S j5       r	Sr
U =r$ )ÚOTLPExporterHttpSessioné5   zIA requests.Session subclass that defers failed requests to a DiskRetryer.c                óº  • [         R                   " 5       n U R                  " X40 UD6$ ! [        R                  R                   a’    [         R                   " 5       nXT-
  S:”  a  U R                  X!U5        e [         R                  " S5         U R                  " X40 UD6s $ ! [        R                  R                   a    U R                  X!U5        e f = ff = f)Né
   r   )ÚtimeÚ_postÚrequestsÚ
exceptionsÚRequestExceptionÚ	_add_taskÚsleep)r    ÚurlÚdatar"   Ú
start_timeÚend_times         r$   ÚpostÚOTLPExporterHttpSession.post8   sº   € Ü—Y’Y“[ˆ
ð	Ø—:’:˜cÑ2¨6Ñ2Ð2øÜ×"Ñ"×3Ñ3ó 	ô —y’y“{ˆHØÑ$ rÓ)Ø—‘˜t¨&Ô1Øä�JŠJ�qŒMðØ—z’z #Ñ6¨vÑ6Ò6øÜ×&Ñ&×7Ñ7ó Ø—‘˜t¨&Ô1Øðúð#	ús"   —* ªA$CÂB$Â!CÂ$2CÃCc                ód   • [        5       (       d!  U R                  R                  USU0UE5        g g )NrI   )r   ÚretryerÚadd_task)r    rJ   rI   r"   s       r$   rG   Ú!OTLPExporterHttpSession._add_taskQ   s.   € ä%×'Ñ'Ø�L‰L×!Ñ! $¨°Ð(>°vÐ(>Õ?ð (r&   c                óD   >• [         TU ]  " U4SU0UD6n[        U5        U$ )NrJ   )r   rM   Úraise_for_retryable_status)r    rI   rJ   r"   Úresponser#   s        €r$   rC   ÚOTLPExporterHttpSession._postV   s(   ø€ Ü‘7’< Ñ9¨$Ð9°&Ñ9ˆÜ" 8Ô,Øˆr&   c                ó,   • [        U R                  5      $ r(   )ÚDiskRetryerÚheaders)r    s    r$   rP   ÚOTLPExporterHttpSession.retryer[   s   € ô ˜4Ÿ<™<Ó(Ð(r&   © )rI   ÚstrrJ   r5   r"   r   )rJ   r5   rI   r\   r"   údict[str, Any])ÚreturnrX   )r6   r7   r8   r9   Ú__doc__rM   rG   rC   r   rP   r:   r;   r<   s   @r$   r>   r>   5   s*   ø† ÙSôô2@÷
ð
 ó)ó ö)r&   r>   c                óf   • U R                   S;   d  U R                   S:¼  a  U R                  5         g g )N)i˜  i­  iô  )Ústatus_codeÚraise_for_status)rU   s    r$   rT   rT   b   s1   € ð ×Ñ˜zÓ)¨X×-AÑ-AÀSÓ-HØ×!Ñ!Õ#ð .Ir&   c                  óH   • \ rS rSrSrSrSrSrSS jrSS jr	SS jr
S	 rS
rg)rX   éi   zcRetries requests failed by OTLPExporterHttpSession, saving the request body to disk to save memory.é€   i    é<   c                ó  • [        5       U l        S U l        [        5       U l        SU l        [        5       U l        U R                  R                  R                  U5        [        [        SS95      U l        [        S5      * U l        g )Nr   zlogfire-retryer-)ÚprefixÚinf)r
   ÚlockÚthreadr   ÚtasksÚ
total_sizer   ÚsessionrY   Úupdater   r	   ÚdirÚfloatÚlast_log_time)r    rY   s     r$   r   ÚDiskRetryer.__init__v   sg   € ä“FˆŒ	Ø%)ˆŒÜ9>»ˆŒ
ØˆŒô
 “yˆŒØ�‰×Ñ×#Ñ# GÔ,ô œÐ'9Ñ:Ó;ˆŒä# E›l˜]ˆÕr&   c                ó  •  U R                      U R                  U R                  :¼  aT  U R                  5       (       a5  [        R
                  " S[        U R                  5      U R                  5         S S S 5        g U =R                  [        U5      -  sl        S S S 5         U R                  [        R                  " 5       R                  -  nUR                  U5        U R                      U R                  R                  X245        U R                  (       a  U R                  R!                  5       (       d3  [#        U R$                  SS9U l        U R                  R'                  5         [        U R                  5      nU R                  nS S S 5        U R                  5       (       a  [        R(                  " SWW5        g g ! , (       d  f       GN1= f! [         aF    U R                      U =R                  [        U5      -  sl        S S S 5        e ! , (       d  f       e = ff = f! , (       d  f       N¢= f! [         a;  nU R                  5       (       a  [        R
                  " SU5         S nAg  S nAg S nAff = f)NzAAlready retrying %s failed exports (%s bytes), dropping an exportT)ÚtargetÚdaemonz1Currently retrying %s failed export(s) (%s bytes)zExport and retry failed: %s)rj   rm   ÚMAX_TASK_SIZEÚ_should_logr   Úerrorr)   rl   rp   ÚuuidÚuuid4ÚhexÚwrite_bytesÚ	ExceptionÚappendrk   Úis_aliver   Ú_runÚstartÚwarning)r    rJ   r"   ÚpathÚ	num_tasksÚ	num_bytesÚes          r$   rQ   ÚDiskRetryer.add_taskˆ   sÃ  € ð#	?Ø—“Ø—?‘? d×&8Ñ&8Ó8Ø×'Ñ'×)Ñ)ÜŸšØ_Ü §
¡
›OØ ŸO™Oôð
 ÷ �ð —’¤3 t£9Ñ,•÷ ðØ—x‘x¤$§*¢*£,×"2Ñ"2Ñ2�Ø× Ñ  Ô&ð —“Ø—
‘
×!Ñ! 4 .Ô1ØŸŸ¨¯©×(<Ñ(<×(>Ñ(>ô #)°·	±	À$Ñ"G�D”KØ—K‘K×%Ñ%Ô'Ü §
¡
›O�	Ø ŸO™O�	÷ ð ×Ñ×!Ñ!Ü—’ÐRÐT]Ð_hÕið "÷= –ûô ó Ø—Y“YØ—O’O¤s¨4£yÑ0•O÷ à÷ ”Yàúðú÷
 •ûô ó 	?Ø×Ñ×!Ñ!Ü—’Ð:¸A×>Ñ>ô "ûð	?ús„   ‚H; ŽA&GÁ4H; Á=GÂH; Â$=G Ã!H; Ã-B!H*Æ5H; Ç
GÇH; ÇH'Ç-HÈ	H'È
H#	ÈH'È'H; È*
H8È4H; È;
J É,I;É;J c                ó¦   • [         R                  " 5       U R                  -
  U R                  :¬  nU(       a  [         R                  " 5       U l        U$ r(   )rB   Ú	monotonicrr   ÚLOG_INTERVAL)r    Úresults     r$   rx   ÚDiskRetryer._should_log®   s;   € Ü—’Ó! D×$6Ñ$6Ñ6¸$×:KÑ:KÑKˆÞÜ!%§¢Ó!1ˆDÔØˆr&   c                óÎ  • Sn U R                      U R                  (       d  S U l         S S S 5        g U R                  R                  5       nS S S 5         Wu  p4UR	                  5       n [
        R                  " US[        R                  " 5       -   -  5         [        R                  " 5          U R                  R                  " S0 UDSU0D6nS S S 5        [        W5        SnUR                  5         U R                      U =R                  [        U5      -  sl        S S S 5         GM)  ! , (       d  f       Næ= f! , (       d  f       Ns= f! , (       d  f       N4= f! [         R"                  R$                   a(    ['        US-  U R(                  5      n[+        US5      n Of = fGMA  ! [,         a.    U R/                  5       (       a  [0        R2                  " S5         N¹f = f)Nr   rJ   gš™™™™™É?r   zError retrying exportr[   )rj   rl   rk   ÚpopleftÚ
read_bytesrB   rH   ÚrandomÚlogfireÚsuppress_instrumentationrn   rM   rT   Úunlinkrm   r)   rD   rE   rF   ÚminÚ	MAX_DELAYÚmaxr~   rx   r   Ú	exception)r    ÚdelayÚtaskr„   r"   rJ   rU   s          r$   r�   ÚDiskRetryer._run´   su  € ØˆØØ—“Ø—z—zà"&�D”KØ÷	 �ð —z‘z×)Ñ)Ó+�÷ ð>Ø#‘�Ø—‘Ó(�Øô —J’J˜u¨¬F¯MªM«OÑ(;Ñ<Ô=ðÜ$×=Ò=Õ?Ø'+§|¡|×'8Ò'8Ñ'M¸6Ñ'MÈÒ'M˜H÷ @ä2°8Ô<ð !$˜ØŸ™œØ!ŸY›YØ ŸOšO¬s°4«yÑ8�O÷ 'àòG ß•ú÷& @Õ?ú÷ '�Yûô $×.Ñ.×?Ñ?ó .ä # E¨A¡I¨t¯~©~Ó >˜ä # E¨1£šð	.úò øô. ó >Ø×#Ñ#×%Ñ%Ü×$Ò$Ð%<Ô=ùð>úsx   �D-³D-ÁAF, ÂE  Â0!D>ÃE  Ã$F, ÄEÄ!F, Ä-
D;Ä>
EÅE  Å
EÅF, Å AF&Æ#F, Æ%F&Æ&F, Æ,5G$Ç#G$)rp   rr   rj   rn   rl   rk   rm   N)rY   zMapping[str, str | bytes])rJ   r5   r"   r]   )r^   Úbool)r6   r7   r8   r9   r_   r–   rw   r‹   r   rQ   rx   r�   r:   r[   r&   r$   rX   rX   i   s/   † Ùmð €Ið &€Mð €Lô+ô$$?ôLõ)>r&   rX   c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚRetryFewerSpansSpanExporteréà   z½A SpanExporter that retries exporting spans in smaller batches if BodyTooLargeError is raised.

This wraps another exporter, typically an OTLPSpanExporter using an OTLPExporterHttpSession.
c                ó¨  >•  [         T	U ]  U5      $ ! [         Ga4    [        U5      S-  nSo2U:„  oD(       d¥  [        R
                  " SU4SX#45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =pCU R                  US U 5      nU R                  XS  5      nU[        R                  Ld  U[        R                  La  [        R                  s $ [        R                  s $ f = f)	Nr   r   )Ú>)z%(py0)s > %(py3)sÚhalf)Úpy0Úpy3zassert %(py5)sÚpy5)r   r*   r0   r)   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr   ÚSUCCESSÚFAILURE)
r    r,   r¢   Ú@py_assert2Ú@py_assert1Ú@py_format4Ú@py_format6Úres1Úres2r#   s
            €r$   r*   Ú"RetryFewerSpansSpanExporter.exportæ   sÑ   ø€ ð	,Ü‘7‘> %Ó(Ð(øÜ ô 		,Ü�u“: ‘?ˆDð ˆO˜!‘8�O�O�OŠO�4�O�O�O�O�O�O�4�O�O�O‰O�4�O�O�O˜!�O�O�O�O�O�O‰OØ—;‘;˜u U d˜|Ó,ˆDØ—;‘;˜u U˜|Ó,ˆDØÔ+×3Ñ3Ò3°tÔCS×C[ÑC[Ò7[Ü'×/Ñ/Ò/Ü#×+Ñ+Ò+ð		,ús   ƒ ’D*EÄ>EÅEr[   ©r,   r4   r^   r   ©r6   r7   r8   r9   r_   r*   r:   r;   r<   s   @r$   rž   rž   à   s   ø† ñ÷
,õ ,r&   rž   c                  ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )r0   éõ   c                óJ   >• [         TU ]  SU SU S35        Xl        X l        g )NzRequest body is too large (z bytes), must be less than z bytes.)r   r   ÚsizeÚmax_size)r    r¼   r½   r#   s      €r$   r   ÚBodyTooLargeError.__init__ö   s.   ø€ Ü‰ÑÐ6°t°fÐ<WÐX`ÐWaÐahÐiÔjØŒ	Ø �r&   )r½   r¼   )r¼   Úintr½   r¿   r^   ÚNone)r6   r7   r8   r9   r   r:   r;   r<   s   @r$   r0   r0   õ   s   ø† ÷!õ !r&   r0   c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚQuietSpanExporteréü   z]A SpanExporter that catches request exceptions to prevent OTEL from logging a huge traceback.c                óŒ   >•  [         TU ]  U5      $ ! [        R                  R                   a    [
        R                  s $ f = fr(   )r   r*   rD   rE   rF   r   r¯   r+   s     €r$   r*   ÚQuietSpanExporter.exportÿ   s>   ø€ ð	,Ü‘7‘> %Ó(Ð(øÜ×"Ñ"×3Ñ3ó 	,ä#×+Ñ+Ò+ð	,úó   ƒ ’.AÁAr[   r·   r¸   r<   s   @r$   rÂ   rÂ   ü   s   ø† Ùg÷,õ ,r&   rÂ   c                  ó0   ^ • \ rS rSrSrSU 4S jjrSrU =r$ )ÚQuietLogExporteri  z\A LogExporter that catches request exceptions to prevent OTEL from logging a huge traceback.c                óŒ   >•  [         TU ]  U5      $ ! [        R                  R                   a    [
        R                  s $ f = fr(   )r   r*   rD   rE   rF   r   r¯   )r    Úbatchr#   s     €r$   r*   ÚQuietLogExporter.export
  s>   ø€ ð	1Ü‘7‘> %Ó(Ð(øÜ×"Ñ"×3Ñ3ó 	1ä(×0Ñ0Ò0ð	1úrÆ   r[   )rÊ   zSequence[ReadableLogRecord]r¸   r<   s   @r$   rÈ   rÈ     s   ø† Ùf÷1õ 1r&   rÈ   )rU   zrequests.Response)8Ú
__future__r   Úbuiltinsr¨   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter¦   r‘   rB   rz   Úcollectionsr   Úcollections.abcr   r   Ú	functoolsr   Úpathlibr   Útempfiler	   Ú	threadingr
   r   Útypingr   Úrequests.exceptionsrD   Ú5opentelemetry.exporter.otlp.proto.http.trace_exporterr   Úopentelemetry.sdk._logsr   Ú(opentelemetry.sdk._logs._internal.exportr   Úopentelemetry.sdk.tracer   Úopentelemetry.sdk.trace.exportr   r   r’   Úutilsr   r   Úwrapperr   r   r   r>   rT   rX   rž   r~   r0   rÂ   rÈ   r[   r&   r$   Ú<module>rà      s©   ðÝ "ç  „ ƒÛ Û Ý ß -Ý %Ý Ý ß "Ý ã Ý RÝ 5Ý JÝ 0Ý ;Ý ã ç 2ß <ôAÐ'7ô Aô2*)˜gô *)ôZ$÷t>ñ t>ôn,Ð"5ô ,ô*!˜	ô !ô,Ð+ô ,ô1Ð)õ 1r&   