
    +h                         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 G d	 d
ee
      Zy)    N   )exc)compatc                       e Zd Zd Zd Zy)BasicEntityc                 N    |j                         D ]  \  }}t        | ||        y N)itemssetattr)selfkwkeyvalues       N/var/www/html/venv/lib/python3.12/site-packages/sqlalchemy/testing/entities.py__init__zBasicEntity.__init__   s'    ((* 	&JCD#u%	&    c                    t        |       t        v rt        j                  |       S t        j	                  t        |              	 | j
                  j                  ddj                  t        | j                  j                               D cg c]$  }|j                  d      s|dt        | |      & c}      dt        j                  t        |              S c c}w # t        j                  t        |              w xY w)N(z, _=))id_repr_stackobject__repr__add	__class____name__joinsorted__dict__keys
startswithgetattrremove)r   r   s     r   r   zBasicEntity.__repr__   s    d8{"??4((4!	)((		 $*$--*<*<*>#?"~~c2 $'c(:;	 r$x( r$x(s   AC# )C6	C# C# # DN)r   
__module____qualname__r   r    r   r   r   r      s    &)r   r   c                       e Zd Zd Zd Zy)ComparableMixinc                 &    | j                  |       S r	   )__eq__)r   others     r   __ne__zComparableMixin.__ne__+   s    ;;u%%%r   c                    || u ry| j                   |j                   k(  syt        |       t        v ryt        j                  t        |              	 	 t        j
                  j                  j                  |       j                  }|| }|}n||}| }n| }|}t        |j                        D ]  }|j                  d      rt        ||      }	 t        ||      }t'        |d      rt)        |t*        j,                        st'        |d      rDt'        |d      s8t        |      t        |      k7  s t        j%                  t        |              yt/        |      t/        |      k7  s t        j%                  t        |              y|||k7  s t        j%                  t        |              y 	 t        j%                  t        |              y# t        j
                  j                  j                  $ r d}Y zw xY w# t        t         j"                  f$ r" Y  t        j%                  t        |              yw xY w# t        j%                  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   r-   self_keyabattrr   battrs           r   r,   zComparableMixin.__eq__.   s    D=5??2d8''RX&,	. 66,,;;DAEE }%QZZ( %??3'4(!#At,E 5*-j6..7 um4Wv>  ;$u+5#( ##BtH- u:U3#( ##BtH-	 (Ue^$ ##BtH-7%2 ##BtH-Q 66::&&   * '(D(DE ! $ ##BtH-'!& ##BtH-sz   3G A	I HAI 1I I )I 	I I I 2I )H <I ?H  I H>I =H>>I  I!N)r   r&   r'   r.   r,   r(   r   r   r*   r*   *   s    &<.r   r*   c                       e Zd Zd Zy)ComparableEntityc                 ,    t        | j                        S r	   )hashr   )r   s    r   __hash__zComparableEntity.__hash__n   s    DNN##r   N)r   r&   r'   rI   r(   r   r   rF   rF   m   s    $r   rF   )
sqlalchemyr3    r   r:   utilr   r?   r   r   r   r2   r*   rF   r(   r   r   <module>rM      sJ      e)& )0 5 @.f @.F$ $r   