L itddlmZddlmZddlmZddlZddlmZddl Z ddl Z ddl m Z ddl m Z ddl m Z ddl mZdd l mZdd l mZdd l mZdd l mZdd l mZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddl m!Z!ejDdZ#dZ$dZ%d1dZ&d2dZ'Gdd eZ(Gd!d"e(Z)d#Z*Gd$d%eZ+Gd&d'eZ,e,Z-d(Z.Gd)d*eZ/e/Z0ejbd+d,Z2Gd-d.eejfZ4Gd/d0e4Z5y)3) annotations)dequeN) zip_longest)Any)Callable)Deque)Dict)Iterable)Optional)Set)Tuple)Type) operators) HasCacheKey)_TraverseInternalsTypeanon_map)ExternallyTraversible)HasTraversalDispatch)HasTraverseInternals)util) langhelpers)Self skip_traverseFTc x|jddr t}n t}|j||fi|S)N use_proxiesF)getColIdentityComparatorStrategyTraversalComparatorStrategycompare)obj1obj2kwstrategys _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/sql/traversals.pyr"r",s: vvmU#02.0 8  D$ -" --ctj|D]n}t|dst|ds|jtj ||j dtj ||j dpy)N_generate_cache_attrs_traverse_internals#_generated_copy_internals_traversal!_generated_get_children_traversal)rwalk_subclasseshasattrr*_copy_internalsgenerate_dispatchr+ _get_children)target_hierarchyclss r'_preconfigure_traversalsr56s##$45 3/ 0W &6   % % '  - -''5   + +''3 r(ceZdZdZdZej rddZ ddZddZ e ddZ e ddZ e ddZ dd Zdd Zdd Zdd Zy )HasShallowCopyzattribute-wide operations that are useful for classes that use __slots__ and therefore can't operate on their attributes in a dictionary. cyNr8)selfothers r'!_generated_shallow_copy_traversalz0HasShallowCopy._generated_shallow_copy_traversalSr(cyr:r8)r;ds r'&_generated_shallow_from_dict_traversalz5HasShallowCopy._generated_shallow_from_dict_traversalUsr(cyr:r8r;s r'$_generated_shallow_to_dict_traversalz3HasShallowCopy._generated_shallow_to_dict_traversalYr>r(crdjd|D}d|d|d}tj|i|S)N c32K|]\}}d|d|yw)z other.z = self.Nr8.0attrname_s r' z8HasShallowCopy._generate_shallow_copy..as) ! (8* 5 def z(self, other): joinr_exec_code_in_envr4internal_dispatch method_namecode meth_texts r'_generate_shallow_copyz%HasShallowCopy._generate_shallow_copy[sK yy 0  ;-'7vR@ ,,YKHHr(crdjd|D}d|d|d}tj|i|S)Nz, c32K|]\}}d|d|yw)z 'z': self.Nr8rHs r'rLz;HasShallowCopy._generate_shallow_to_dict..ns) !H:XhZ 0 rMrNz(self): return {z} rOrRs r'_generate_shallow_to_dictz(HasShallowCopy._generate_shallow_to_dicthsK zz 0  ;-'=dV4H ,,YKHHr(crdjd|D}d|d|d}tj|i|S)NrFc34K|]\}}d|d|dyw)z self.z = d['z']Nr8rHs r'rLz=HasShallowCopy._generate_shallow_from_dict..{s+ !zz 4 srNz (self, d): rOrRs r'_generate_shallow_from_dictz*HasShallowCopy._generate_shallow_from_dictusJ yy 0  ;-|D6< ,,YKHHr(c|j} |jd}|||y#t$r&|j|jd}||_Y8wxYw)NrA) __class____dict__KeyErrorr]r+rA)r;r@r4shallow_from_dicts r'_shallow_from_dictz!HasShallowCopy._shallow_from_dictsjnn K # 8!  $" K $ @ @''8!  :KC 6  K',AAc|j} |jd}||S#t$r&|j|jd}||_Y6wxYw)NrD)r_r`rarZr+rD)r;r4shallow_to_dicts r'_shallow_to_dictzHasShallowCopy._shallow_to_dictsinn G!ll6Ot$$  G"<<'')OO8GC 4  Gs%,AAc|j} |jd}|||y#t$r&|j|jd}||_Y8wxYw)Nr=)r_r`rarWr+r=)r;r<r4 shallow_copys r'_shallow_copy_tozHasShallowCopy._shallow_copy_tosfnn A<<(KLL T5!  A66'')LL5AC 1  Ardc r|jj|j}|j||S)zCreate a shallow copyr___new__rj)r;r%cs r'_clonezHasShallowCopy._clones- NN " "4>> 2 a r(N)r<rreturnNone)r@Dict[str, Any]rprq)rprr)rSrrTstrrpzCallable[[Self, Self], None])rSrrTrsrpz Callable[[Self], Dict[str, Any]])rSrrTrsrpz&Callable[[Self, Dict[str, Any]], None])r%rrpr)__name__ __module__ __qualname____doc__ __slots__typing TYPE_CHECKINGr=rArD classmethodrWrZr]rcrgrjror8r(r'r7r7Hs I M #    N I1 I I & I I I1 I I * I I I1 I I 0 I I#$%" "r(r7ceZdZdZdZddZy)GenerativeOnTraversalzSupplies Generative behavior but making use of traversals to shallow copy. .. seealso:: :class:`sqlalchemy.sql.base.Generative` r8cb|j}|j|}|j||Sr:rl)r;r4ss r' _generatezGenerativeOnTraversal._generates,nn KK  a r(N)rpr)rtrurvrwrxrr8r(r'r}r}sIr(r}c "|jSr:)ro)elementr%s r'roros >> r(c.eZdZdZdZdd ddZy)HasCopyInternalsr8c tr:NotImplementedError)r;r%s r'rozHasCopyInternals._clones !##r() omit_attrsc  |j}tj||dD])\}}}||vr |||||fi|}|t |||+y#t$rYywxYw)atReassign internal elements to be clones of themselves. Called during a copy-and-traverse operation on newly shallow-copied elements to create a deep copy. The given clone function should be used, which may be applying additional transformations to the element (i.e. replacement traversal, cloned traversal, annotations). Nr,)r+AttributeErrorr0run_generated_dispatchsetattr)r;rr%traverse_internalsrJobjmethresults r'r0z HasCopyInternals._copy_internalss !%!9!9  $3#I#I $&K$ 4 Hc4:%hc8R8%D(F3 4    s A AAN)rz Iterable[str]r%rrprq)rtrurvrxror0r8r(r'rrs.I$.04*47:4 4r(rceZdZdZefdZefdZefdZefdZefdZ efdZ efdZ efd Z d Z efd Zefd Zefd ZefdZy)_CopyInternalsTraversalzmGenerate a _copy_internals internal traversal dispatch for classes with a _traverse_internals collection.c ||fi|Sr:r8r;rJparentrcloner%s r'visit_clauseelementz+_CopyInternalsTraversal.visit_clauseelementsW###r(c :|Dcgc] }||fi| c}Scc}wr:r8r;rJrrrr%clauses r'visit_clauseelement_listz0_CopyInternalsTraversal.visit_clauseelement_list"3::f##:::c Lt|Dcgc] }||fi| c}Scc}wr:tuplers r'visit_clauseelement_tuplez1_CopyInternalsTraversal.visit_clauseelement_tuple'@feF)b)@AA@!c Lt|Dcgc] }||fi| c}Scc}wr:rrs r'visit_executable_optionsz0_CopyInternalsTraversal.visit_executable_options rrc :|Dchc] }||fi| c}Scc}wr:r8rs r'!visit_clauseelement_unordered_setz9_CopyInternalsTraversal.visit_clauseelement_unordered_setrrc V|Dcgc]}tfd|Dc}Scc}w)Nc30K|] }|fiywr:r8)rItup_elemrr%s r'rLzE_CopyInternalsTraversal.visit_clauseelement_tuples..s=H%'B'=sr)r;rJrrrr%elems `` r'visit_clauseelement_tuplesz2_CopyInternalsTraversal.visit_clauseelement_tupless0    == =   s&c d|jDcic]\}}|||fi|c}}Scc}}wr:)itemsr;rJrrrr%keyvalues r'visit_string_clauseelement_dictz7_CopyInternalsTraversal.visit_string_clauseelement_dicts2;B--/JJCU5'B''JJJs,c 0tfd|DS)Nc3vK|]0\}}}}| |find| |find| |find|f2ywr:r8)rItargetonclausefrom_flagsrr%s r'rLzA_CopyInternalsTraversal.visit_setup_join_tuple..%sd 15% (.'9f##t)1)=h%"%4&+&7e"r"T   s69rrs ``r'visit_setup_join_tuplez._CopyInternalsTraversal.visit_setup_join_tuple"s! 5<   r(c ,|j|||fi|Sr:r)r;rJrrr%s r'visit_memoized_select_entitiesz6_CopyInternalsTraversal.visit_memoized_select_entities/s-t--hN2NNr(c t|Dcgc]%\}}t|dr ||fi|n|||fi|f'c}}Scc}}wN__clause_element__r/rs r'visit_dml_ordered_valuesz0_CopyInternalsTraversal.visit_dml_ordered_values2sV&  U s$89#$$e"r"     s*4c |jDcic]$\}}t|dr ||fi|n|||fi|&c}}Scc}}wr)rr/rs r'visit_dml_valuesz(_CopyInternalsTraversal.visit_dml_valuesBsX &mmo  U%,C1E$Fc R CU!b!"   s)Ac tfd}|Dcgc]}|Dcgc] }|| c}c}}Scc}wcc}}w)Nc Pt|ttfr%|Dcgc]}t|dr |fin|c}St|trN|j Dcic]2\}}t|dr |fin|t|dr |fin|4c}}SJcc}wcc}}wr) isinstancelistrr/dictr)rrrrr%s r'copyz<_CopyInternalsTraversal.visit_dml_multi_values..copyOs$u ."&  #5*>?e*r*"#D$''+jjl #U#3(<=c(R( #5*>?e*r*" #  u/ s B 7B"r8) r;rJrrrr%rsequence sub_elements `` r'visit_dml_multi_valuesz._CopyInternalsTraversal.visit_dml_multi_valuesJs=  :$ 3; ;;T+  ;  ; s 4/ 44c |Sr:r8rs r'visit_propagate_attrsz-_CopyInternalsTraversal.visit_propagate_attrsos r(N)rtrurvrwrorrrrrrrrrrrrrr8r(r'rrs.06$ 06; 06B 06B 06; 06 06K 06  O06 AG 06# L06r(rct|dr7t|dds*|j}t|drt|dds*|S)Nris_clause_elementF)r/getattrr)rs r'_flatten_clauseelementrxsO '/ 0$e:,,. '/ 0$e: Nr(cjeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZy)_GetChildrenTraversalzqGenerate a _children_traversal internal traversal dispatch for classes with a _traverse_internals collection.c yNr8r8r;rr%s r'visit_has_cache_keyz)_GetChildrenTraversal.visit_has_cache_keysr(c |fSr:r8rs r'rz)_GetChildrenTraversal.visit_clauseelements zr(c |Sr:r8rs r'rz._GetChildrenTraversal.visit_clauseelement_listr(c |Sr:r8rs r'rz/_GetChildrenTraversal.visit_clauseelement_tuplerr(c @tjj|Sr:) itertoolschain from_iterablers r'rz0_GetChildrenTraversal.visit_clauseelement_tupless,,W55r(c yrr8rs r',visit_fromclause_canonical_column_collectionzB_GetChildrenTraversal.visit_fromclause_canonical_column_collectionr(c "|jSr:)valuesrs r'rz5_GetChildrenTraversal.visit_string_clauseelement_dicts~~r(c |Sr:r8rs r'visit_fromclause_ordered_setz2_GetChildrenTraversal.visit_fromclause_ordered_setrr(c |Sr:r8rs r'rz7_GetChildrenTraversal.visit_clauseelement_unordered_setrr(c+K|D]K\}}}}||t|ts t||.t|tr?t|Mywr:)rrsr)r;rr%rrrrs r'rz,_GetChildrenTraversal.visit_setup_join_tuplesX.5 7 *FHeU  fc*,V44#Jx,E,X66 7s0AAAc (|j|fi|Sr:rrs r'rz4_GetChildrenTraversal.visit_memoized_select_entitiess-t--g<<  # A!*   AG!*   OsAAAAAc yrr8rs r'rz,_GetChildrenTraversal.visit_dml_multi_valuesrr(c yrr8rs r'rz+_GetChildrenTraversal.visit_propagate_attrsrr(N)rtrurvrwrrrrrrrrrrrrrrrr8r(r'rrsR. 6  7= r(rzsqlalchemy.sql.elementsc t|tjjjr|j |}|Sr:)rr preloaded sql_elements_anonymous_label apply_map)rnamerr%s r'_resolve_name_for_comparers/$33DDE~~h' Kr(c6eZdZdZdZdZ d1dZdZdZdZ dZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1y0)2r!)stackcacherc@t|_t|_yr:)rrsetrrCs r'__init__z$TraversalComparatorStrategy.__init__s G U r(c*ttfSr:rrCs r'_memoized_attr_anon_mapz3TraversalComparatorStrategy._memoized_attr_anon_maps HJ''r(c b|j}|j}|jdd}|j||f|ro|j \}}||ur||y||f|vr'|j ||f|j } | |j k7ryt|d| zd} | r| ||fi|} | tury| turd} t|j|jdD]\\} } \}}|s | dk(s|dk(r| |k7s| |ury| | vr)| J| J|J|j| }|$J|jd|j| d tj | |}tj ||}||y|y|| ||||fi|}|tusy|roy ) Ncompare_annotationsFz compare_%sr8NN fillvalue _annotationsz has no dispatch for ''T)rrrappendpopleftadd__visit_name__rCOMPARE_FAILED SKIP_TRAVERSErr+dispatchr__dispatch_lookupoperator attrgetter)r;r#r$r%rrrleftright visit_namerattributes_compared left_attrnameleft_visit_symright_attrnameright_visit_symr left_child right_child comparisons r'r"z#TraversalComparatorStrategy.comparesF    ff%:EB dD\"--/KD%u}%' IItUm $,,JU1114 !:DAD&*4&="&=#&.8 (M9')# (())&- !/1 +"n4&.8"^3%_< "&99%111$000%111==8+~~&'--n=>aA+@X00?E Ah11.A%H %".$  ( %!4UKKM / [- !A^r(c J|j}|j||fi|Sr:)r_r")r;r#r$r% comparators r' compare_innerz)TraversalComparatorStrategy.compare_inner@s(^^% !z!!$333r(c |j|jdg|j|jdgk7rtSyNrr)_gen_cache_keyrrr;rJ left_parentr right_parentrr%s r'rz/TraversalComparatorStrategy.visit_has_cache_keyDsJ   t}}Q/ 48L8L MM! b9  " ! r(c f|j|jdd|jddS)Nplugin_subject)r"rr&s r'rz1TraversalComparatorStrategy.visit_propagate_attrsLs4!! HH%t ,eii8H$.O  r(c t||dD]c\}}| |tcS|tcS|j|jdg|j|jdgk7s]tcSyNrrr)rrr%r r;rJr'rr(rr%lrs r'visit_has_cache_key_listz4TraversalComparatorStrategy.visit_has_cache_key_listSs et< &DAqy=))%% a 0"59I9I a ":&% &r(c $t||dD]\}}| |tcS|tcS|jr|j|jdgn||jr|j|jdgn|k7sytcSyr,)rr_is_has_cache_keyr%rr-s r'rz4TraversalComparatorStrategy.visit_executable_optionsds et< &DAqy=))%%&&  q!126&&  q!126&%% &r(c >|jj||fyr:)rr r&s r'rz/TraversalComparatorStrategy.visit_clauseelement{s 4-(r(c jt||dD]"\}}|jj||f$yNrrrr ) r;rJr'rr(rr%lcolrcols r'rzHTraversalComparatorStrategy.visit_fromclause_canonical_column_collections6&dETB ,JD$ JJ  tTl + ,r(c yr:r8r&s r'*visit_fromclause_derived_column_collectionzFTraversalComparatorStrategy.visit_fromclause_derived_column_collections r(c tt|t|dD]5\}}||k7rtcS|jj ||||f7yr5)rrrrr ) r;rJr'rr(rr%lstrrstrs r'rz;TraversalComparatorStrategy.visit_string_clauseelement_dictsY& 4L&-4  9JD$t|%% JJ  tDz5;7 8  9r(c t||dD]D\}}||tcSt||dD]"\} } |jj| | f$Fyr5rrrr ) r;rJr'rr(rr%ltuprtupr.r/s r'rz6TraversalComparatorStrategy.visit_clauseelement_tuplessa&dETB *JD$|t|%%#D$$? *1 !!1a&) *  *r(c jt||dD]"\}}|jj||f$yr5r6r-s r'rz4TraversalComparatorStrategy.visit_clauseelement_list6 et< &DAq JJ  q!f % &r(c jt||dD]"\}}|jj||f$yr5r6r-s r'rz5TraversalComparatorStrategy.visit_clauseelement_tuplerCr(c ||duSt}|D]H}t|j|D])}|j||fi|s|j|HJt |t |cxk(xrt |k(ScSr:)r differencer"r len)r;seq1seq2r% completedr other_clauses r'_compare_unordered_sequencesz8TraversalComparatorStrategy._compare_unordered_sequencess <4< !$  F #D 4 4Y ?  %4%%flAbAMM,/   9~T7c$i7777r(c *|j||fi|Sr:)rLr&s r'rz=TraversalComparatorStrategy.visit_clauseelement_unordered_sets1t00uCCCr(c jt||dD]"\}}|jj||f$yr5r6r-s r'rz8TraversalComparatorStrategy.visit_fromclause_ordered_setrCr(c  ||k(Sr:r8r&s r' visit_stringz(TraversalComparatorStrategy.visit_stringu}r(c  ||k(Sr:r8r&s r'visit_string_listz-TraversalComparatorStrategy.visit_string_listrQr(c tt|jt|jdD]\}}||k7rtcS||||} } t |t } t |t } | rJ| rH| j |jdg| j |jdgk7stcS| | k7rtcS| | k7stcSy)Nrrrr)rrkeysrrrr%r) r;rJr'rr(rr%lkrklvrvlhcrhcs r'visit_string_multi_dictz3TraversalComparatorStrategy.visit_string_multi_dicts" 499;  !5  &FBRx%%"XuRyBT;/CUK0Cs$$MM!$b&&t}}Q'7<=*)%%r%%% &r(c t|t}t|t}|rH|rF|j|jdg|j|jdgk7rtSy||k7rtS||k(Sr$)rrr%rr) r;rJr'rr(rr%rZr[s r' visit_multiz'TraversalComparatorStrategy.visit_multis{+ , 3"" a "%%dmmA&6;<&%<CZ! !5= r(c pt|||jdfi|t|||jdfi|k(Sr$)rrr&s r'visit_anon_namez+TraversalComparatorStrategy.visit_anon_namesN) t}}Q/ 35 & %q!1 57   r(c  ||k(Sr:r8r&s r' visit_booleanz)TraversalComparatorStrategy.visit_booleanrQr(c  ||k(Sr:r8r&s r'visit_operatorz*TraversalComparatorStrategy.visit_operatorrQr(c $|j|Sr:)_compare_type_affinityr&s r' visit_typez&TraversalComparatorStrategy.visit_types**511r(c  ||k(Sr:r8r&s r'visit_plain_dictz,TraversalComparatorStrategy.visit_plain_dict rQr(c  ||k(Sr:r8r&s r'visit_dialect_optionsz1TraversalComparatorStrategy.visit_dialect_optionsrQr(c F|r|r|j|jk(S||k(Sr:)_annotations_cache_keyr&s r'visit_annotations_keyz1TraversalComparatorStrategy.visit_annotations_keys1 E22667  5= r(c Ltd|Dtd|Dk(S)Nc3>K|]\}}|j|fywr:__code__rIfnc_keys r'rLzITraversalComparatorStrategy.visit_with_context_options.."s@ib%bkk5)@c3>K|]\}}|j|fywr:rqrss r'rLzITraversalComparatorStrategy.visit_with_context_options.."s$J %.RR[[% J rvrr&s r'visit_with_context_optionsz6TraversalComparatorStrategy.visit_with_context_optionss3@4@@EJ 27J E   r(c  ||k(Sr:r8r&s r'visit_plain_objz+TraversalComparatorStrategy.visit_plain_obj&rQr(c H||tS|j|jk(Sr:)rrr&s r'visit_named_ddl_elementz3TraversalComparatorStrategy.visit_named_ddl_element+s( < %%yyEJJ&&r(c t||dD]5\\}}\} } || k7rtcS|jj|| f7yNrrr?) r;rJr'rr(rr%l_clausel_strr_clauser_strs r'visit_prefix_sequencez1TraversalComparatorStrategy.visit_prefix_sequence4sU5@ %<5  8 0 Xu0%~%% !!8X"67  8r(c  t||dD]s\\}}} } \} } } }| |k7rtcS|jj|| f|jj|| f|jj| | fuy)N)NNNNrr?)r;rJr'rr(rr%l_target l_onclausel_froml_flagsr_target r_onclauser_fromr_flagss r'rz2TraversalComparatorStrategy.visit_setup_join_tuple?su0H I 0 3Xz67 3Xz67'!%% JJ  x2 3 JJ  z:6 7 JJ  vv. / 0r(c 0|j|||||fi|Sr:rr&s r'rz:TraversalComparatorStrategy.visit_memoized_select_entitiesMs,.t-- k4u @B  r(c t|d}t|d}t||dD]L\\} } \} } | | k7rtcS|| | f|| | fk7rtcS|jj | | fNy)Nc*|dj|dfSr$fullnamers r'zCTraversalComparatorStrategy.visit_table_hint_list..Ws473C3CT!W2Mr()rc*|dj|dfSr$rrs r'rzCTraversalComparatorStrategy.visit_table_hint_list..YsT!W%5%5tAw$?r(rr)rrrrr ) r;rJr'rr(rr% left_keys right_keysltableldialectrtablerdialects r'visit_table_hint_listz1TraversalComparatorStrategy.visit_table_hint_listTs4%MN  ? 7B z\7  4 2 VX 28#%%vx()UFH3E-FF%% !!66"23 4r(c  ||k(Sr:r8r&s r'visit_statement_hint_listz5TraversalComparatorStrategy.visit_statement_hint_listerQr(c tr:rr&s r'visit_unknown_structurez3TraversalComparatorStrategy.visit_unknown_structurejs "##r(c tt||dD]'\\}}\} } |j|| fi|r!tcSyr~)r_compare_dml_values_or_cer) r;rJr'rr(rr%rVrXrWrYs r'rz4TraversalComparatorStrategy.visit_dml_ordered_valuesosK #. %<#  & HRhr22411"b?B?%%  &r(c t|d}t|d}||k7ry|r|j||fi|sy|s||k7ry|j||fi|syy)NrFT)r/r")r;rXrYr%lvcervces r'rz5TraversalComparatorStrategy._compare_dml_values_or_cezslr/0r/0 4< ,$,,R:r:"(###B1b1r(c ||t|t|k7rtSt|tjr1t ||D]!\}}|j ||fi|rtcSyt|tjrtSt |j|jD]C\\} }\} }|j | | fi|stcS|j ||fi|r=tcSyr:)rGrrcollections_abcSequenceziprr) r;rJr'rr(rr%rXrYrVrWs r'rz,TraversalComparatorStrategy.visit_dml_valuess <5=CIU,C! ! dO44 5dE* *B5t55b"CC)) *77 8! ! '*$**, &F *"R(2r5t55b"CC))5t55b"CC))  *r(c t||dD]N\}}||tcSt||dD],\} } |j||| || fi|tus$tccSPyr5)rrr) r;rJr'rr(rr%lseqrseqldrds r'rz2TraversalComparatorStrategy.visit_dml_multi_valuess&dETB *JD$|t|%%%dDDA *B)D)) +r<GI&& *) * *r(c |j|jurTtj|jr2|j|j|jfi|rddgSt SdgSt S)Nrclauses)rris_associativerLrrr;rrr%s r'compare_expression_clauselistz9TraversalComparatorStrategy.compare_expression_clauselistsj ==ENN *'' 64444LL%--35' 22))"|#! !r(c *|j||fi|Sr:)rrs r'compare_clauselistz.TraversalComparatorStrategy.compare_clauselists1t11$DDDr(c |j|jk(rtj|jr|j|j|jfi|r(|j|j |j fi|sP|j|j|j fi|r,|j|j |jfi|rgdSt SddgSt S)N)rnegaterrrr)rris_commutativer"rrrrs r'compare_binaryz*TraversalComparatorStrategy.compare_binarys ==ENN *'' 6&D&&tyy%**CC***4::u{{IbI&D&&tyy%++DD***4::uzzHRHBB))"H--! !r(c |jdd}|jdd}|rg}nddg}|s|jd|S)N compare_keysTcompare_valuescallablerr)popr )r;rrr%rromits r'compare_bindparamz-TraversalComparatorStrategy.compare_bindparamsKvvnd3  0$7 D(D KK  r(N)r#rr$rr%rrpbool)2rtrurvrxrrr"r"rrr0rrrr:rrrrrLrrrPrSr\r^r`rbrdrgrirkrnrxrzr|rrrrrrrrrrrrrrr8r(r'r!r!s,I(\#\$\ \  \|4" &"&.) ,  9*& & 8D &   &. !   2   !  ' 8 0 4" $ & *.* "E"$ r(r!c(eZdZ ddZdZdZdZy)r c |f}|r||vr||j|}|D]<}|r|j|rtcSt|t|k(s6tcStS)zCompare ColumnElements using proxies and equivalent collections. This is a comparison strategy specific to the ORM. )unionshares_lineagerhashr)r;rrr equivalentsr% to_compareoths r'compare_column_elementz4ColIdentityComparatorStrategy.compare_column_elementsmX 5K/$U+11*=J "Ct2237$$dtE{*$$  " " !r(c *|j||fi|Sr:rrs r'compare_columnz,ColIdentityComparatorStrategy.compare_column*t**4="==r(c *|j||fi|Sr:rrs r' compare_labelz+ColIdentityComparatorStrategy.compare_labelrr(c "||urtStSr:)rrrs r' compare_tablez+ColIdentityComparatorStrategy.compare_tables!% }A>Ar(N)Tr8)rtrurvrrrrr8r(r'r r s9;"(>>Br(r )r#rr$rr%rrpr)r3z Type[Any]rprq)6 __future__r collectionsrcollections.abcabcrrrrryrrrr r r r r rr cache_keyrvisitorsrrrrrrr util.typingrsymbolrrCOMPARE_SUCCEEDEDr"r5r7r}rorrr0rrr2preload_moduler MemoizedSlotsr!r r8r(r'rs-#)! ",+** O, .$o)odN(#4+#4Lz2zz*+D0DN&' ./0L"68J8JL^B$?Br(