Ë
    {×<i  ã                  ól  — d Z ddlmZ ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ dZ	dZ
	 ddlZd	Z	d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ  ed«      Z G d„ d«      Zej2                  se	sd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zyyy# e$ rZ ee«      Z
Y dZ[ŒPdZ[ww xY w)z&asyncio-related concurrency functions.é    )ÚannotationsN)ÚAny)ÚCallable)Ú	Coroutine)ÚTypeVarFTé   )Ú
await_only)Úawait_fallback)Úin_greenlet)Úgreenlet_spawn)Úis_exit_exception)ÚAsyncAdaptedLock)Ú_RunnerÚ_Tc                  óP   — e Zd ZdZdd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 d	d„Zdd„Zy)
Ú
_AsyncUtilz&Asyncio util for test suite/ util onlyc                ó0   — t         rt        «       | _        y y ©N)Úhave_greenletr   Úrunner©Úselfs    ú`/home/www/utuvibe.miabetepe.com/venv/lib/python3.12/site-packages/sqlalchemy/util/concurrency.pyÚ__init__z_AsyncUtil.__init__+   s   € ÝÜ!›)ˆDKð ó    c                óD   — | j                   j                   ||i |¤Ž«      S )zRun coroutine on the loop)r   Úrun©r   ÚfnÚargsÚkwargss       r   r   z_AsyncUtil.run/   s!   € ð {‰{‰™r 4Ð2¨6Ñ2Ó3Ð3r   c                óÎ   — t         rX| j                  j                  «       j                  «       r ||i |¤ŽS | j                  j	                  t        |g|¢­i |¤Ž«      S  ||i |¤ŽS )z3Run sync function in greenlet. Support nested calls)r   r   Úget_loopÚ
is_runningr   r   r   s       r   Úrun_in_greenletz_AsyncUtil.run_in_greenlet8   sb   € õ Ø{‰{×#Ñ#Ó%×0Ñ0Ô2Ù˜4Ð* 6Ñ*Ð*à—{‘{—‘¤~°bÐ'J¸4Ò'JÀ6Ñ'JÓKÐKátÐ&˜vÑ&Ð&r   c                óF   — t         r| j                  j                  «        y y r   )r   r   Úcloser   s    r   r'   z_AsyncUtil.closeD   s   € ÝØK‰K×ÑÕð r   N)ÚreturnÚNone)r   z&Callable[..., Coroutine[Any, Any, _T]]r    r   r!   r   r(   r   )r   zCallable[..., _T]r    r   r!   r   r(   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r%   r'   © r   r   r   r   (   s_   „ Ù0ó$ð4à2ð4ð ð4ð ð	4ð
 
ó4ð
'Ø#ð
'Ø,/ð
'Ø;>ð
'à	ó
'ô r   r   c                 óL   — t         ry t        t        rdt        z  «      ‚d«      ‚)Nz9the greenlet library is required to use this function. %sÚ )r   Ú
ValueErrorÚgreenlet_errorr.   r   r   Ú_not_implementedr3   K   s8   € õ Øäõ ðÜ"ñ#ó
ð 	
ð ó	
ð 	
r   c                ó$   — t        | t        «       S r   )Ú
isinstanceÚ	Exception)Úes    r   r   r   X   s   € Ü˜a¤Ó+Ð+Ð+r   c                ó   — t        «        y r   ©r3   ©Úthings    r   r	   r	   [   ó   € ÜÕr   c                ó   — | S r   r.   r:   s    r   r
   r
   ^   s   € Øˆr   c                 ó   — t        «        y r   r9   r.   r   r   r   r   a   r<   r   c                ó   — t        «        y r   r9   )r   r    Úkws      r   r   r   d   r<   r   c                 ó   — t        «        y r   r9   )r    r@   s     r   r   r   g   r<   r   c                ó   —  | |i |¤ŽS r   r.   ©r   Úargr@   s      r   Ú_util_async_runrE   j   s   € Ù3ˆ~˜"‰~Ðr   c                ó   — t        «        y r   r9   rC   s      r   Ú"_util_async_run_coroutine_functionrG   m   r<   r   )r-   Ú
__future__r   ÚasyncioÚtypingr   r   r   r   r   r2   ÚgreenletÚ_concurrency_py3kr	   r
   r   r   r   r   r   ÚImportErrorr7   Ústrr   r   ÚTYPE_CHECKINGr3   rE   rG   r.   r   r   ú<module>rP      sÃ   ðñ -å "ã Û Ý Ý Ý Ý à€Ø€ð+Ûð
 €MÝ;ÝCÝ=ÝCÝIÝGÝ*áˆTƒ]€÷ ñ  ðB ×Ò¡Mò
ò,òòòòòòóðI %2Ðøðc ò 	Ù˜“V€NÜûð	ús   ®B ÂB3Â!B.Â.B3