1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
U
¸ý°d ã@sjddlmZddlZddlmZddlmZe    ƒZ
Gdd„dƒZ e    ƒZ Gdd    „d    ƒZ Gd
d „d e e ƒZdS) é)Ú annotationsNé)Úexc)ÚWriteOnlyCollectionc@seZdZdd„Zdd„ZdS)Ú BasicEntitycKs"| ¡D]\}}t|||ƒqdS©N)ÚitemsÚsetattr)ÚselfÚkwÚkeyÚvalue©rúRd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/testing/entities.pyÚ__init__szBasicEntity.__init__c
sltˆƒtkrt ˆ¡St tˆƒ¡z2dˆjjd ‡fdd„t    ˆj
  ¡ƒDƒ¡fW¢St tˆƒ¡XdS)Nz%s(%s)z, cs(g|] }| d¡sd|tˆ|ƒf‘qS)Ú_z%s=%r)Ú
startswithÚgetattr)Ú.0r ©r
rrÚ
<listcomp> s
þz(BasicEntity.__repr__.<locals>.<listcomp>) ÚidÚ _repr_stackÚobjectÚ__repr__ÚaddÚremoveÚ    __class__Ú__name__ÚjoinÚsortedÚ__dict__Úkeysrrrrrs 
 
 þÿþ
zBasicEntity.__repr__N)rÚ
__module__Ú __qualname__rrrrrrrsrc@seZdZdd„Zdd„ZdS)ÚComparableMixincCs | |¡ Sr)Ú__eq__)r
ÚotherrrrÚ__ne__/szComparableMixin.__ne__c
Cs¦||kr dS|j|jksdSt|ƒtkr,dSt t|ƒ¡zTztjj |¡j    }Wntjj
j k
rpd}YnX|dkr„|}|}n|dk    r–|}|}n|}|}t |j ƒD]à}| d¡r¸q¨t||ƒ}t|tƒrÎq¨zt||ƒ}Wn$ttjfk
rYW¢–dSXt|dƒrnt|tƒsnt|dƒrPt|dƒsPt |ƒt |ƒkrlW¢HdSnt|ƒt|ƒkrˆW¢*dSq¨|dk    r¨||kr¨W¢dSq¨W¢dSt t|ƒ¡XdS)zš'Deep, sparse compare.
 
        Deeply compare two entities, following the non-None attributes of the
        non-persisted object, if possible.
 
        TFNrÚ__iter__Ú __getitem__r")rrÚ_recursion_stackrrÚsaZormÚ
attributesZinstance_stater rZNO_STATEÚlistr!rrÚ
isinstancerÚAttributeErrorÚsa_excZUnboundExecutionErrorÚhasattrÚstrÚset)r
r'Zself_keyÚaÚbÚattrr Zbattrrrrr&2sV  
 
 
 
ÿ   zComparableMixin.__eq__N)rr#r$r(r&rrrrr%.sr%c@seZdZdd„ZdS)ÚComparableEntitycCs
t|jƒSr)ÚhashrrrrrÚ__hash__tszComparableEntity.__hash__N)rr#r$r:rrrrr8ssr8)Ú
__future__rZ
sqlalchemyr,Úrr1Z orm.writeonlyrr4rrr+r%r8rrrrÚ<module>
s   E