Ë
    	êñiB8  ã                   ó4  — d Z ddlZddlmZ ddlZddlZddlZddlmZm	Z	 ddl
mZ da G d„ d«      Z	 dddd	œd
edefd„Zej                   dk  rd„ Znej                   dk  rd„ Znd„ Zej                   dk  rddœd„Zndddœd„Zddœdefd„Zd„ Zd„ Zd„ Zy)z*Patch asyncio to allow nested event loops.é    N)ÚcontextmanagerÚsuppress)ÚheappopTc                   ó   — e Zd ZdZy)Ú_NestAsyncio2z…Internal class of `nest_asyncio2`.

    Mainly for holding the original properties to support unapply() and nest_asyncio2.run().
    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© ó    ú\/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/polars/_utils/nest_asyncio.pyr   r   1   s   „ ñð
 	r   r   F)Úrun_close_loopÚerror_on_mispatchedr   r   c                óŒ   — t        |¬«       t        «        t        «        | xs
 t        «       } | �t	        | «       t
        |z  ay)ax  Patch asyncio to make its event loop reentrant.

    - `run_close_loop`: Close the event loop created by `asyncio.run()`, if any.
      See README for details.
    - `error_on_mispatched`:
      - `False` (default): Warn if asyncio is already patched by `nest_asyncio` on Python 3.12+.
      - `True`: Raise `RuntimeError` if asyncio is already patched by `nest_asyncio`.
    ©r   N)Ú_patch_asyncioÚ_patch_policyÚ_patch_tornadoÚ_get_event_loopÚ_patch_loopÚ_run_close_loop)Úloopr   r   s      r   Úapplyr   :   s=   € ô Ð':Õ;Ü„OÜÔàÒ$”?Ó$€DØÐÜ�DÔä�~Ñ%�Or   ©é   é   r   c                  ó*   — t        j                  «       S ©N)ÚasyncioÚget_event_loopr   r   r   r   r   T   s   € Ü×%Ñ%Ó'Ð'r   ©r   é   r   c                  ó†   — t        j                  «       } | €*t        j                  «       }|j                  j                  } | S r   )ÚeventsÚ_get_running_loopÚget_event_loop_policyÚ_localÚ_loop)r   Úpolicys     r   r   r   X   s9   € ô ×'Ñ'Ó)ˆØˆ<Ü×1Ñ1Ó3ˆFØ—=‘=×&Ñ&ˆDØˆr   c                  óJ   — 	 t        j                  «       S # t        $ r Y y w xY wr   )r    r!   ÚRuntimeErrorr   r   r   r   r   b   s(   € ð	Ü×)Ñ)Ó+Ð+øÜò 	Ùð	ús   ‚ –	"¡")Údebugc                ó$  — t        j                  «       }|j                  |«       t        j                  | «      }	 |j	                  |«      |j                  «       sD|j                  «        t        t         j                  «      5  |j	                  |«       d d d «       S S # 1 sw Y   S xY w# |j                  «       sP|j                  «        t        t         j                  «      5  |j	                  |«       d d d «       w # 1 sw Y   w xY ww xY wr   )	r    r!   Ú	set_debugÚensure_futureÚrun_until_completeÚdoneÚcancelr   ÚCancelledError)Úmainr-   r   Útasks       r   Úrunr7   l   s×   € Ü×%Ñ%Ó'ˆØ�‰�uÔÜ×$Ñ$ TÓ*ˆð	2Ø×*Ñ*¨4Ó0à—9‘9”;Ø—‘”Üœg×4Ñ4Ó5ñ 2Ø×+Ñ+¨DÔ1÷2ð 2ð ÷2ð 2ûð —9‘9”;Ø—‘”Üœg×4Ñ4Ó5ñ 2Ø×+Ñ+¨DÔ1÷2÷ 2ñ 2úð ús/   ¼B- ÂB!Â!B*	Â-:DÃ'DÃ9	DÄDÄD)r-   Úloop_factoryc                ó  — d}d }	 t        j                  «       }t        |«       |j                  |«       t        j                  | |¬«      }	 |j                  |«      |j                  «       sC|j                  «        t        t         j                  «      5  |j                  |«       d d d «       |rt        j                  |«       |r|j                  «        S S # t        $ r„ t        s;t	        «       }|€n|€t         j
                  } |«       }t        j                  |«       n?|€4t        j
                  «       }t	        «       }t        j                  |«       n |«       }d}Y �ŒNw xY w# 1 sw Y   ŒÄxY w# |j                  «       sP|j                  «        t        t         j                  «      5  |j                  |«       d d d «       n# 1 sw Y   nxY w|rt        j                  |«       |r|j                  «        w w xY w)NFT©r   )r    Úget_running_loopr,   r   r   Únew_event_loopÚset_event_loopr   r/   r0   r1   r2   r3   r   r4   Úclose)r5   r-   r8   r<   r=   r   r6   s          r   r7   r7   y   s©  € ØˆØˆð	&Ü×+Ñ+Ó-ˆDô6 	�DÔà�‰�uÔÜ×$Ñ$ T°Ô5ˆð	Ø×*Ñ*¨4Ó0à—9‘9”;Ø—‘”Üœg×4Ñ4Ó5ñ 2Ø×+Ñ+¨DÔ1÷2áä×&Ñ& ~Ô6Ùà—
‘
•ð øôQ ò 	&õ #ä&Ó(�Ø�<Ø#Ð+Ü'.×'=Ñ'=˜Ù'›>�DÜ×*Ñ*¨4Õ0àÐ'Ü"×1Ñ1Ó3�Dä%4Ó%6�NÜ×*Ñ*¨4Õ0á'›>�DØ!%�úð3	&ú÷F2ð 2ûð —9‘9”;Ø—‘”Üœg×4Ñ4Ó5ñ 2Ø×+Ñ+¨DÔ1÷2÷ 2ñ 2úáä×&Ñ& ~Ô6Ùà—
‘
•ð úsB   †C ÁE8 ÂE,ÃB	E)Å(E)Å,E5	Å8:HÆ2GÇ	HÇGÇ2Hr   c                 ó  — dd„}t        t        d«      rFt        t        d«      s5| rt        d«      ‚t        j                  dk\  rddl}|j                  d«       yt        j                  d	k\  r­t        j                  d
k  ršt        j                  j                  xt        _	        xt        j                  _
        t        j                  _	        t        j                  j                  xt        _        xt        j                  _        t        j                  _        t        j                  dk  rdt        j                  j                  j                  t        j                  _        t        j                  j                  j                   t        _        t        j                  dk\  r4t        j                  d
k  r!|xt"        _        xt"        _        t        _        t(        t        _        dt        _        t-        «       t        _        y)z:Patch asyncio module to use pure Python tasks and futures.c                 óv   — t        j                  «       }|€"t        j                  «       j                  «       }|S r   )r%   r&   r'   r!   )Ú
stacklevelr   s     r   r   z'_patch_asyncio.<locals>._get_event_loop®   s1   € Ü×'Ñ'Ó)ˆØˆ<Ü×/Ñ/Ó1×@Ñ@ÓBˆDØˆr   Ú_nest_patchedÚ_nest_asyncio2z*asyncio is already patched by nest_asyncior   r   NzUasyncio is already patched by nest_asyncio. You may encounter bugs related to asyncio)r   é   r   r"   ©r   é   r   )r   é	   r   T)r   )Úhasattrr    r,   ÚsysÚversion_infoÚwarningsÚwarnÚtasksÚ_PyTaskÚTaskÚ_CTaskÚfuturesÚ	_PyFutureÚFutureÚ_CFutureÚ_current_tasksÚ	all_tasksr%   r   r!   r7   rB   r   rC   )r   r   rK   s      r   r   r   «   s[  € óô Œw˜Ô(Ü”wÐ 0Ô1Ù"Ü"Ð#OÓPÐPÜ×!Ñ! ZÒ/Ûà—‘Økôð 	ô ×Ñ˜9Ò$¬×)9Ñ)9¸JÒ)FÜCJÇ=Á=×CXÑCXÐXŒŒÐX”w—}‘}Ô+¬g¯m©mÔ.@ä�O‰O×%Ñ%ð	
ŒŒð 	
œŸ™Ô1´G·O±OÔ4Jô ×Ñ˜)Ò#Ü'.§}¡}×'9Ñ'9×'HÑ'HŒ�‰Ô$Ü#ŸM™M×.Ñ.×8Ñ8ŒÔä
×Ñ˜9Ò$¬×)9Ñ)9¸JÒ)Fàð	
ŒÔð 	
¤Ô!6¼Ô9Oô „G„KØ „GÔÜ*›_„GÕr   c                  óÌ   — t         j                  dk\  ryd„ } t         j                  dk  rt        j                  «       }nt        j                  «       }| |j
                  _        y)z1Patch the policy to always return a patched loop.r"   Nc                 ó²   — | j                   j                  €,| j                  «       }t        |«       | j	                  |«       | j                   j                  S r   )r(   r)   r<   r   r=   )Úselfr   s     r   r!   z%_patch_policy.<locals>.get_event_loopä   sF   € Ø�;‰;×ÑÐ$Ø×&Ñ&Ó(ˆDÜ˜ÔØ×Ñ Ô%Ø�{‰{× Ñ Ð r   )rI   rJ   r%   r'   Ú_get_event_loop_policyÚ	__class__r!   )r!   r*   s     r   r   r   Ø   sT   € ô ×Ñ˜:Ò%Øò!ô ×Ñ˜*Ò$Ü×-Ñ-Ó/‰ä×.Ñ.Ó0ˆØ&4€F×ÑÕ#r   c                 óÖ  ‡‡‡— ˆˆfd„}ˆfd„}ˆfd„}t         d„ «       Št         d„ «       Šd„ }t        | d«      ryt        | t        j                  «      st        d	t        | «      z  «      ‚| j                  }||_        ||_	        ||_
        ||_        ||_        | j                  «       rd
nd|_        t        j                   dk(  xr t#        |t        j$                  «      |_        t(        j*                  dk  r|j,                  |_        t(        j*                  dk\  rt        j0                  j2                  nt        j4                  j2                  Šd|_        t9        «       |_        y)z Patch loop to make it reentrant.c                 óÖ   •—  ‰| «      5   ‰| «      5  	 | j                  «        | j                  rnŒ	 d d d «       d d d «       d| _        y # 1 sw Y   ŒxY w# 1 sw Y   d| _        y xY w)NF)Ú	_run_onceÚ	_stopping)rY   Úmanage_asyncgensÚ
manage_runs    €€r   Úrun_foreverz _patch_loop.<locals>.run_foreverõ   sk   ø€ Ù˜Óñ 	Ñ/°Ó5ñ 	ØØ—‘Ô Ø—>’>Øð ð ÷		÷ 	ð
 ˆ�÷	ð 	ú÷ 	ð
 ˆ�ús!   Š	A“ A´AÁA	ÁAÁA(c                 óV  •—  ‰| «      5  t        j                  || ¬«      }||urd|_        |j                  «       s.| j	                  «        | j
                  rn|j                  «       sŒ.|j                  «       st        d«      ‚|j                  «       cd d d «       S # 1 sw Y   y xY w)Nr:   Fz+Event loop stopped before Future completed.)r    r0   Ú_log_destroy_pendingr2   r^   r_   r,   Úresult)rY   ÚfutureÚfra   s      €r   r1   z'_patch_loop.<locals>.run_until_completeý   s‰   ø€ Ù˜Óñ 
	Ü×%Ñ% f°4Ô8ˆAØ˜‰Ø).�Ô&Ø—f‘f”hØ—‘Ô Ø—>’>Øð —f‘f•hð —6‘6”8Ü"Ð#PÓQÐQØ—8‘8“:÷
	÷ 
	ò 
	ús   ŠA BÁ+*BÂB(c                 ó†  •— | j                   }| j                  }|r,|d   j                  rt        |«       |r|d   j                  rŒ|s| j                  rdn7|r4t        t        |d   j                  | j                  «       z
  d«      d«      nd}| j                  j                  |«      }| j                  |«       | j                  «       | j                  z   }|rC|d   j                  |k  r1t        |«      }|j                  |«       |r|d   j                  |k  rŒ1t        t        |«      «      D ]¹  }|s d}y|j!                  «       }|j                  rŒ&t"        j$                  dk  r‰	j'                  | d«      }n!	 t(        j*                  j-                  | d«      }	 |j1                  «        |€Œ�t"        j$                  dk  r|‰	| <   Œšt(        j*                  j-                  | |«       Œ» d}y# t.        $ r d}Y Œ_w xY w# |�:t"        j$                  dk  r|‰	| <   w t(        j*                  j-                  | |«       w w xY w)zu
        Simplified re-implementation of asyncio's _run_once that
        runs handles as they become ready.
        r   i€Q Nr"   )Ú_readyÚ
_scheduledÚ
_cancelledr   r_   ÚminÚmaxÚ_whenÚtimeÚ	_selectorÚselectÚ_process_eventsÚ_clock_resolutionÚappendÚrangeÚlenÚpopleftrI   rJ   Úpopr    rM   Ú_swap_current_taskÚKeyErrorÚ_run)
rY   ÚreadyÚ	scheduledÚtimeoutÚ
event_listÚend_timeÚhandleÚ_Ú	curr_taskÚ
curr_taskss
            €r   r^   z_patch_loop.<locals>._run_once
  s  ø€ ð
 —‘ˆØ—O‘Oˆ	Ù˜I a™L×3Ò3Ü�IÔñ ˜I a™L×3Ó3ñ
 ˜Ÿšñ ñ ô ”S˜ 1™×+Ñ+¨d¯i©i«kÑ9¸1Ó=¸uÔEàð 	ð —^‘^×*Ñ*¨7Ó3ˆ
Ø×Ñ˜ZÔ(à—9‘9“; ×!7Ñ!7Ñ7ˆÙ˜I a™L×.Ñ.°Ò9Ü˜YÓ'ˆFØ�L‰L˜Ô ñ ˜I a™L×.Ñ.°Ó9ô ”s˜5“zÓ"ò 	NˆAÙØð2 ‰ð1 —]‘]“_ˆFØ×$Ó$ô ×#Ñ# jÒ0Ø *§¡¨t°TÓ :‘Ið)Ü$+§M¡M×$DÑ$DÀTÈ4Ó$P˜	ð	NØ—K‘K”Mð !Ñ,Ü×+Ñ+¨jÒ8Ø/8˜J tÒ,ô $ŸM™M×<Ñ<¸TÀ9ÕMð3	Nð6 ‰øô $ò )Ø$(š	ð)ûð !Ð,Ü×+Ñ+¨jÒ8Ø/8˜J tÒ,ô $ŸM™M×<Ñ<¸TÀ9ÕMð -ús   Å? G1Æ HÇ1G?Ç>G?È>I c              3   ó(  K  — | j                  «        | j                  }t        j                  «       }	 t	        j
                  «       | _        t        j                  | «       | xj                  dz  c_        | j                  r'| j                  €| j                  | j                  «       d–— || _        t        j                  |«       | xj                  dz  c_        | j                  rr| j                  dk(  rb| j                  �U| j                  j                  }| j                  j                  «        |�| j                  j                  |«       d| _	        yyyy# || _        t        j                  |«       | xj                  dz  c_        | j                  rr| j                  dk(  rb| j                  �U| j                  j                  }| j                  j                  «        |�| j                  j                  |«       d| _	        w w w w xY w­w)zSet up the loop for running.é   Nr   )Ú_check_closedÚ
_thread_idr%   r&   Ú	threadingÚ	get_identÚ_set_running_loopÚ_num_runs_pendingÚ_is_proactorloopÚ_self_reading_futureÚ	call_soonÚ_loop_self_readingÚ_ovr3   Ú	_proactorÚ_unregister)rY   Úold_thread_idÚold_running_loopÚovs       r   ra   z_patch_loop.<locals>.manage_run@  sÃ  è ø€ ð 	×ÑÔØŸ™ˆÜ!×3Ñ3Ó5Ðð	5Ü'×1Ñ1Ó3ˆDŒOÜ×$Ñ$ TÔ*Ø×"Ò" aÑ'Õ"Ø×$Ò$Ø×,Ñ,Ð4Ø—N‘N 4×#:Ñ#:Ô;Ûà+ˆDŒOÜ×$Ñ$Ð%5Ô6Ø×"Ò" aÑ'Õ"Ø×$Ò$à×*Ñ*¨aÒ/Ø×1Ñ1Ð=à×2Ñ2×6Ñ6�BØ×-Ñ-×4Ñ4Ô6Ø�~ØŸ™×2Ñ2°2Ô6Ø04�DÕ-ð >ð 0ð %øð ,ˆDŒOÜ×$Ñ$Ð%5Ô6Ø×"Ò" aÑ'Õ"Ø×$Ò$à×*Ñ*¨aÒ/Ø×1Ñ1Ð=à×2Ñ2×6Ñ6�BØ×-Ñ-×4Ñ4Ô6Ø�~ØŸ™×2Ñ2°2Ô6Ø04�DÕ-ð >ð 0ð %üs   ‚1H´A:E Â.B0HÅB1HÈHc              3   óÎ  K  — t        t        d«      sy t        j                  «       }	 | j                  | j                  «       | j
                  �+t        j                  | j                  | j                  ¬«       d –— | j                  d«       | j
                  �t        j                  |Ž  y y # | j                  d«       | j
                  �t        j                  |Ž  w w xY w­w)NÚget_asyncgen_hooks)Ú	firstiterÚ	finalizerF)	rH   rI   r˜   Ú_set_coroutine_origin_trackingÚ_debugÚ
_asyncgensÚset_asyncgen_hooksÚ_asyncgen_firstiter_hookÚ_asyncgen_finalizer_hook)rY   Úold_agen_hookss     r   r`   z%_patch_loop.<locals>.manage_asyncgens]  sÁ   è ø€ ä”sÐ0Ô1àÜ×/Ñ/Ó1ˆð	8Ø×/Ñ/°·±Ô<Ø�‰Ð*Ü×&Ñ&Ø"×;Ñ;Ø"×;Ñ;õó à×/Ñ/°Ô6Ø�‰Ð*Ü×&Ñ&¨Ò7ð +øð ×/Ñ/°Ô6Ø�‰Ð*Ü×&Ñ&¨Ò7ð +üs   ‚&C%©AB0 Á?1C%Â02C"Ã"C%c                  ó   — y)z2Do not throw exception if loop is already running.Nr   )rY   s    r   Ú_check_runningz#_patch_loop.<locals>._check_runningp  s   € àr   rB   NzCan't patch loop of type %sr†   r   ÚntrE   T)r   rH   Ú
isinstancer    ÚBaseEventLoopÚ
ValueErrorÚtyper[   rb   r1   r^   r£   Ú_check_runnungÚ
is_runningrŒ   ÚosÚnameÚ
issubclassÚProactorEventLoopr�   rI   rJ   Ú_set_coroutine_wrapperr›   rM   rU   rO   rB   r   rC   )	r   rb   r1   r^   r£   Úclsr„   r`   ra   s	         @@@r   r   r   ò   s@  ú€ õôô4ôl ñ5ó ð5ô8 ñ8ó ð8ò$ô ˆt�_Ô%ØÜ�dœG×1Ñ1Ô2ÜÐ6¼¸d»ÑCÓDÐDØ
�.‰.€CØ!€C„OØ/€CÔØ€C„MØ'€CÔØ'€CÔØ!%§¡Ô!2™A¸€CÔÜŸ7™7 d™?ò ¬zØŒW×&Ñ&ó0€CÔô ×Ñ˜)Ò#Ø-0×-GÑ-GˆÔ*ô ×Ñ˜yÒ(ô 	�‰×$Ò$ä�\‰\×(Ñ(ð ð
 €CÔÜ&›€CÕr   c                  óâ   — dt         j                  v r]ddlm}  t        j
                  | _        t        j
                  | j                  vr%| xj                  t        j
                  fz  c_        yyy)zo
    If tornado is imported before nest_asyncio, make tornado aware of
    the pure-Python asyncio Future.
    Útornador   N)rI   ÚmodulesÚtornado.concurrentÚ
concurrentr    rS   ÚFUTURES)Útcs    r   r   r   �  sM   € ð
 ”C—K‘KÑÝ'ä—N‘NˆŒ	Ü�>‰> §¡Ñ+Ø�JŠJœ7Ÿ>™>Ð+Ñ+ŽJð ,ð	  r   r   )r   r    Úasyncio.eventsr%   r«   rI   r‰   Ú
contextlibr   r   Úheapqr   r   r   Úboolr   rJ   r   r7   r   r   r   r   r   r   r   ú<module>r¼      sÈ   ðñH 1ã Ý Û 	Û 
Û ß /Ý à€÷	ñ 	ð 
ð&Ø).ÈEò&Ø"&ð&ØEIó&ð0 ×Ñ�jÒ ó(à×Ñ˜
Ò"óòð ×Ñ�jÒ à õ 
2ð !¨tô /ðd 38ò *-¨4ó *-òZ5ò4X)óv
,r   