
    ؄_                         d dl ZddlmZ ddlmZ  e            Z G d de	          Z
 e            Z G d de
          ZdS )	    N   )exc)compatc                       e Zd Zd Zd ZdS )BasicEntityc                 \    |                                 D ]\  }}t          | ||           d S N)itemssetattr)selfkwkeyvalues       `/var/www/book.euthymeo.com/html/venv/lib/python3.11/site-packages/sqlalchemy/testing/entities.py__init__zBasicEntity.__init__   s<    ((** 	& 	&JCD#u%%%%	& 	&    c           	          t                     t          v rt                                         S t                              t                                	  j        j        dd                     fdt           j	        
                                          D                       dt                              t                                S # t                              t                                w xY w)N(z, c                 d    g | ],}|                     d           |dt          |          -S )_=)
startswithgetattr).0r   r   s     r   
<listcomp>z(BasicEntity.__repr__.<locals>.<listcomp>   sQ       "~~c22#&33c(:(:(:;  r   ))id_repr_stackobject__repr__add	__class____name__joinsorted__dict__keysremover   s   `r   r    zBasicEntity.__repr__   s    d88{""??4(((4!!!	)(((		   #)$-*<*<*>*>#?#?     	 r$xx((((Kr$xx((((s   AC )C?N)r#   
__module____qualname__r   r     r   r   r   r      s2        & & &) ) ) ) )r   r   c                        e Zd Zd Zd Zd ZdS )ComparableEntityc                 *    t          | j                  S r	   )hashr"   r)   s    r   __hash__zComparableEntity.__hash__+   s    DN###r   c                 .    |                      |           S r	   )__eq__)r   others     r   __ne__zComparableEntity.__ne__.   s    ;;u%%%%r   c                 n   || u rdS | j         |j         k    sdS t          |           t          v rdS t                              t          |                      	 	 t          j        j                            |           j        }n!# t          j        j	        j
        $ r d}Y nw xY w|| }|}n||}| }n| }|}t          |j                  D ]}|                    d          rt          ||          }	 t          ||          }nE# t          t           j        f$ r, Y  t                              t          |                      dS w xY wt'          |d          rt)          |t*          j                  st'          |d          r\t'          |d          sLt          |          t          |          k    r* t                              t          |                      dS t/          |          t/          |          k    r* t                              t          |                      dS b|0||k    r* t                              t          |                      dS 	 t                              t          |                      dS # t                              t          |                      w xY 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
isinstancer   string_typesset)r   r4   self_keyabattrr   battrs           r   r3   zComparableEntity.__eq__1   s    D==45?225d88'''4RXX&&&,	. 6,;;DAAE6:&        }%QZ(( % %??3'' 4((!#At,,EE&(DE ! ! ! 5$ ##BtHH-----'! 5*-- %j6.7 7 % um44 )Wv> > )  ;;$u++55#( ##BtHH----- 6 u::U33#( ##BtHH----- 4 (Ue^^$ ##BtHH----- ##BtHH-----##BtHH----sb   )B J B"J !B""AJ 5DJ EJ EA.J #J +J J )J4N)r#   r*   r+   r1   r5   r3   r,   r   r   r.   r.   *   sA        $ $ $& & &<. <. <. <. <.r   r.   )
sqlalchemyr:    r   rA   utilr   rF   r   r   r   r9   r.   r,   r   r   <module>rO      s                   cee) ) ) ) )& ) ) )0 355 C. C. C. C. C.{ C. C. C. C. C.r   