
    [h                        d dl mZ d dlZddlmZ ddlmZ  e	            Z
 G d d          Z e	            Z G d d	          Z G d
 dee          ZdS )    )annotationsN   )exc)WriteOnlyCollectionc                      e Zd Zd Zd ZdS )BasicEntityc                \    |                                 D ]\  }}t          | ||           d S N)itemssetattr)selfkwkeyvalues       j/var/www/api.easyaligner.net/htdocs/venv_linux/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S )ComparableMixinc                .    |                      |           S r
   )__eq__)r   others     r   __ne__zComparableMixin.__ne__/   s    ;;u%%%%r   c                   || 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          |t                     r?	 t          ||          }nE# t"          t$          j        f$ r, Y  t                              t          |                      dS w xY wt+          |d          rt          |t,                    st+          |d          r\t+          |d          sLt          |          t          |          k    r* t                              t          |                      dS 't/          |          t/          |          k    r* t                              t          |                      dS s|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   
isinstancer   AttributeErrorsa_excUnboundExecutionErrorr)   hasattrstrset)r   r2   self_keyabattrr   battrs           r   r1   zComparableMixin.__eq__2   s    D==45?225d88'''4RXX&&&.	. 6,;;DAAE6:&        }%QZ(( % %??3'' 4((e%899 !#At,,EE&(DE ! ! ! 5  ##BtHH-----#! 5*-- %j6L6L %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 DJ E2J EA)J 0#J <J 0J )KN)r$   r+   r,   r3   r1   r-   r   r   r/   r/   .   s2        & & &>. >. >. >. >.r   r/   c                      e Zd Zd ZdS )ComparableEntityc                *    t          | j                  S r
   )hashr#   r*   s    r   __hash__zComparableEntity.__hash__t   s    DN###r   N)r$   r+   r,   rN   r-   r   r   rK   rK   s   s#        $ $ $ $ $r   rK   )
__future__r   
sqlalchemyr8    r   r@   orm.writeonlyr   rD   r   r   r7   r/   rK   r-   r   r   <module>rS      s    # " " " " "           / / / / / /cee) ) ) ) ) ) ) )0 355 B. B. B. B. B. B. B. B.J$ $ $ $ $ $ $ $ $ $r   