
    ,hH#                       S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKrSSKJr  SSKJr  SSKJr  SSKJr  \" S\S9r\" S\SS9r\" S\S9r " S S\\   5      r " S S \\   \R>                  5      r  " S! S"\ \   5      r!    S&S# jr" " S$ S%\\   5      r#g)'    )annotationsN)Any)AsyncGenerator)AsyncIterator)	Awaitable)Callable)ClassVar)Dict)	Generator)Generic)NoReturn)Optional)overload)Tuple)TypeVar   )exc   )util)Literal)Self_T)bound_T_coT)r   	covariant_PTc                  *   \ rS rSr% 0 rS\S'   Sr\SS j5       r\SS j5       rSS jr\	 S     SS	 jj5       r
\	      SS
 j5       r\\	 S       SS jj5       5       r\\	 S       SS jj5       5       r\	 S       SS jj5       rSrg)ReversibleProxy(   zCClassVar[Dict[weakref.ref[Any], weakref.ref[ReversibleProxy[Any]]]]_proxy_objects)__weakref__c                    g N selftargets     S/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/ext/asyncio/base.py_assign_proxiedReversibleProxy._assign_proxied.   s    36    c                    g r#   r$   r%   s     r(   r)   r*   1   s    58r+   c                    Ubr  [         R                  " U[        R                  5      n[         R                  " U [        R
                  " [        R                  U5      5      nU[        R                  U'   U$ r#   )weakrefrefr   _target_gced	functoolspartialr    )r&   r'   
target_ref	proxy_refs       r(   r)   r*   4   sb    +2;;44,J  !!/">">
KI :CO**:6r+   Nc                <    U R                   R                  US 5        g r#   )r    pop)clsr/   r4   s      r(   r0   ReversibleProxy._target_gcedA   s     	sD)r+   c                    [        5       er#   NotImplementedError)r7   r'   additional_kws      r(   _regenerate_proxy_for_target,ReversibleProxy._regenerate_proxy_for_targetI   s     "##r+   c                    g r#   r$   r7   r'   
regenerater<   s       r(   _retrieve_proxy_for_target*ReversibleProxy._retrieve_proxy_for_targetO   s     r+   c                    g r#   r$   r@   s       r(   rB   rC   U   s     r+   c                     U R                   [        R                  " U5         nU" 5       nUb  U$  U(       a  U R                  " U40 UD6$ g ! [         a     N'f = fr#   )r    r.   r/   KeyErrorr=   )r7   r'   rA   r<   r4   proxys         r(   rB   rC   [   sk    	**7;;v+>?I KE  ! 33FLmLL  		s   #A 
AAr$   )r'   r   returnr   )r'   NonerH   rI   )r'   Optional[_PT]rH   rJ   r#   )r/   zweakref.ref[_PT]r4   zOptional[weakref.ref[Self]]rH   rI   )r'   r   r<   r   rH   r   ).)r'   r   rA   zLiteral[True]r<   r   rH   r   )T)r'   r   rA   boolr<   r   rH   zOptional[Self])__name__
__module____qualname____firstlineno__r    __annotations__	__slots__r   r)   classmethodr0   r=   rB   __static_attributes__r$   r+   r(   r   r   (   sT    	    !I6 68 8  26** /* 
	* * $$+.$	$ $
 69&3LO	   -1&*DG	   -1&*DG	 r+   r   c                      \ rS rSrSr\R                  S	S
S jj5       rSS jrSS jr	\R                          SS j5       r
SS jrSrg)StartableContextn   r$   c                   #    [        5       e7fr#   r:   )r&   is_ctxmanagers     r(   startStartableContext.startq   s     !##s   c                >    U R                  5       R                  5       $ r#   )rY   	__await__r&   s    r(   r\   StartableContext.__await__u   s    zz|%%''r+   c                <   #    U R                  SS9I S h  vN $  N7f)NT)rX   )rY   r]   s    r(   
__aenter__StartableContext.__aenter__x   s     ZZdZ3333s   c                   #    g 7fr#   r$   )r&   type_value	tracebacks       r(   	__aexit__StartableContext.__aexit__{   s
      	s   c                \    [         R                  " SU R                  R                  -  5      e)Nz@%s context has not been started and object has not been awaited.)	async_excAsyncContextNotStarted	__class__rL   r]   s    r(   _raise_for_not_started'StartableContext._raise_for_not_started   s*    ..N~~&&(
 	
r+   NFrX   rK   rH   r   )rH   zGenerator[Any, Any, _T_co])rH   r   )rc   r   rd   r   re   r   rH   Optional[bool])rH   r   )rL   rM   rN   rO   rQ   abcabstractmethodrY   r\   r`   rf   rl   rS   r$   r+   r(   rU   rU   n   sh    I$ $(4 	!$14	 

r+   rU   c                  b    \ rS rSr% SrS\S'         S	S jrS
SS jjr        SS jrSr	g)GeneratorStartableContext   genzAsyncGenerator[_T_co, Any]rw   c                    U" U0 UD6U l         g r#   rv   )r&   funcargskwdss       r(   __init__"GeneratorStartableContext.__init__   s     &&r+   c                   #     [         R                  " U R                  5      I S h  vN nU(       d"  U R                  R                  5       I S h  vN   U$  N/! [         a    [	        S5      S ef = f N"7f)Nzgenerator didn't yield)r   anext_rw   StopAsyncIterationRuntimeErroraclose)r&   rX   start_values      r(   rY   GeneratorStartableContext.start   sh     	C $DHH 55K ((//### 6! 	C78dB	C $s7   A5#A AA $A5A3A5A A00A5c                   #    Uc4   [         R                  " U R                  5      I S h  vN   [        S5      eUc  U" 5       n U R                  R                  U5      I S h  vN   [        S5      e NH! [         a     gf = f N!! [         a  nXBLs S nA$ S nAf[         a>  nXBL a   S nAg[        U[        [        45      (       a  UR                  UL a   S nAge S nAf[         a  nXBLa  e  S nAgS nAff = f7f)Nzgenerator didn't stopFz$generator didn't stop after athrow())
r   r   rw   r   r   athrow
isinstanceStopIteration	__cause__BaseException)r&   typrd   re   r   s        r(   rf   #GeneratorStartableContext.__aexit__   s      ;<kk$((+++ ##:;;} !hhooe,,,B EFFY ,%  -% ( '' <  u}6H&IJJ.   	 #	s   C>#A5 A3A5 C>B #B$B (C>3A5 5
B?C>BC>B 
C;BC;C>C;&C*C>/*CC>CC;,C61C>6C;;C>N)ry   #Callable[..., AsyncIterator[_T_co]]rz   zTuple[Any, ...]r{   zDict[str, Any]rn   ro   )r   r   rd   r   re   r   rH   rp   )
rL   rM   rN   rO   rQ   rP   r|   rY   rf   rS   r$   r+   r(   rt   rt      s]    I	##'1' ' 	'2G2G"2G/22G	2Gr+   rt   c                J   ^  [         R                  " T 5      SU 4S jj5       nU$ )a  @asyncstartablecontext decorator.

the decorated function can be called either as ``async with fn()``, **or**
``await fn()``.   This is decidedly different from what
``@contextlib.asynccontextmanager`` supports, and the usage pattern
is different as well.

Typical usage:

.. sourcecode:: text

    @asyncstartablecontext
    async def some_async_generator(<arguments>):
        <setup>
        try:
            yield <value>
        except GeneratorExit:
            # return value was awaited, no context manager is present
            # and caller will .close() the resource explicitly
            pass
        else:
            <context manager cleanup>


Above, ``GeneratorExit`` is caught if the function were used as an
``await``.  In this case, it's essential that the cleanup does **not**
occur, so there should not be a ``finally`` block.

If ``GeneratorExit`` is not invoked, this means we're in ``__aexit__``
and we were invoked as a context manager, and cleanup should proceed.


c                    > [        TX5      $ r#   )rt   )rz   r{   ry   s     r(   helper%asyncstartablecontext.<locals>.helper   s    (t::r+   )rz   r   r{   r   rH   z GeneratorStartableContext[_T_co])r1   wraps)ry   r   s   ` r(   asyncstartablecontextr      s(    J __T; ; Mr+   c                  ^    \ rS rSrSr\R                  SS j5       rS	S jrS
S jr	S
S jr
Srg)ProxyComparablei  r$   c                    [        5       er#   r:   r]   s    r(   _proxiedProxyComparable._proxied  s    !##r+   c                    [        U 5      $ r#   )idr]   s    r(   __hash__ProxyComparable.__hash__  s    $xr+   c                l    [        XR                  5      =(       a    U R                  UR                  :H  $ r#   r   rk   r   r&   others     r(   __eq__ProxyComparable.__eq__  s(    unn- 0/	
r+   c                v    [        XR                  5      (       + =(       d    U R                  UR                  :g  $ r#   r   r   s     r(   __ne__ProxyComparable.__ne__  s+    5..11 /}}.	
r+   N)rH   r   )rH   int)r   r   rH   rK   )rL   rM   rN   rO   rQ   r   ro_non_memoized_propertyr   r   r   r   rS   r$   r+   r(   r   r     s.    I	""$ #$

r+   r   )ry   r   rH   z/Callable[..., GeneratorStartableContext[_T_co]])$
__future__r   rq   r1   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r.    r   ri   r   util.typingr   r   r   r   r   r   ABCrU   rt   r   r   r$   r+   r(   <module>r      s    # 
   !                 " Tsd3 e3Cgcl CL
y' 
4NG 0 7 NGb)
-)4)X
oc* 
r+   