o
    y¬´\  ã                   @   sD   d dl ZddlmZ eƒ ZG dd„ deƒZeƒ Z	G dd„ deƒZ
dS )é    Né   )Úexcc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚBasicEntityc                 K   s"   |  ¡ D ]
\}}t| ||ƒ qd S ©N)ÚitemsÚsetattr)ÚselfÚkwÚkeyÚvalue© r   úM/var/www/html/env/lib/python3.10/site-packages/sqlalchemy/testing/entities.pyÚ__init__   s   ÿzBasicEntity.__init__c              
      st   t ˆ ƒtv rt ˆ ¡S t t ˆ ƒ¡ zdˆ jjd ‡ fdd„tˆ j	 
¡ ƒD ƒ¡f W t t ˆ ƒ¡ S t t ˆ ƒ¡ w )Nz%s(%s)z, c                    s(   g | ]}|  d ¡sd|tˆ |ƒf ‘qS )Ú_z%s=%r)Ú
startswithÚgetattr)Ú.0r
   ©r   r   r   Ú
<listcomp>   s    ýÿz(BasicEntity.__repr__.<locals>.<listcomp>)ÚidÚ_repr_stackÚobjectÚ__repr__ÚaddÚ	__class__Ú__name__ÚjoinÚsortedÚ__dict__ÚkeysÚremover   r   r   r   r      s   

þÿþ zBasicEntity.__repr__N)r   Ú
__module__Ú__qualname__r   r   r   r   r   r   r      s    r   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚComparableEntityc                 C   s
   t | jƒS r   )Úhashr   r   r   r   r   Ú__hash__+   s   
zComparableEntity.__hash__c                 C   s   |   |¡ S r   )Ú__eq__)r   Úotherr   r   r   Ú__ne__.   s   zComparableEntity.__ne__c              
   C   s´  || u rdS | j |j ksdS t| ƒtv rdS t t| ƒ¡ z´z
tjj | ¡j}W n tjj	j
y6   d}Y nw |du r@| }|}n|durI|}| }n| }|}t|jƒD ]u}| d¡rZqRt||ƒ}zt||ƒ}W n ttjfy|   Y  W t t| ƒ¡ dS w t|dƒr´t|dƒr t|dƒs t|ƒt|ƒkrŸ W t t| ƒ¡ dS qRt|ƒt|ƒkr³ W t t| ƒ¡ dS qR|durÇ||krÇ W t t| ƒ¡ dS qRW t t| ƒ¡ dS t t| ƒ¡ w )zš'Deep, sparse compare.

        Deeply compare two entities, following the non-None attributes of the
        non-persisted object, if possible.

        TFNr   Ú__iter__Ú__getitem__r   )r   r   Ú_recursion_stackr   ÚsaÚormÚ
attributesÚinstance_stater
   r   ÚNO_STATEÚlistr   r   r   ÚAttributeErrorÚsa_excÚUnboundExecutionErrorr    ÚhasattrÚset)r   r'   Úself_keyÚaÚbÚattrr   Úbattrr   r   r   r&   1   sb   ÿ

ï
ÿ	öù€þ"zComparableEntity.__eq__N)r   r!   r"   r%   r(   r&   r   r   r   r   r#   *   s    r#   )Ú
sqlalchemyr,   Ú r   r3   r6   r   r   r   r+   r#   r   r   r   r   Ú<module>   s   