o
    Á=aŸ  ã                   @   sX   d dl Z d dlZd dlZddlmZ G dd„ dƒZG dd„ de jƒZG dd	„ d	eƒZ	dS )
é    Né   )Úexcc                   @   s@   e Zd Zi Zdd„ Zeddd„ƒZedd„ ƒZedd	d
„ƒZdS )ÚReversibleProxyc                 C   s:   |d urt  |tj¡}t  | t tj|¡¡}|tj|< |S ©N)ÚweakrefÚrefr   Ú_target_gcedÚ	functoolsÚpartialÚ_proxy_objects)ÚselfÚtargetÚ
target_refÚ	proxy_ref© r   úQ/var/www/html/gps/gps/lib/python3.10/site-packages/sqlalchemy/ext/asyncio/base.pyÚ_assign_proxied   s   þ
zReversibleProxy._assign_proxiedNc                 C   s   | j  |d ¡ d S r   )r   Úpop)Úclsr   r   r   r   r   r      s   zReversibleProxy._target_gcedc                 C   s   t ƒ ‚r   )ÚNotImplementedError)r   r   r   r   r   Ú_regenerate_proxy_for_target   s   z,ReversibleProxy._regenerate_proxy_for_targetTc                 C   sL   z
| j t |¡ }W n	 ty   Y n
w |ƒ }|d ur|S |r$|  |¡S d S r   )r   r   r   ÚKeyErrorr   )r   r   Ú
regenerater   Úproxyr   r   r   Ú_retrieve_proxy_for_target   s   ÿ
z*ReversibleProxy._retrieve_proxy_for_targetr   )T)	Ú__name__Ú
__module__Ú__qualname__r   r   Úclassmethodr   r   r   r   r   r   r   r      s    
r   c                   @   sB   e 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 )ÚStartableContextFc                 Ã   ó   d S r   r   )r   Úis_ctxmanagerr   r   r   Ústart1   ó   €zStartableContext.startc                 C   s   |   ¡  ¡ S r   )r"   Ú	__await__©r   r   r   r   r$   5   s   zStartableContext.__await__c                 Ã   s   | j ddI d H S )NT)r!   )r"   r%   r   r   r   Ú
__aenter__8   s   €zStartableContext.__aenter__c                 Ã   r    r   r   )r   Útype_ÚvalueÚ	tracebackr   r   r   Ú	__aexit__;   r#   zStartableContext.__aexit__c                 C   s   t  d| jj ¡‚)Nz@%s context has not been started and object has not been awaited.)Ú	async_excÚAsyncContextNotStartedÚ	__class__r   r%   r   r   r   Ú_raise_for_not_started?   s
   ÿÿz'StartableContext._raise_for_not_startedN)F)
r   r   r   ÚabcÚabstractmethodr"   r$   r&   r*   r.   r   r   r   r   r   0   s    
r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚProxyComparablec                 C   s   t | ƒS r   )Úidr%   r   r   r   Ú__hash__G   s   zProxyComparable.__hash__c                 C   s   t || jƒo| j|jkS r   ©Ú
isinstancer-   Ú_proxied©r   Úotherr   r   r   Ú__eq__J   s   
þzProxyComparable.__eq__c                 C   s   t || jƒ p| j|jkS r   r4   r7   r   r   r   Ú__ne__P   s   
þzProxyComparable.__ne__N)r   r   r   r3   r9   r:   r   r   r   r   r1   F   s    r1   )
r/   r	   r   Ú r   r+   r   ÚABCr   r1   r   r   r   r   Ú<module>   s    (