
    +h	                     |    d dl Z d dlZd dlZddlmZ  G d d      Z G d de j                        Z G d d	e      Z	y)
    N   )excc                   N    e Zd Zi ZdZd Zedd       Zed        Zedd       Z	y)	ReversibleProxy)__weakref__c                     |ot        j                  |t        j                        }t        j                  | t	        j
                  t        j                  |            }|t        j                  |<   |S N)weakrefrefr   _target_gced	functoolspartial_proxy_objects)selftarget
target_ref	proxy_refs       N/var/www/html/venv/lib/python3.12/site-packages/sqlalchemy/ext/asyncio/base.py_assign_proxiedzReversibleProxy._assign_proxied   s]     V_-I-IJJ!!/">">
KI :CO**:6    Nc                 <    | j                   j                  |d        y r	   )r   pop)clsr   r   s      r   r   zReversibleProxy._target_gced   s    sD)r   c                     t               r	   )NotImplementedError)r   r   s     r   _regenerate_proxy_for_targetz,ReversibleProxy._regenerate_proxy_for_target"   s    !##r   c                     	 | j                   t        j                  |         } |       }||S |r| j	                  |      S y # t        $ r Y w xY wr	   )r   r
   r   KeyErrorr   )r   r   
regenerater   proxys        r   _retrieve_proxy_for_targetz*ReversibleProxy._retrieve_proxy_for_target&   s_    	**7;;v+>?I KE 33F;;  		s   "A 	AAr	   )T)
__name__
__module____qualname__r   	__slots__r   classmethodr   r   r!    r   r   r   r      sM    N I	 * * $ $  r   r   c                   l    e Zd ZdZej
                  dd       Zd Zd Zej
                  d        Z	d Z
y)	StartableContextr'   c                    K   y wr	   r'   )r   is_ctxmanagers     r   startzStartableContext.start:   	        c                 >    | j                         j                         S r	   )r,   	__await__r   s    r   r0   zStartableContext.__await__>   s    zz|%%''r   c                 B   K   | j                  d       d {   S 7 w)NT)r+   )r,   r1   s    r   
__aenter__zStartableContext.__aenter__A   s     ZZdZ3333s   c                    K   y wr	   r'   )r   type_value	tracebacks       r   	__aexit__zStartableContext.__aexit__D   r-   r.   c                 Z    t        j                  d| j                  j                  z        )Nz@%s context has not been started and object has not been awaited.)	async_excAsyncContextNotStarted	__class__r"   r1   s    r   _raise_for_not_startedz'StartableContext._raise_for_not_startedH   s*    ..N~~&&(
 	
r   N)F)r"   r#   r$   r%   abcabstractmethodr,   r0   r3   r8   r=   r'   r   r   r)   r)   7   sH    I (4 	 
r   r)   c                   "    e Zd ZdZd Zd Zd Zy)ProxyComparabler'   c                     t        |       S r	   )idr1   s    r   __hash__zProxyComparable.__hash__R   s    $xr   c                 d    t        || j                        xr | j                  |j                  k(  S r	   
isinstancer<   _proxiedr   others     r   __eq__zProxyComparable.__eq__U   s*    udnn- 0/	
r   c                 f    t        || j                         xs | j                  |j                  k7  S r	   rF   rI   s     r   __ne__zProxyComparable.__ne__[   s-    5$..11 /}}.	
r   N)r"   r#   r$   r%   rD   rK   rM   r'   r   r   rA   rA   O   s    I

r   rA   )
r>   r   r
    r   r:   r   ABCr)   rA   r'   r   r   <module>rP      s:       & &R
sww 
0
o 
r   