Ë
    V.jò$  ã                  óV  — 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d0d„Z G d„ de«      Z  edd ¬!«      Z!er		 	 	 	 d1d"„Z"nejD                  Z"d2d#„Z#d3d$„Z$d4d%„Z%d4d&„Z&d'd(œ	 	 	 	 	 	 	 	 	 d5d)„Z' G d*„ d+«      Z(d6d,„Z)eserejT                  Z+y G d-„ d.«      Z+y)7é    )Ú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y)ÚgreenletÚboolÚdeadzOptional[Context]Ú
gr_contextc                 ó   — y ©N© ©ÚselfÚfnÚdrivers      úcC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\sqlalchemy/util/_concurrency_py3k.pyÚ__init__zgreenlet.__init__(   s   € Àcó    c                 ó   — y r   r   )r    Úargs     r#   Úthrowzgreenlet.throw*   ó   € Ør%   c                 ó   — y r   r   )r    Úvalues     r#   Úswitchzgreenlet.switch-   r)   r%   N©r!   zCallable[..., Any]r"   r   )r'   r   Úreturnr   )r+   r   r.   r   )Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r$   r(   r,   r   r%   r#   r   r   $   s   … Ø‹
Ø%Ó%ãIó	ô	r%   r   c                  ó   — y r   r   r   r%   r#   Ú
getcurrentr4   0   s   €  #r%   )r4   )r   r   c                ó|   — t        | t        «       xs* t        | t        j                  t        j                  f«      S r   )Ú
isinstanceÚ	ExceptionÚasyncioÚTimeoutErrorÚCancelledError)Úes    r#   Úis_exit_exceptionr<   =   s8   € ô ˜!œYÓ'Ð'ò ¬:Ø	ŒG× Ñ ¤'×"8Ñ"8Ð9ó,ð r%   c                  ó$   — e Zd ZU ded<   dZdd„Zy)Ú_AsyncIoGreenletr   r   Tc                ób   — t        j                  | ||«       t        r|j                  | _        y y r   )r   r$   Ú_has_gr_contextr   r   s      r#   r$   z_AsyncIoGreenlet.__init__O   s)   € Ü×Ñ˜$  FÔ+ÝØ$×/Ñ/ˆD�Oð r%   Nr-   )r/   r0   r1   r2   Ú __sqlalchemy_greenlet_provider__r$   r   r%   r#   r>   r>   J   s   … Ø
ƒJà'+Ð$ô0r%   r>   Ú_T_coT)Ú	covariantc                 ó   — y r   r   ©Ú	awaitables    r#   ÚiscoroutinerG   Y   s   € à03r%   c                ó<   — t        | «      r| j                  «        y y r   )rG   ÚcloserE   s    r#   Ú_safe_cancel_awaitablerJ   a   s   € ô �9ÔØ�‰Õð r%   c                 ó0   — t        «       } t        | dd«      S )NrA   F)r4   Úgetattr)Úcurrents    r#   Úin_greenletrN   h   s   € Ü‹l€GÜ�7Ð>ÀÓFÐFr%   c                ó¦   — t        «       }t        |dd«      s t        | «       t        j                  d«      ‚|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_only` calls cannot be nested.

    :param awaitable: The coroutine to call.

    rA   Fzjgreenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place?)r4   rL   rJ   r   ÚMissingGreenletÚparentr,   )rF   rM   s     r#   Ú
await_onlyrR   m   sO   € ô ‹l€GÜ�7Ð>ÀÔFÜ˜yÔ)ä×!Ñ!ð=ó
ð 	
ð �>‰>× Ñ  Ó+Ð+r%   c                óü   — t        «       }t        |dd«      sKt        «       }|j                  «       r t	        | «       t        j                  d«      ‚|j                  | «      S |j                  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`.

    rA   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?)
r4   rL   Úget_event_loopÚ
is_runningrJ   r   rP   Úrun_until_completerQ   r,   )rF   rM   Úloops      r#   Úawait_fallbackrX   ‡   sr   € ô  ‹l€GÜ�7Ð>ÀÔFÜÓˆØ�?‰?ÔÜ" 9Ô-ä×%Ñ%ð;óð ð
 ×&Ñ& yÓ1Ð1à�>‰>× Ñ  Ó+Ð+r%   F)Ú_require_awaitc             �  ób  K  — t        | t        «       «      }d} |j                  |i |¤Ž}|j                  s+d}	 |ƒ d{  –—† }|j                  |«      }|j                  sŒ+|r|st        j                  d«      ‚|S 7 Œ=# t        $ r$  |j
                  t        j                  «       Ž }Y ŒVw xY w­w)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.)
r>   r4   r,   r   ÚBaseExceptionr(   ÚsysÚexc_infor   ÚAwaitRequired)r!   rY   ÚargsÚkwargsÚcontextÚswitch_occurredÚresultr+   s           r#   Úgreenlet_spawnrd   §   s·   è ø€ ô" ˜r¤:£<Ó0€Gð
 €OØˆW�^‰^˜TÐ, VÑ,€FØ�lŠlØˆð
	+ð !—LˆEð —^‘^ EÓ*ˆFð �l‹lñ ™oÜ×ÑðGó
ð 	
ð
 €Mð !ùÜò 	4ð #�W—]‘]¤C§L¡L£NÐ3ŠFð		4üs?   ‚7B/ºA? ¿A=Á A? ÁB/Á"B/Á=A? Á?*B,Â)B/Â+B,Â,B/c                  ó.   — e Zd Zedd„«       Zdd„Zdd„Zy)ÚAsyncAdaptedLockc                ó*   — t        j                  «       S r   )r8   ÚLock©r    s    r#   ÚmutexzAsyncAdaptedLock.mutex×   s   € ô �|‰|‹~Ðr%   c                óH   — t        | j                  j                  «       «      S r   )rX   rj   Úacquireri   s    r#   Ú	__enter__zAsyncAdaptedLock.__enter__Ý   s   € ô ˜dŸj™j×0Ñ0Ó2Ó3Ð3r%   c                ó8   — | j                   j                  «        y r   )rj   Úrelease)r    r'   Úkws      r#   Ú__exit__zAsyncAdaptedLock.__exit__â   s   € Ø�
‰
×ÑÕr%   N)r.   zasyncio.Lock©r.   r   )r'   r   rp   r   r.   ÚNone)r/   r0   r1   r   rj   rm   rq   r   r%   r#   rf   rf   Ö   s   „ Øòó ðó
4ô
r%   rf   c                 óŽ   — 	 t        j                  «       S # t        $ r Y nw xY wt        j                  «       j	                  «       S )z}vendor asyncio.get_event_loop() for python 3.7 and above.

    Python 3.10 deprecates get_event_loop() as a standalone.

    )r8   Úget_running_loopÚRuntimeErrorÚget_event_loop_policyrT   r   r%   r#   rT   rT   æ   sB   € ðÜ×'Ñ'Ó)Ð)øÜò áðúô ×(Ñ(Ó*×9Ñ9Ó;Ð;s   ‚ –	"¡"c                  óT   — 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y)Ú_Runnerz#Runner implementation for test onlyz6Union[None, asyncio.AbstractEventLoop, Literal[False]]Ú_loopc                ó   — d | _         y r   )rz   ri   s    r#   r$   z_Runner.__init__ý   s	   € ØˆD�Jr%   c                ó&   — | j                  «        | S r   )Ú
_lazy_initri   s    r#   rm   z_Runner.__enter__   s   € Ø�O‰OÔØˆKr%   c                ó$   — | j                  «        y r   )rI   )r    Úexc_typeÚexc_valÚexc_tbs       r#   rq   z_Runner.__exit__  s   € Ø�J‰J�Lr%   c                ó  — | j                   rV	 | j                   j                  | j                   j                  «       «       | j                   j                  «        d| _         y y # | j                   j                  «        d| _         w xY w)NF)rz   rV   Úshutdown_asyncgensrI   ri   s    r#   rI   z_Runner.close  si   € Ø�zŠzð'Ø—J‘J×1Ñ1ØŸ
™
×5Ñ5Ó7ôð —J‘J×$Ñ$Ô&Ø!&�D•Jð øð —J‘J×$Ñ$Ô&Ø!&�D•Jús   Ž3A$ Á$#Bc                óV   — | j                  «        | j                  sJ ‚| j                  S )zReturn embedded event loop.)r}   rz   ri   s    r#   Úget_loopz_Runner.get_loop  s"   € à�O‰OÔØ—:’:Ð�:Ø—:‘:Ðr%   c                ót   — | j                  «        | j                  sJ ‚| j                  j                  |«      S r   )r}   rz   rV   )r    Úcoros     r#   Úrunz_Runner.run  s-   € Ø�O‰OÔØ—:’:Ð�:Ø—:‘:×0Ñ0°Ó6Ð6r%   c                ó‚   — | j                   du rt        d«      ‚| j                   €t        j                  «       | _         y y )NFzRunner is closed)rz   rv   r8   Únew_event_loopri   s    r#   r}   z_Runner._lazy_init  s9   € Ø�z‰z˜UÑ"Ü"Ð#5Ó6Ð6Ø�z‰zÐ!Ü$×3Ñ3Ó5�•
ð "r%   N)r.   rs   )r.   r   )r   r   r€   r   r�   r   r.   rs   ©r.   zasyncio.AbstractEventLoop)r‡   zCoroutine[Any, Any, _T]r.   r   )r/   r0   r1   Ú__doc__r2   r$   rm   rq   rI   r…   rˆ   r}   r   r%   r#   ry   ry   ø   s.   … Ù1àEÓEó	ó	ó	ó	'ó	ó	7ô
	6r%   ry   )r.   r   )r;   r[   r.   r   )rF   zAwaitable[_T_co]r.   z%TypeGuard[Coroutine[Any, Any, _T_co]])rF   zAwaitable[Any]r.   rs   rr   )rF   zAwaitable[_T]r.   r   )
r!   zCallable[..., _T]r_   r   rY   r   r`   r   r.   r   r‹   ),Ú
__future__r   r8   Úcontextvarsr   r\   Útypingr   r   r   r   r	   r
   r   r   Úlanghelpersr   Ú r   Úutilr   Úutil.typingr   r   r   r   r   r   r4   Úhasattrr@   r<   r>   rB   rG   rJ   rN   rR   rX   rd   rf   rT   ÚRunnerry   r   r%   r#   Ú<module>r–      s:  ðõ #ã Ý Û 
Û Ý Ý Ý Ý Ý Ý  Ý Ý å *Ý Ý Ý !Ý "Ý Ý #áˆTƒ]€à	×Òô
�8ô 
ô &õ $Ý!ñ ™*›,¨Ó5€óô0�xô 0ñ 	� 4Ô(€áð4Ø#ð4à	.ô4ð
 ×%Ñ%€KóóGó
,ó4,ðF !ñ,Øð,àð,ð ð,ð ð	,ð
 ó,÷^ñ ó <ñ ™Ø�n‰n�G÷(6ò (6r%   