ó
    Ð]j  ã                  ó@  • S SK Jr  S SKrS SKrS SKrS SKrS SKJr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JrJrJr  SS
KJr  \(       a  SSKJr  \" \
" \R6                  5      R8                  R;                  5       5      rSS jr " S S\SS9r SS jr!SS jr"g)é    )ÚannotationsN)ÚAbstractContextManagerÚcontextmanager)ÚPath)ÚCoroutineType)ÚTYPE_CHECKINGÚAnyé   )ÚONE_SECOND_IN_NANOSECONDS)Ú	StackInfoÚget_code_object_infoÚget_stack_info_from_frame)Ú	safe_repr)ÚLogfirec                óB  ^ ^^^• [         R                  R                  R                  mT R	                  SS9m T R
                  R                  R                  mT[        -  mSU UUU4S jjnU[         R                  R                  l        [        U4S j5       nU" 5       $ )z¸Log a warning whenever a function running in the asyncio event loop blocks for too long.

See Logfire.log_slow_async_callbacks.
Inspired by https://gitlab.com/quantlane/libs/aiodebug.
Úasyncio)Úcustom_scope_suffixc                ó  >• T" 5       nT" U 5      nT" 5       U-
  nUT:¼  a6   U[         -  nU R                  nTR                  "  SSU0[        U5      D6  U$ U$ ! [         a(     TR                  S5         U$ ! [         a      U$ f = ff = f)NÚdurationzError in log_slow_callbacks)z/Async {name} blocked for {duration:.3f} seconds)r   Ú	_callbackÚwarnÚ_callback_attributesÚ	ExceptionÚ	exception)	ÚselfÚ
start_timeÚreturn_valuer   ÚcallbackÚlogfireÚoriginal_runÚslow_durationÚtimers	        €€€€ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/logfire/_internal/async_.pyÚpatched_runÚ'log_slow_callbacks.<locals>.patched_run!   s»   ø€ Ù“Wˆ
á# DÓ)ˆÙ“7˜ZÑ'ˆØ�}Ó$ðØÔ5Ñ5�Ø $§¡�Ø—’ØEñà%ðô +¨8Ó4òð Ðˆ|Ðøô ó ðØ×%Ñ%Ð&CÕDð Ðøô !ó ÙØÐðúð	ús)   ¢3A Á
BÁ$A8Á8
BÂBÂBÂBc               3  óž   >#   •  S v •  T [         R                  R                  l        g ! T [         R                  R                  l        f = f7f©N)r   ÚeventsÚHandleÚ_run)r    s   €r#   Úpatch_contextÚ)log_slow_callbacks.<locals>.patch_context9   s2   øé € ð
	6Ûà)5ŒG�N‰N×!Ñ!Õ&ø¨ŒG�N‰N×!Ñ!Õ&üs   ƒA…) ‰ A©!A
Á
A)r   zasyncio.events.HandleÚreturnr	   )
r   r(   r)   r*   Úwith_settingsÚconfigÚadvancedÚns_timestamp_generatorr   r   )r   r!   r$   r+   r    r"   s   ``  @@r#   Úlog_slow_callbacksr2      s‡   û€ ô —>‘>×(Ñ(×-Ñ-€LØ×#Ñ#¸	Ð#ÐB€GØ�N‰N×#Ñ#×:Ñ:€EØÔ.Ñ.€M÷ò ð, "-„G‡N�N×ÑÔäô6ó ð6ñ ‹?Ðó    c                  ó*   • \ rS rSr% S\S'   S\S'   Srg)Ú_CallbackAttributeséF   ÚstrÚnamezlist[StackInfo]Ústack© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__Ú__static_attributes__r:   r3   r#   r5   r5   F   s   ‡ Ø
ƒIØÖr3   r5   F)Útotalc                óh   • U R                   =n(       a  [        U5      $ [        U R                  5      $ r'   )Úcr_framer   r   Úcr_code)ÚcoroÚframes     r#   Ústack_info_from_coroutinerG   K   s-   € Ø—‘Ð€uÕÜ(¨Ó/Ð/ô $ D§L¡LÓ1Ð1r3   c                ó¤  • [        U SS 5      n[        U[        R                  R                  5      (       Ga	  UR                  5       nSSUR                  5        30n[        U[        5      (       d  U$ [        U5      n0 UEUEnUR                  S5      =n(       a  US==   SU S3-  ss'   U/n[        UR                  =n[        5      (       ai  [        U5      nUR                  SS5      R                  [        5      (       d  UR                  U5        [        UR                  =n[        5      (       a  Mi  XcS	'   U$ [        R                  " U 5      n 0 n[        U S
S 5      nU(       a  0 [!        U5      En[        U SS5      =(       d&    [        U SS5      =(       d    UR                  SS5      nU=(       d    [#        U 5      nSU 3US'   U$ )NÚ__self__r8   ztask zcode.functionz (Ú)zcode.filepathÚ r9   Ú__code__r=   r;   z	callback )ÚgetattrÚ
isinstancer   ÚtasksÚTaskÚget_coroÚget_namer   rG   ÚgetÚcr_awaitÚ
startswithÚASYNCIO_PATHÚappendÚinspectÚunwrapr   r   )	r   ÚtaskrE   ÚresultÚ
stack_infoÚfunction_namer9   Úcoder8   s	            r#   r   r   T   s©  € Ü�8˜Z¨Ó.€DÜ�$œŸ™×*Ñ*×+Ò+ð —M‘M“OˆØ'-°°t·}±}³Ð6GÐ/HÐ&IˆÜ˜$¤×.Ñ.ØˆMÜ.¨tÓ4ˆ
Ø)�FÐ)˜jÐ)ˆØ&ŸN™N¨?Ó;Ð;ˆ=Õ;Ø�6‹N  = /°Ð3Ñ3‹Nð �ˆÜ §¡Ð.˜´×>Ñ>Ü2°4Ó8ˆJà—>‘> /°2Ó6×AÑAÄ,×OÑOØ—‘˜ZÔ(ô	  §¡Ð.˜´×>Ó>ð
  ˆw‰àˆô �~Š~˜hÓ'€HØ"$€FÜ�8˜Z¨Ó.€DÞØ/Ô(¨Ó.Ð/ˆä�˜.¨"Ó-×u´¸À:ÈrÓ1R×uÐV\×V`ÑV`ÐapÐrtÓVuð 	ð ×&”9˜XÓ&€DØ   Ð'€Fˆ6�NØ€Mr3   )r   r   r!   Úfloatr-   zAbstractContextManager[None])rE   zCoroutineType[Any, Any, Any]r-   r   )r   r	   r-   r5   )#Ú
__future__r   r   Úasyncio.eventsÚasyncio.tasksrX   Ú
contextlibr   r   Úpathlibr   Útypesr   Útypingr   r	   Ú	constantsr   r\   r   r   r   Úutilsr   Úmainr   r7   Ú__file__ÚparentÚabsoluterV   r2   r5   rG   r   r:   r3   r#   Ú<module>rm      st   ðÝ "ã Û Û Û ß =Ý Ý ß %å 0ß RÑ RÝ æÝá‘4˜×(Ñ(Ó)×0Ñ0×9Ñ9Ó;Ó<€ô-ô`˜)¨5ò ô
2õ&r3   