
    [h                    x   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 n# e$ rZ ee          Z	Y dZ[ndZ[ww xY w ed          Z G d d          Zej        sesd Zd Zd Zd Zd Zd Zd Zd Zd ZdS dS dS )    )annotationsN)Any)Callable)	Coroutine)TypeVarFT   )
await_only)await_fallback)in_greenlet)greenlet_spawn)is_exit_exception)AsyncAdaptedLock)_Runner_Tc                  2    e Zd ZdZddZddZddZddZdS )
_AsyncUtilz&Asyncio util for test suite/ util onlyreturnNonec                >    t           rt                      | _        d S d S N)have_greenletr   runnerselfs    j/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/util/concurrency.py__init__z_AsyncUtil.__init__)   s#     	$!))DKKK	$ 	$    fn&Callable[..., Coroutine[Any, Any, _T]]argsr   kwargsr   c                B    | j                              ||i |          S )zRun coroutine on the loop)r   runr   r   r    r!   s       r   r#   z_AsyncUtil.run-   s'     {rr42622333r   Callable[..., _T]c                    t           r[| j                                                                        r ||i |S | j                            t          |g|R 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_greenlet6   s      	'{##%%0022 Lr4*6***{~b'J4'J'J'J6'J'JKKK2t&v&&&r   c                J    t           r| j                                         d S d S r   )r   r   closer   s    r   r+   z_AsyncUtil.closeB   s.     	 K	  	 r   N)r   r   )r   r   r    r   r!   r   r   r   )r   r%   r    r   r!   r   r   r   )__name__
__module____qualname____doc__r   r#   r)   r+    r   r   r   r   &   sj        00$ $ $ $4 4 4 4
' 
' 
' 
'           r   r   c                 T    t           rd S t          t          r
dt          z  nd          )Nz9the greenlet library is required to use this function. %s )r   
ValueErrorgreenlet_errorr0   r   r   _not_implementedr5   I   sD      	4  "# # 	
 
 	
r   c                .    t          | t                     S r   )
isinstance	Exception)es    r   r   r   V   s    a++++r   c                "    t                       d S r   r5   things    r   r	   r	   Y       r   c                    | S r   r0   r<   s    r   r
   r
   \   s    r   c                 "    t                       d S r   r;   r0   r   r   r   r   _   r>   r   c                "    t                       d S r   r;   )r   r    kws      r   r   r   b   r>   r   c                 "    t                       d S r   r;   )r    rB   s     r   r   r   e   r>   r   c                     | |i |S r   r0   r   argrB   s      r   _util_async_runrG   h   s    r3~"~~r   c                "    t                       d S r   r;   rE   s      r   "_util_async_run_coroutine_functionrI   k   r>   r   )
__future__r   asynciotypingr   r   r   r   r   r4   greenlet_concurrency_py3kr	   r
   r   r   r   r   r   ImportErrorr9   strr   r   TYPE_CHECKINGr5   rG   rI   r0   r   r   <module>rR      s>   # " " " " "                          +OOO
 M;;;;;;CCCCCC======CCCCCCIIIIIIGGGGGG*******  	 	 	SVVNDDDD	 WT]]               B  %M %
 
 
, , ,                I% % % %s   A A7"A22A7