ó
    Ð]j¾  ã                  ó¨  • % 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  SSK	J
r
Jr  SSKJr  \R                  rS\S	'   \R"                  S   rS\S
'   \R&                  r\R&                  r\" S5      r " S S\R,                  \   5      r " S S\R,                  \   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Ú	TypeAlias)ÚCallableÚ	Coroutineé   )ÚTypeVarr   ÚWorkerÚAWorkerÚTc                  ó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)Úselfr   r   Ú	__class__s      €ÚM/home/mande/repo/quber/.venv/lib/python3.13/site-packages/psycopg/_acompat.pyr   Ú	Queue.get"   s   ø€ à‰?Ø(ˆGÜ‰w‰{ ˆ{Ð8Ð8ó    © )TN)r   Úboolr   úfloat | NoneÚreturnr   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      s   ø† ñ÷9÷ 9r   r   c                  ó   • \ rS rSrSrg)ÚAQueueé)   r   N)r   r   r    r!   r#   r   r   r   r&   r&   )   s   † Úr   r&   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 $˜x¨dÑ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   Úspawnr6   8   s&   € ô 	×Ò °4ÀÑE€AØ‡G�G„IØ€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()
Nr7   )r*   ÚgatherÚwait_forÚshieldÚTimeoutError)r   ÚtasksÚwaits      r   Úagatherr@   E   sr   é € ô �>Š>˜5Ð!€DðØÑÜ×"Ò"¤7§>¢>°$Ó#7ÀÑI×IÐIð 	ð	 �J‰Jð 	ñ 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)r9   N)Úis_aliveÚjoin)r   r>   r5   s      r   r:   r:   U   s'   € ó ˆØ�z‰z�|‰|ÙØ	�‰ˆwŽò r   )r   N)r,   z(Callable[..., Coroutine[Any, Any, None]]r-   útuple[Any, ...]r)   ú
str | Noner   zasyncio.Task[None])r,   zCallable[..., Any]r-   rD   r)   rE   r   úthreading.Thread)r>   zasyncio.Task[Any]r   r   r   ÚNone)r>   rF   r   r   r   rG   )r"   Ú
__future__r   Úqueuer*   r2   Útypingr   r   Úcollections.abcr   r   Ú_compatr	   r3   r
   Ú__annotations__ÚTaskr   ÚLockÚALockr   r   r&   r.   r6   r@   r:   r   r   r   Ú<module>rQ      s  ðòõ #ã Û Û ß !ß /å à×$Ñ$€ˆ	Ó $Ø—\‘\ $Ñ'€ˆÓ 'Ø‡~�~€Ø�‰€áˆCƒL€ô	9ˆE�K‰K˜‰Nô 	9ô	ˆW�]‰]˜1Ñô 	ð Øð4Ø/ð4à
ð4ð ð4ð õ	4ð Øð
Øð
à
ð
ð ð
ð õ	
ð FJ÷ ð  >B÷ ð r   