§
    ÕóÉj‘"  ã                  óŠ  — 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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d7d„ZdZd8d„Z G d„ d¦  «        Z e¦   «         Zer edd¬ ¦  «        Zd9d$„Znej        Zd:d'„Zd;d(„Zd<d*„ZeZd+d,œd=d2„Z G d3„ d4¦  «        Z G d5„ d6¦  «        Z dS )>z&asyncio-related concurrency functions.é    )ÚannotationsN)ÚAny)Ú	Awaitable)ÚCallable)Ú	Coroutine)ÚNoReturn)ÚTYPE_CHECKING)Ú	TypeGuard)ÚTypeVaré   )Úmemoized_propertyé   )ÚexcÚ_TÚeÚBaseExceptionÚreturnÚboolc                óz   — t          | t          ¦  «         p%t          | t          j        t          j        f¦  «        S ©N)Ú
isinstanceÚ	ExceptionÚasyncioÚTimeoutErrorÚCancelledError)r   s    ú€/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/site-packages/sqlalchemy/util/concurrency.pyÚis_exit_exceptionr      s:   € õ ˜!�YÑ'Ô'Ð'ð ­:Ø	�GÔ ¥'Ô"8Ð9ñ,ô ,ð ó    zÚThe SQLAlchemy asyncio module requires that the Python 'greenlet' library is installed.  In order to ensure this dependency is available, use the 'sqlalchemy[asyncio]' install target:  'pip install sqlalchemy[asyncio]'Úargr   Úkwr   c                 ó*   — t          t          ¦  «        ‚r   )ÚImportErrorÚ_ERROR_MESSAGE)r   r    s     r   Ú_not_implementedr$   .   s   € Ý
•nÑ
%Ô
%Ð%r   c                  ó2   — e Zd ZdZdZddœdd	„Zd
„ Zdd„ZdS )Ú_concurrency_shim_clszLate import shim for greenlet)Ú_has_greenletÚgreenletÚ_AsyncIoGreenletÚ
getcurrentT©Úraise_r,   r   r   ÚNonec               ó¬  — dt          ¦   «         v rdS t          s 	 ddlma ddlma d| _        t          t          ¦   «         d¦  «        a G d„ d	t          ¦  «        at          | _        t          | _        t          | _        dS # t          $ rF}t          sdad
| _        |  	                    ¦   «          |rt          t          ¦  «        |‚Y d}~dS d}~ww xY w)z(Import greenlet and initialize the classr(   Nr   )r*   )r(   TÚ
gr_contextc                  ó&   — e Zd ZU ded<   dZd
d„Zd	S )r)   r   ÚdeadTÚfnúCallable[..., Any]Údriverr(   c                óh   — t                                | ||¦  «         t          r|j        | _        d S d S r   )r(   Ú__init__Ú_has_gr_contextr/   )Úselfr2   r4   s      r   r6   z_AsyncIoGreenlet.__init__`   s:   € Ý×%Ò% d¨B°Ñ7Ô7Ð7Ý&ð <Ø*0Ô*;˜œ˜˜ð<ð <r   N)r2   r3   r4   r(   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__Ú __sqlalchemy_greenlet_provider__r6   © r   r   r)   r)   [   s9   € € € € € € Ø�
�
‘
à37Ð0ð<ð <ð <ð <ð <ð <r   r)   F)Úglobalsr	   r(   r*   r'   Úhasattrr7   r)   r"   Ú_initialize_no_greenletr#   )r8   r,   r   s      r   Ú_initializez!_concurrency_shim_cls._initialize<   s,  € à�™œÐ"Ð"ØˆFåð 	#ð"	5Ø+Ð+Ð+Ð+Ð+Ð+Ø)Ð)Ð)Ð)Ð)Ð)ð "&ˆDÔõ &¥j¡l¤l°LÑAÔAˆOð<ð <ð <ð <ð <¥8ñ <ô <ð <õ %ˆDŒMÝ(ˆDŒOÝ$4ˆDÔ!Ð!Ð!øõ? ð 	9ð 	9ð 	9Ý ð  à�Ø!&ˆDÔØ×(Ò(Ñ*Ô*Ð*Øð 9Ý!¥.Ñ1Ô1°qÐ8ð9ð 9ð 9ð 9ð 9ð 9øøøøð	9øøøs   ›B Â
CÂ;CÃCc                óN   — t           | _        t           | _        t           | _        d S r   )r$   r*   r(   r)   ©r8   s    r   rA   z-_concurrency_shim_cls._initialize_no_greenleti   s   € Ý*ˆŒÝ(ˆŒÝ 0ˆÔÐÐr   ÚkeyÚstrr   c                óz   — || j         v r$|                      ¦   «          t          | |¦  «        S t          |¦  «        ‚r   )Ú	__slots__rB   ÚgetattrÚAttributeError)r8   rE   s     r   Ú__getattr__z!_concurrency_shim_cls.__getattr__n   s?   € Ø�$”.Ð Ð Ø×ÒÑÔÐÝ˜4 Ñ%Ô%Ð%å  Ñ%Ô%Ð%r   N)r,   r   r   r-   )rE   rF   r   r   )r9   r:   r;   Ú__doc__rH   rB   rA   rK   r>   r   r   r&   r&   2   sh   € € € € € Ø'Ð'ð€Ið -1ð +5ð +5ð +5ð +5ð +5ð +5ðZ1ð 1ð 1ð
&ð &ð &ð &ð &ð &r   r&   Ú_T_coT)Ú	covariantÚ	awaitableúAwaitable[_T_co]ú%TypeGuard[Coroutine[Any, Any, _T_co]]c                ó   — d S r   r>   ©rO   s    r   ÚiscoroutinerT   {   s   € à03°r   úAwaitable[Any]r-   c                óP   — t          | ¦  «        r|                      ¦   «          d S d S r   )rT   ÚcloserS   s    r   Ú_safe_cancel_awaitablerX   ƒ   s4   € õ �9ÑÔð Ø�ŠÑÔÐÐÐðð r   c                 óV   — t                                ¦   «         } t          | dd¦  «        S )Nr=   F)Ú_concurrency_shimr*   rI   )Úcurrents    r   Úin_greenletr\   Š   s&   € Ý×*Ò*Ñ,Ô,€GÝ�7Ð>ÀÑFÔFÐFr   úAwaitable[_T]c                óâ   — t                                ¦   «         }t          |dd¦  «        s#t          | ¦  «         t	          j        d¦  «        ‚|j        sJ ‚|j                             | ¦  «        S )zÏAwaits an async function in a sync method.

    The sync method must be inside a :func:`greenlet_spawn` context.
    :func:`await_` calls cannot be nested.

    :param awaitable: The coroutine to call.

    r=   Fzfgreenlet_spawn has not been called; can't call await_() here. Was IO attempted in an unexpected place?)rZ   r*   rI   rX   r   ÚMissingGreenletÚparentÚswitch)rO   r[   s     r   Úawait_rb   �   sx   € õ  ×*Ò*Ñ,Ô,€GÝ�7Ð>ÀÑFÔFð 
Ý˜yÑ)Ô)Ð)åÔ!ð=ñ
ô 
ð 	
ð Œ>ÐÐÐØŒ>× Ò  Ñ+Ô+Ð+r   F)Ú_require_awaitr2   úCallable[..., _T]Úargsrc   Úkwargsc             �  óp  K  — t                                | t                                ¦   «         ¦  «        }d} |j        |i |¤Ž}|j        sSd}	 |ƒ d{V —†}|                     |¦  «        }n+# t
          $ r  |j        t          j        ¦   «         Ž }Y nw xY w|j        ¯S|r|st          j
        d¦  «        ‚|S )aC  Runs a sync function ``fn`` in a new greenlet.

    The sync function can then use :func:`await_` to wait for async
    functions.

    :param fn: The sync callable to call.
    :param \*args: Positional arguments to pass to the ``fn`` callable.
    :param \*\*kwargs: Keyword arguments to pass to the ``fn`` callable.
    FTNz¶The current operation required an async execution but none was detected. This will usually happen when using a non compatible DBAPI driver. Please ensure that an async DBAPI is used.)rZ   r)   r*   ra   r1   r   ÚthrowÚsysÚexc_infor   ÚAwaitRequired)r2   rc   re   rf   ÚcontextÚswitch_occurredÚresultÚvalues           r   Úgreenlet_spawnrp   ­   sþ   è è € õ"  ×0Ò0Ø
Õ×(Ò(Ñ*Ô*ñô €Gð €OàˆWŒ^˜TÐ, VÐ,Ð,€FØŒlð +Øˆð
	+ð !�L�L�L�L�L�LˆEð —^’^ EÑ*Ô*ˆFˆFøõ ð 	4ð 	4ð 	4ð #�W”]¥C¤L¡N¤NÐ3ˆFˆFˆFð		4øøøð Œlð +ð ð 
˜oð 
ÝÔðGñ
ô 
ð 	
ð
 €Ms   ÁA, Á,%BÂBc                  ó6   — e Zd Zedd„¦   «         Zdd„Zdd
„ZdS )ÚAsyncAdaptedLockr   úasyncio.Lockc                ó(   — t          j        ¦   «         S r   )r   ÚLockrD   s    r   ÚmutexzAsyncAdaptedLock.mutexà   s   € õ Œ|‰~Œ~Ðr   r   c                óN   — t          | j                             ¦   «         ¦  «        S r   )rb   rv   ÚacquirerD   s    r   Ú	__enter__zAsyncAdaptedLock.__enter__æ   s    € õ �d”j×(Ò(Ñ*Ô*Ñ+Ô+Ð+r   r   r   r    r-   c                ó8   — | j                              ¦   «          d S r   )rv   Úrelease)r8   r   r    s      r   Ú__exit__zAsyncAdaptedLock.__exit__ë   s   € ØŒ
×ÒÑÔÐÐÐr   N)r   rs   ©r   r   )r   r   r    r   r   r-   )r9   r:   r;   r   rv   ry   r|   r>   r   r   rr   rr   ß   s[   € € € € € Øðð ð ñ Ôðð
,ð ,ð ,ð ,ð
ð ð ð ð ð r   rr   c                  ó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 onlyr   r-   c                ó6   — t          j        ¦   «         | _        d S r   )r   ÚRunnerÚrunnerrD   s    r   r6   z_AsyncUtil.__init__ò   s   € å”nÑ&Ô&ˆŒˆˆr   r2   ú&Callable[..., Coroutine[Any, Any, _T]]re   r   rf   r   c                óB   — | j                               ||i |¤Ž¦  «        S )zRun coroutine on the loop)r‚   Úrun©r8   r2   re   rf   s       r   r…   z_AsyncUtil.runö   s'   € ð Œ{�Š˜r˜r 4Ð2¨6Ð2Ð2Ñ3Ô3Ð3r   rd   c                ó6  — t                                d¬¦  «         t           j        rk| j                             ¦   «                              ¦   «         rt          ¦   «         sJ ‚ ||i |¤ŽS | j                             t          |g|¢R i |¤Ž¦  «        S  ||i |¤ŽS )z3Run sync function in greenlet. Support nested callsFr+   )	rZ   rB   r'   r‚   Úget_loopÚ
is_runningr\   r…   rp   r†   s       r   Úrun_in_greenletz_AsyncUtil.run_in_greenletÿ   s¯   € õ 	×%Ò%¨UÐ%Ñ3Ô3Ð3åÔ*ð 	'ØŒ{×#Ò#Ñ%Ô%×0Ò0Ñ2Ô2ð Lå"‘}”}Ð$Ð$Ð$Ø�r˜4Ð* 6Ð*Ð*Ð*à”{—’¥~°bÐ'J¸4Ð'JÐ'JÐ'JÀ6Ð'JÐ'JÑKÔKÐKà�2�tÐ&˜vÐ&Ð&Ð&r   c                ó8   — | j                              ¦   «          d S r   )r‚   rW   rD   s    r   rW   z_AsyncUtil.close  s   € ØŒ×ÒÑÔÐÐÐr   N)r   r-   )r2   rƒ   re   r   rf   r   r   r   )r2   rd   re   r   rf   r   r   r   )r9   r:   r;   rL   r6   r…   rŠ   rW   r>   r   r   r   r   ï   sj   € € € € € Ø0Ð0ð'ð 'ð 'ð 'ð4ð 4ð 4ð 4ð'ð 'ð 'ð 'ð ð ð ð ð ð r   r   )r   r   r   r   )r   r   r    r   r   r   )rO   rP   r   rQ   )rO   rU   r   r-   r}   )rO   r]   r   r   )
r2   rd   re   r   rc   r   rf   r   r   r   )!rL   Ú
__future__r   r   ri   Útypingr   r   r   r   r   r	   r
   r   Úlanghelpersr   Ú r   r   r   r#   r$   r&   rZ   rM   rT   rX   r\   rb   Ú
await_onlyrp   rr   r   r>   r   r   ú<module>r‘      sj  ðð -Ð ,à "Ð "Ð "Ð "Ð "Ð "à €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð à€WˆT�]„]€ðð ð ð ð(ð ð&ð &ð &ð &ðA&ð A&ð A&ð A&ð A&ñ A&ô A&ð A&ðH *Ð)Ñ+Ô+Ð àð &ØˆG�G tÐ,Ñ,Ô,€Eð4ð 4ð 4ð 4ð 4ð
 Ô%€Kðð ð ð ðGð Gð Gð Gð
,ð ,ð ,ð ,ð6 €
ð !ð/ð /ð /ð /ð /ð /ðdð ð ð ð ñ ô ð ð !ð !ð !ð !ð !ñ !ô !ð !ð !ð !r   