
    (ph|
                       % S r SSKJr  SSKrSSKrSSKrSSKJrJrJ	r	J
r
  SSKJrJr  \R                  rS\S'   S	rS\S
'   \" S5      r\
(       a#  \R&                  rS\S'   \R&                  rS\S'   O3 " S S\5      r " S S\R&                  \S9r " S S\R&                  \S9r " S S\\   5      r " S S\\   5      r  S       SS jjr  S       SS jjrSS.SS jjrSS.S S jjrg)!z
Utilities to ease the differences between async and sync code.

These object offer a similar interface between sync and async versions; the
script async_to_sync.py will replace the async names with the sync names
when generating the sync version.
    )annotationsN)AnyCallable	CoroutineTYPE_CHECKING   )	TypeAliasTypeVarr	   Workerasyncio.Task[None]AWorkerT_GQueue_AGQueuec                      \ rS rSrS rSrg)FakeGenericMeta    c                    U $ )N )selfitems     C/var/www/html/venv/lib/python3.13/site-packages/psycopg/_acompat.py__getitem__FakeGenericMeta.__getitem__!   s    K    r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r   r   r   r       s    	r   r   c                      \ rS rSrSrg)r   $   r   Nr   r   r   r   r    r   r   r   r   r   $       r   )	metaclassc                      \ rS rSrSrg)r   '   r   Nr#   r   r   r   r   r   '   r$   r   c                  4   ^  \ rS rSrSrSSU 4S jjjrSrU =r$ )Queue+   z6
A Queue subclass with an interruptible get() method.
c                (   > Uc  Sn[         TU ]  XS9$ )Ng     @)blocktimeout)superget)r   r,   r-   	__class__s      r   r/   	Queue.get0   s    ?(Gw{{88r   r   )TN)r,   boolr-   float | Nonereturnr   )r   r   r   r   __doc__r/   r    __classcell__)r0   s   @r   r)   r)   +   s    9 9r   r)   c                      \ rS rSrSrg)AQueue7   r   Nr#   r   r   r   r8   r8   7   s    r   r8   c                2    [         R                  " U " U6 US9$ )z$
Equivalent to asyncio.create_task.
)name)asynciocreate_task)fargsr;   s      r   aspawnr@   ;   s     q$xd33r   c                R    [         R                  " XUSS9nUR                  5         U$ )z5
Equivalent to creating and running a daemon thread.
T)targetr?   r;   daemon)	threadingThreadstart)r>   r?   r;   ts       r   spawnrH   F   s&     	4EAGGIHr   r-   c                   #    [         R                  " U6 n U b2  [         R                  " [         R                  " U5      U S9I Sh  vN   gUI Sh  vN    g N N! [         R                   a     gf = f7f)/
Equivalent to asyncio.gather or Thread.join()
NrI   )r<   gatherwait_forshieldTimeoutError)r-   taskswaits      r   agatherrR   S   sr      >>5!D""7>>$#7III 		 JJ 	 J sX   A6/A AA A6A AA A6A A A30A62A33A6c                f    U H+  nUR                  5       (       d  M  UR                  U 5        M-     g)rK   N)is_alivejoin)r-   rP   rG   s      r   rL   rL   c   s'     zz||	w r   )r   N)r>   z(Callable[..., Coroutine[Any, Any, None]]r?   tuple[Any, ...]r;   
str | Noner4   r   )r>   zCallable[..., Any]r?   rV   r;   rW   r4   threading.Thread)rP   zasyncio.Task[Any]r-   r3   r4   None)rP   rX   r-   r3   r4   rY   )r5   
__future__r   queuer<   rD   typingr   r   r   r   _compatr	   r
   rE   r   __annotations__r   r   r)   r   r   typer   r8   r@   rH   rR   rL   r   r   r   <module>r`      s3   #    : : '$$	 $) )CL GY$!--Hi'$ %++ 7==O 	9GAJ 	9	Xa[ 	 4/4
4 4 	4 



 
 	
 FJ   >B  r   