§
    eŠtjÒ#  ã                  óR  — d dl mZ d dl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 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ej        r G d„ de¦  «        Zd@d„Znd dlmZ d dlmZ  e e¦   «         d¦  «        ZdAd „Z G d!„ d"e¦  «        Z  ed#d$¬%¦  «        Z!erdBd)„Z"nej"        Z"dCd,„Z#dDd-„Z$dEd/„Z%dEd0„Z&d1d2œdFd9„Z' G d:„ d;¦  «        Z(dGd=„Z)eser	ej*        Z+dS  G d>„ d?¦  «        Z+dS )Hé    )ÚannotationsN)ÚContext)ÚAny)Ú	Awaitable)ÚCallable)Ú	Coroutine)ÚOptional)ÚTYPE_CHECKING)ÚTypeVar)ÚUnioné   )Úmemoized_propertyé   )Úexc)Úpy311)ÚLiteral)ÚProtocol)ÚSelf)Ú	TypeGuardÚ_Tc                  ó<   — e Zd ZU ded<   ded<   dd„Zdd„Zdd„ZdS )ÚgreenletÚboolÚdeadzOptional[Context]Ú
gr_contextÚfnúCallable[..., Any]Údriverc                ó   — d S ©N© ©Úselfr   r   s      ú_/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/util/_concurrency_py3k.pyÚ__init__zgreenlet.__init__(   ó   € € € ó    Úargr   Úreturnc                ó   — d S r    r!   )r#   r(   s     r$   Úthrowzgreenlet.throw*   ó   € Ø�4r'   Úvaluec                ó   — d S r    r!   )r#   r-   s     r$   Úswitchzgreenlet.switch-   r,   r'   N©r   r   r   r   )r(   r   r)   r   )r-   r   r)   r   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r%   r+   r/   r!   r'   r$   r   r   $   s_   € € € € € € Øˆ
ˆ
‰
Ø%Ð%Ð%Ñ%àIÐIÐIÐIð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð 	r'   r   r)   c                 ó   — d S r    r!   r!   r'   r$   Ú
getcurrentr6   0   r&   r'   )r6   )r   r   ÚeÚBaseExceptionr   c                óz   — t          | t          ¦  «         p%t          | t          j        t          j        f¦  «        S r    )Ú
isinstanceÚ	ExceptionÚasyncioÚTimeoutErrorÚCancelledError)r7   s    r$   Úis_exit_exceptionr?   =   s:   € õ ˜!�YÑ'Ô'Ð'ð ­:Ø	�GÔ ¥'Ô"8Ð9ñ,ô ,ð r'   c                  ó&   — e Zd ZU ded<   dZd
d„Zd	S )Ú_AsyncIoGreenletr   r   Tr   r   r   r   c                ó\   — t          j        | ||¦  «         t          r|j        | _        d S d S r    )r   r%   Ú_has_gr_contextr   r"   s      r$   r%   z_AsyncIoGreenlet.__init__O   s7   € ÝÔ˜$  FÑ+Ô+Ð+Ýð 	0Ø$Ô/ˆDŒOˆOˆOð	0ð 	0r'   Nr0   )r1   r2   r3   r4   Ú __sqlalchemy_greenlet_provider__r%   r!   r'   r$   rA   rA   J   s9   € € € € € € Ø€J€J�Jà'+Ð$ð0ð 0ð 0ð 0ð 0ð 0r'   rA   Ú_T_coT)Ú	covariantÚ	awaitableúAwaitable[_T_co]ú%TypeGuard[Coroutine[Any, Any, _T_co]]c                ó   — d S r    r!   ©rG   s    r$   ÚiscoroutinerL   Y   s   € à03°r'   úAwaitable[Any]ÚNonec                óP   — t          | ¦  «        r|                      ¦   «          d S d S r    )rL   ÚcloserK   s    r$   Ú_safe_cancel_awaitablerQ   a   s4   € õ �9ÑÔð Ø�ŠÑÔÐÐÐðð r'   c                 ó@   — t          ¦   «         } t          | dd¦  «        S )NrD   F)r6   Úgetattr)Úcurrents    r$   Úin_greenletrU   h   s   € Ý‰lŒl€GÝ�7Ð>ÀÑFÔFÐFr'   úAwaitable[_T]c                óº   — t          ¦   «         }t          |dd¦  «        s#t          | ¦  «         t          j        d¦  «        ‚|j                             | ¦  «        S )zÓAwaits an async function in a sync method.

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

    :param awaitable: The coroutine to call.

    rD   Fzjgreenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place?)r6   rS   rQ   r   ÚMissingGreenletÚparentr/   )rG   rT   s     r$   Ú
await_onlyrZ   m   sb   € õ ‰lŒl€GÝ�7Ð>ÀÑFÔFð 
Ý˜yÑ)Ô)Ð)åÔ!ð=ñ
ô 
ð 	
ð Œ>× Ò  Ñ+Ô+Ð+r'   c                ó(  — t          ¦   «         }t          |dd¦  «        sZt          ¦   «         }|                     ¦   «         r#t	          | ¦  «         t          j        d¦  «        ‚|                     | ¦  «        S |j         	                    | ¦  «        S )aé  Awaits an async function in a sync method.

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

    :param awaitable: The coroutine to call.

    .. deprecated:: 2.0.24 The ``await_fallback()`` function will be removed
       in SQLAlchemy 2.1.  Use :func:`_util.await_only` instead, running the
       function / program / etc. within a top-level greenlet that is set up
       using :func:`_util.greenlet_spawn`.

    rD   Fz˜greenlet_spawn has not been called and asyncio event loop is already running; can't call await_fallback() here. Was IO attempted in an unexpected place?)
r6   rS   Úget_event_loopÚ
is_runningrQ   r   rX   Úrun_until_completerY   r/   )rG   rT   Úloops      r$   Úawait_fallbackr`   ‡   s“   € õ  ‰lŒl€GÝ�7Ð>ÀÑFÔFð 
2ÝÑÔˆØ�?Š?ÑÔð 	Ý" 9Ñ-Ô-Ð-åÔ%ð;ñô ð ð
 ×&Ò& yÑ1Ô1Ð1àŒ>× Ò  Ñ+Ô+Ð+r'   F)Ú_require_awaitr   úCallable[..., _T]Úargsr   ra   Úkwargsc             �  óD  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 )aG  Runs a sync function ``fn`` in a new greenlet.

    The sync function can then use :func:`await_only` 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.)
rA   r6   r/   r   r8   r+   ÚsysÚexc_infor   ÚAwaitRequired)r   ra   rc   rd   ÚcontextÚswitch_occurredÚresultr-   s           r$   Úgreenlet_spawnrl   §   sê   è è € õ" ˜r¥:¡<¤<Ñ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 Á%A>Á=A>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<   ÚLock©r#   s    r$   ÚmutexzAsyncAdaptedLock.mutex×   s   € õ Œ|‰~Œ~Ðr'   r   c                óN   — t          | j                             ¦   «         ¦  «        S r    )r`   rs   Úacquirerr   s    r$   Ú	__enter__zAsyncAdaptedLock.__enter__Ý   s    € õ ˜dœj×0Ò0Ñ2Ô2Ñ3Ô3Ð3r'   r(   r   ÚkwrN   c                ó8   — | j                              ¦   «          d S r    )rs   Úrelease)r#   r(   rw   s      r$   Ú__exit__zAsyncAdaptedLock.__exit__â   s   € ØŒ
×ÒÑÔÐÐÐr'   N)r)   ro   ©r)   r   )r(   r   rw   r   r)   rN   )r1   r2   r3   r   rs   rv   rz   r!   r'   r$   rn   rn   Ö   s[   € € € € € Øðð ð ñ Ôðð
4ð 4ð 4ð 4ð
ð ð ð ð ð r'   rn   úasyncio.AbstractEventLoopc                 ó”   — 	 t          j        ¦   «         S # t          $ r Y nw xY wt          j        ¦   «                              ¦   «         S )z}vendor asyncio.get_event_loop() for python 3.7 and above.

    Python 3.10 deprecates get_event_loop() as a standalone.

    )r<   Úget_running_loopÚRuntimeErrorÚget_event_loop_policyr\   r!   r'   r$   r\   r\   æ   sS   € ðÝÔ'Ñ)Ô)Ð)øÝð ð ð àˆðøøøõ Ô(Ñ*Ô*×9Ò9Ñ;Ô;Ð;s   ‚ •
"¡"c                  óV   — e Zd ZU dZded<   dd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dd„ZdS )Ú_Runnerz#Runner implementation for test onlyz6Union[None, asyncio.AbstractEventLoop, Literal[False]]Ú_loopr)   rN   c                ó   — d | _         d S r    )rƒ   rr   s    r$   r%   z_Runner.__init__ý   s   € ØˆDŒJˆJˆJr'   r   c                ó.   — |                       ¦   «          | S r    )Ú
_lazy_initrr   s    r$   rv   z_Runner.__enter__   s   € Ø�OŠOÑÔÐØˆKr'   Úexc_typer   Úexc_valÚexc_tbc                ó.   — |                       ¦   «          d S r    )rP   )r#   r‡   rˆ   r‰   s       r$   rz   z_Runner.__exit__  s   € Ø�JŠJ‰LŒLˆLˆLˆLr'   c                ó  — | j         ry	 | j                              | j                              ¦   «         ¦  «         | j                              ¦   «          d| _         d S # | j                              ¦   «          d| _         w xY wd S )NF)rƒ   r^   Úshutdown_asyncgensrP   rr   s    r$   rP   z_Runner.close  s‘   € ØŒzð 'ð'Ø”J×1Ò1Øœ
×5Ò5Ñ7Ô7ñô ð ð ”J×$Ò$Ñ&Ô&Ð&Ø!&�D”J�J�Jøð ”J×$Ò$Ñ&Ô&Ð&Ø!&�D”JÐ&Ð&Ð&Ð&ð'ð 's   ‰1A Á"A>r|   c                óJ   — |                       ¦   «          | j        sJ ‚| j        S )zReturn embedded event loop.)r†   rƒ   rr   s    r$   Úget_loopz_Runner.get_loop  s'   € à�OŠOÑÔÐØ”:ÐÐ�:Ø”:Ðr'   ÚcoroúCoroutine[Any, Any, _T]r   c                óp   — |                       ¦   «          | j        sJ ‚| j                             |¦  «        S r    )r†   rƒ   r^   )r#   r�   s     r$   Úrunz_Runner.run  s5   € Ø�OŠOÑÔÐØ”:ÐÐ�:Ø”:×0Ò0°Ñ6Ô6Ð6r'   c                óx   — | j         du rt          d¦  «        ‚| j         €t          j        ¦   «         | _         d S d S )NFzRunner is closed)rƒ   r   r<   Únew_event_looprr   s    r$   r†   z_Runner._lazy_init  sB   € ØŒz˜UÐ"Ð"Ý"Ð#5Ñ6Ô6Ð6ØŒzÐ!Ý$Ô3Ñ5Ô5�”
�
�
ð "Ð!r'   N)r)   rN   )r)   r   )r‡   r   rˆ   r   r‰   r   r)   rN   ©r)   r|   )r�   r�   r)   r   )r1   r2   r3   Ú__doc__r4   r%   rv   rz   rP   rŽ   r’   r†   r!   r'   r$   r‚   r‚   ø   s´   € € € € € € Ø1Ð1àEÐEÐEÑEð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð	'ð 	'ð 	'ð 	'ð	ð 	ð 	ð 	ð	7ð 	7ð 	7ð 	7ð
	6ð 	6ð 	6ð 	6ð 	6ð 	6r'   r‚   )r)   r   )r7   r8   r)   r   )rG   rH   r)   rI   )rG   rM   r)   rN   r{   )rG   rV   r)   r   )
r   rb   rc   r   ra   r   rd   r   r)   r   r•   ),Ú
__future__r   r<   Úcontextvarsr   rf   Útypingr   r   r   r   r	   r
   r   r   Úlanghelpersr   Ú r   Úutilr   Úutil.typingr   r   r   r   r   r   r6   ÚhasattrrC   r?   rA   rE   rL   rQ   rU   rZ   r`   rl   rn   r\   ÚRunnerr‚   r!   r'   r$   ú<module>r       sh  ðð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #à€WˆT�]„]€à	Ôð "ð
ð 
ð 
ð 
ð 
�8ñ 
ô 
ð 
ð &Ð%Ð%Ð%Ð%ð $Ð#Ð#Ð#Ð#Ð#Ø!Ð!Ð!Ð!Ð!Ð!ð �'˜*˜*™,œ,¨Ñ5Ô5€ðð ð ð ð0ð 0ð 0ð 0ð 0�xñ 0ô 0ð 0ð 	ˆ� 4Ð(Ñ(Ô(€àð &ð4ð 4ð 4ð 4ð 4ð
 Ô%€Kðð ð ð ðGð Gð Gð Gð
,ð ,ð ,ð ,ð4,ð ,ð ,ð ,ðF !ð,ð ,ð ,ð ,ð ,ð ,ð^ð ð ð ð ñ ô ð ð <ð <ð <ð <ð ð ,6˜ð ,6ØŒn€G€G€Gð(6ð (6ð (6ð (6ð (6ñ (6ô (6ð (6ð (6ð (6r'   