
    hH#                       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ZddlmZ ddlmZ ddlmZ ddlmZ  ede          Z eded          Z ede          Z G d dee                   Z G d d ee         ej                  Z  G d! d"e e                   Z!d*d'Z" G d( d)ee                   Z#dS )+    )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                     e Zd ZU i Zded<   dZedd            Zed d	            Zd!dZe	 d"d#d            Z	ed$d            Z
ee	 d%d&d                        Zee	 d'd(d                        Ze	 d'd(d            ZdS ))ReversibleProxyzCClassVar[Dict[weakref.ref[Any], weakref.ref[ReversibleProxy[Any]]]]_proxy_objects)__weakref__targetr   returnc                    d S N selfr!   s     ]/var/www/html/prod/cognitive/venv/lib/python3.11/site-packages/sqlalchemy/ext/asyncio/base.py_assign_proxiedzReversibleProxy._assign_proxied.   s    363    Nonec                    d S r$   r%   r&   s     r(   r)   zReversibleProxy._assign_proxied1   s    58Sr*   Optional[_PT]c                    |`t          j        |t          j                  }t          j        | t	          j        t          j        |                    }|t          j        |<   |S r$   )weakrefrefr   _target_gced	functoolspartialr   )r'   r!   
target_ref	proxy_refs       r(   r)   zReversibleProxy._assign_proxied4   s_    +2;4, ,J  !/">
KK I :CO*:6r*   Nr0   weakref.ref[_PT]r5   Optional[weakref.ref[Self]]c                <    | j                             |d            d S r$   )r   pop)clsr0   r5   s      r(   r1   zReversibleProxy._target_gcedA   s#     	sD)))))r*   additional_kwr   r   c                    t                      r$   NotImplementedError)r:   r!   r;   s      r(   _regenerate_proxy_for_targetz,ReversibleProxy._regenerate_proxy_for_targetI   s     "###r*   .
regenerateLiteral[True]c                    d S r$   r%   r:   r!   r@   r;   s       r(   _retrieve_proxy_for_targetz*ReversibleProxy._retrieve_proxy_for_targetO   s	     sr*   TboolOptional[Self]c                    d S r$   r%   rC   s       r(   rD   z*ReversibleProxy._retrieve_proxy_for_targetU   s	     r*   c                    	 | j         t          j        |                   } |            }||S n# t          $ r Y nw xY w|r | j        |fi |S d S r$   )r   r/   r0   KeyErrorr?   )r:   r!   r@   r;   r5   proxys         r(   rD   z*ReversibleProxy._retrieve_proxy_for_target[   s    	*7;v+>+>?I IKKE  !	  	 	 	D	  	333FLLmLLL4s   0 
==)r!   r   r"   r   )r!   r+   r"   r+   )r!   r-   r"   r-   r$   )r0   r6   r5   r7   r"   r+   )r!   r   r;   r   r"   r   ).)r!   r   r@   rA   r;   r   r"   r   )T)r!   r   r@   rE   r;   r   r"   rF   )__name__
__module____qualname__r   __annotations__	__slots__r   r)   classmethodr1   r?   rD   r%   r*   r(   r   r   (   sQ         	      !I666 X6888 X8     26* * * * [* $ $ $ [$
 69    [ X -1    [ X -1    [  r*   r   c                  p    e Zd ZdZej        ddd            Zdd	Zdd
Zej        dd            Z	ddZ
dS )StartableContextr%   Fis_ctxmanagerrE   r"   r   c                "   K   t                      r$   r=   )r'   rS   s     r(   startzStartableContext.startq   s      !###r*   Generator[Any, Any, _T_co]c                N    |                                                                  S r$   )rU   	__await__r'   s    r(   rX   zStartableContext.__await__u   s    zz||%%'''r*   c                >   K   |                      d           d {V S )NT)rS   )rU   rY   s    r(   
__aenter__zStartableContext.__aenter__x   s,      ZZdZ333333333r*   type_r   value	tracebackOptional[bool]c                
   K   d S r$   r%   )r'   r\   r]   r^   s       r(   	__aexit__zStartableContext.__aexit__{   s       	r*   r   c                D    t          j        d| j        j        z            )Nz@%s context has not been started and object has not been awaited.)	async_excAsyncContextNotStarted	__class__rK   rY   s    r(   _raise_for_not_startedz'StartableContext._raise_for_not_started   s'    .N~&(
 
 	
r*   NFrS   rE   r"   r   )r"   rV   )r"   r   )r\   r   r]   r   r^   r   r"   r_   )r"   r   )rK   rL   rM   rO   abcabstractmethodrU   rX   r[   ra   rf   r%   r*   r(   rR   rR   n   s        I$ $ $ $ $( ( ( (4 4 4 4 	   

 
 
 
 
 
r*   rR   c                  8    e Zd ZU dZded<   dd
ZdddZddZdS )GeneratorStartableContextgenzAsyncGenerator[_T_co, Any]rn   func#Callable[..., AsyncIterator[_T_co]]argsTuple[Any, ...]kwdsDict[str, Any]c                      ||i || _         d S r$   rm   )r'   ro   rq   rs   s       r(   __init__z"GeneratorStartableContext.__init__   s     4&&&r*   FrS   rE   r"   r   c                   K   	 t          j        | j                   d {V }n# t          $ r t	          d          d w xY w|s| j                                         d {V  |S )Nzgenerator didn't yield)r   anext_rn   StopAsyncIterationRuntimeErroraclose)r'   rS   start_values      r(   rU   zGeneratorStartableContext.start   s      	C $DH 5 5555555KK! 	C 	C 	C788dB	C  	$(//#########s   $ ?typr   r]   r^   r_   c                  K   |@	 t          j        | j                   d {V  t          d          # t          $ r Y dS w xY w|
 |            }	 | j                            |           d {V  nv# t          $ r}||ucY d }~S d }~wt          $ r;}||u rY d }~dS t          |t          t          f          r|j        |u rY d }~dS  d }~wt          $ r}||ur Y d }~dS d }~ww xY wt          d          )Nzgenerator didn't stopFz$generator didn't stop after athrow())
r   rx   rn   rz   ry   athrow
isinstanceStopIteration	__cause__BaseException)r'   r}   r]   r^   r   s        r(   ra   z#GeneratorStartableContext.__aexit__   s      ;<k$(+++++++++ ##:;;; &   uu
 } !hooe,,,,,,,,,,% ( ( ( %'''''''   %<< 55555 u}6H&IJJ!.. 55555  	 	 	 e##uuuuu	 EFFFsQ   4 
AA A3 3
C&=B C&C&C	%C	C		C&C!!C&N)ro   rp   rq   rr   rs   rt   rg   rh   )r}   r   r]   r   r^   r   r"   r_   )rK   rL   rM   rO   rN   rv   rU   ra   r%   r*   r(   rl   rl      sn         I####' ' ' '    2G 2G 2G 2G 2G 2Gr*   rl   ro   rp   r"   /Callable[..., GeneratorStartableContext[_T_co]]c                H     t          j                   d fd            }|S )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.


    rq   r   rs   r"    GeneratorStartableContext[_T_co]c                 &    t          | |          S r$   )rl   )rq   rs   ro   s     r(   helperz%asyncstartablecontext.<locals>.helper   s    (tT:::r*   )rq   r   rs   r   r"   r   )r2   wraps)ro   r   s   ` r(   asyncstartablecontextr      s@    J _T; ; ; ; ; ; Mr*   c                  L    e Zd ZdZej        dd            ZddZdd
ZddZ	dS )ProxyComparabler%   r"   r   c                    t                      r$   r=   rY   s    r(   _proxiedzProxyComparable._proxied  s    !###r*   intc                     t          |           S r$   )idrY   s    r(   __hash__zProxyComparable.__hash__  s    $xxr*   otherr   rE   c                L    t          || j                  o| j        |j        k    S r$   r   re   r   r'   r   s     r(   __eq__zProxyComparable.__eq__  s'    udn-- 0/	
r*   c                N    t          || j                   p| j        |j        k    S r$   r   r   s     r(   __ne__zProxyComparable.__ne__  s*    5$.111 /}.	
r*   N)r"   r   )r"   r   )r   r   r"   rE   )
rK   rL   rM   rO   r   ro_non_memoized_propertyr   r   r   r   r%   r*   r(   r   r     sw        I	"$ $ $ #"$   
 
 
 

 
 
 
 
 
r*   r   )ro   rp   r"   r   )$
__future__r   ri   r2   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r/    r   rc   r   util.typingr   r   r   r   r   r   ABCrR   rl   r   r   r%   r*   r(   <module>r      s   # " " " " " 



           ! ! ! ! ! !                                                                                            " " " " " "      WTsd333 ge3C C C C Cgcl C C CL
 
 
 
 
y' 
 
 
4NG NG NG NG NG 0 7 NG NG NGb) ) ) )X
 
 
 
 
oc* 
 
 
 
 
r*   