+
    Xj                    ~   ^ RI Ht ^ RIHt ^ RIHt ^ RIt^ RIHt ^ RI	t	^ RI
t
^ RI
Ht ^ RI
Ht ^ RI
Ht ^ RI
Ht ^ R	I
Ht ^ R
I
Ht ^ RI
Ht ^ RI
Ht ^ RI
Ht ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RI H!t! ]PD                  ! R4      t#Rt$Rt%R R lt&R R lt' ! R R ]4      t( ! R! R"](4      t)R# t* ! R$ R%]4      t+ ! R& R']4      t,],! 4       t-R( t. ! R) R*]4      t/]/! 4       t0]Pb                  ! R+4      R, 4       t2 ! R- R.]]Pf                  4      t4 ! R/ R0]44      t5R# )1    )annotations)dequeN)zip_longest)Any)Callable)Deque)Dict)Iterable)Optional)Set)Tuple)Type)	operators)HasCacheKey)_TraverseInternalsTypeanon_map)ExternallyTraversible)HasTraversalDispatch)HasTraverseInternals)util)langhelpers)Selfskip_traverseFTc               (    V ^8  d   QhRRRRRRRR/# )   obj1r   obj2kwreturnbool )formats   "u   /Users/wind/Downloads/Coruna-main学习资料A/backend/venv/lib/python3.14/site-packages/sqlalchemy/sql/traversals.py__annotate__r%   +   s(     . .# .S . . .    c                    VP                  R R4      '       d   \        4       pM
\        4       pVP                  ! W3/ VB # )use_proxiesF)getColIdentityComparatorStrategyTraversalComparatorStrategycompare)r   r   r   strategys   &&, r$   r,   r,   +   s9    	vvmU##02.0D-"--r&   c                    V ^8  d   QhRRRR/# )r   target_hierarchyz	Type[Any]r    Noner"   )r#   s   "r$   r%   r%   5   s      y T r&   c                4   \         P                  ! V 4       F}  p\        VR 4      '       g   K  \        VR4      '       g   K+  VP                  4        \        P                  VVP                  R4       \        P                  VVP                  R4       K  	  R# )_generate_cache_attrs_traverse_internals#_generated_copy_internals_traversal!_generated_get_children_traversalN)r   walk_subclasseshasattrr2   _copy_internalsgenerate_dispatchr3   _get_children)r/   clss   & r$   _preconfigure_traversalsr<   5   s    ##$453/00W&6
 6
 %%'--''5
 ++''3 6r&   c                      ] tR t^GtRtRt]P                  '       d   R R ltR R lt	R R lt
]R R	 l4       t]R
 R l4       t]R R l4       tR R ltR R ltR R ltR R ltRtR# )HasShallowCopyzattribute-wide operations that are useful for classes that use
__slots__ and therefore can't operate on their attributes in a dictionary.


c                    V ^8  d   QhRRRR/# r   otherr   r    r0   r"   )r#   s   "r$   r%   HasShallowCopy.__annotate__R   s    MM4MDMr&   c                	    R # Nr"   )selfrA   s   &&r$   !_generated_shallow_copy_traversal0HasShallowCopy._generated_shallow_copy_traversalR       #r&   c                    V ^8  d   QhRRRR/# r   dDict[str, Any]r    r0   r"   )r#   s   "r$   r%   rB   T   s     	 	#		r&   c                	    R # rD   r"   )rE   rK   s   &&r$   &_generated_shallow_from_dict_traversal5HasShallowCopy._generated_shallow_from_dict_traversalT   s    r&   c                   V ^8  d   QhRR/# r   r    rL   r"   )r#   s   "r$   r%   rB   X   s    MM.Mr&   c                	    R # rD   r"   rE   s   &r$   $_generated_shallow_to_dict_traversal3HasShallowCopy._generated_shallow_to_dict_traversalX   rH   r&   c               $    V ^8  d   QhRRRRRR/# )r   internal_dispatchr   method_namestrr    zCallable[[Self, Self], None]r"   )r#   s   "r$   r%   rB   [   s-     
I 
I1
I 
I 
&	
Ir&   c                	t    R P                  R V 4       4      pRV RV R 2p\        P                  ! V/ V4      # )
c              3  6   "   T F  w  rR V RV 2x  K  	  R# 5i)z
    other.z = self.Nr"   .0attrname_s   &  r$   	<genexpr>8HasShallowCopy._generate_shallow_copy.<locals>.<genexpr>`   s&      
0 
(8*50   def z(self, other):
joinr   _exec_code_in_envr;   rW   rX   code	meth_texts   &&&  r$   _generate_shallow_copy%HasShallowCopy._generate_shallow_copyZ   sK     yy 
0
 
 ;-'7vR@	,,YKHHr&   c               $    V ^8  d   QhRRRRRR/# )r   rW   r   rX   rY   r    z Callable[[Self], Dict[str, Any]]r"   )r#   s   "r$   r%   rB   h   s-     
I 
I1
I 
I 
*	
Ir&   c                	t    R P                  R V 4       4      pRV RV R2p\        P                  ! V/ V4      # )z,
c              3  6   "   T F  w  rR V RV 2x  K  	  R# 5i)z    'z': self.Nr"   r]   s   &  r$   ra   ;HasShallowCopy._generate_shallow_to_dict.<locals>.<genexpr>m   s&      
0 H:XhZ00rc   rd   z(self):
    return {z}
re   rh   s   &&&  r$   _generate_shallow_to_dict(HasShallowCopy._generate_shallow_to_dictg   sK     zz 
0
 
 ;-'=dV4H	,,YKHHr&   c               $    V ^8  d   QhRRRRRR/# )r   rW   r   rX   rY   r    z&Callable[[Self, Dict[str, Any]], None]r"   )r#   s   "r$   r%   rB   u   s-     
I 
I1
I 
I 
0	
Ir&   c                	t    R P                  R V 4       4      pRV RV R 2p\        P                  ! V/ V4      # )r[   c              3  8   "   T F  w  rR V RV R2x  K  	  R# 5i)z	    self.z = d['z']Nr"   r]   s   &  r$   ra   =HasShallowCopy._generate_shallow_from_dict.<locals>.<genexpr>z   s(      
0 zz40s   rd   z(self, d):
re   rh   s   &&&  r$   _generate_shallow_from_dict*HasShallowCopy._generate_shallow_from_dictt   sJ     yy 
0
 
 ;-|D6<	,,YKHHr&   c                    V ^8  d   QhRRRR/# rJ   r"   )r#   s   "r$   r%   rB      s     # #N #t #r&   c                	    V P                   p VP                  R ,          pV! W4       R#   \         d&    T P                  TP                  R 4      pY2n         L9i ; i)rN   N)	__class____dict__KeyErrorrw   r3   rN   )rE   rK   r;   shallow_from_dicts   &&  r$   _shallow_from_dict!HasShallowCopy._shallow_from_dict   sf    nn
	K #8! 	$"  	K $ @ @''8!
 :K6	K   + -AAc                   V ^8  d   QhRR/# rQ   r"   )r#   s   "r$   r%   rB      s     % %. %r&   c                	    V P                   p VP                  R ,          pV! V 4      #   \         d&    T P                  TP                  R 4      pY!n         L7i ; i)rT   )r{   r|   r}   rq   r3   rT   )rE   r;   shallow_to_dicts   &  r$   _shallow_to_dictHasShallowCopy._shallow_to_dict   sg    nn		G!ll6O t$$  	G"<<'')OO 8G4	Gs   ) -AAc                    V ^8  d   QhRRRR/# r@   r"   )r#   s   "r$   r%   rB      s     " "d "t "r&   c                	    V P                   p VP                  R ,          pV! W4       R#   \         d&    T P                  TP                  R 4      pY2n         L9i ; i)rF   N)r{   r|   r}   rk   r3   rF   )rE   rA   r;   shallow_copys   &&  r$   _shallow_copy_toHasShallowCopy._shallow_copy_to   sb    nn	A<<(KLL 	T!  	A66'')LL 5A1	Ar   c                    V ^8  d   QhRRRR/# )r   r   r   r    r   r"   )r#   s   "r$   r%   rB      s      3 4 r&   c                r    V P                   P                  V P                   4      pV P                  V4       V# )zCreate a shallow copyr{   __new__r   )rE   r   cs   &, r$   _cloneHasShallowCopy._clone   s-    NN""4>>2a r&   r"   N)__name__
__module____qualname____firstlineno____doc__	__slots__typingTYPE_CHECKINGrF   rN   rT   classmethodrk   rq   rw   r   r   r   r   __static_attributes__r"   r&   r$   r>   r>   G   s     IM	 	N
I 
I 
I 
I 
I 
I#$%"" r&   r>   c                  *    ] tR t^tRtRtR R ltRtR# )GenerativeOnTraversalzSupplies Generative behavior but making use of traversals to shallow
copy.

.. seealso::

    :class:`sqlalchemy.sql.base.Generative`


c                   V ^8  d   QhRR/# )r   r    r   r"   )r#   s   "r$   r%   "GenerativeOnTraversal.__annotate__   s      4 r&   c                	b    V P                   pVP                  V4      pV P                  V4       V# rD   r   )rE   r;   ss   &  r$   	_generateGenerativeOnTraversal._generate   s,    nnKKa r&   r"   N)r   r   r   r   r   r   r   r   r"   r&   r$   r   r      s     I r&   r   c                "    V P                  4       # rD   )r   )elementr   s   &,r$   r   r      s    >>r&   c                  4    ] tR t^tRtR tRR/R R lltRtR# )HasCopyInternalsc                	    \        4       hrD   NotImplementedError)rE   r   s   &,r$   r   HasCopyInternals._clone   s    !##r&   
omit_attrsc               $    V ^8  d   QhRRRRRR/# )r   r   zIterable[str]r   r   r    r0   r"   )r#   s   "r$   r%   HasCopyInternals.__annotate__   s$     4 4*47:4	4r&   c                    V P                   p\        P                  YR4       F0  w  rEpYA9   d   K  Tf   K  T! Y@T3/ TB pTf   K$  \	        YT4       K2  	  R#   \         d     R# i ; i)aD  Reassign 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).

Nr4   )r3   AttributeErrorr8   run_generated_dispatchsetattr)rE   r   r   traverse_internalsr_   objmethresults   &$,     r$   r8    HasCopyInternals._copy_internals   sz    	!%!9!9
 $3#I#I&K$
H4 %hc8R8%DF3$
	  		s   A A)(A)r"   N)r   r   r   r   r   r   r8   r   r"   r&   r$   r   r      s    I$4-/4 4r&   r   c                      ] tR t^tRt]3R lt]3R lt]3R lt]3R lt	]3R lt
]3R lt]3R lt]3R	 ltR
 t]3R lt]3R lt]3R lt]3R ltRtR# )_CopyInternalsTraversalziGenerate a _copy_internals internal traversal dispatch for classes
with a _traverse_internals collection.c                	    V! V3/ VB # rD   r"   rE   r_   parentr   cloner   s   &&&&&,r$   visit_clauseelement+_CopyInternalsTraversal.visit_clauseelement   s     W###r&   c                	<    V Uu. uF  qd! V3/ VB NK  	  up# u upi rD   r"   rE   r_   r   r   r   r   clauses   &&&&&, r$   visit_clauseelement_list0_CopyInternalsTraversal.visit_clauseelement_list   &     3::'f##':::   c           
     	N    \        V Uu. uF  qd! V3/ VB NK  	  up4      # u upi rD   tupler   s   &&&&&, r$   visit_clauseelement_tuple1_CopyInternalsTraversal.visit_clauseelement_tuple  +     @feF)b)@AA@   "c           
     	N    \        V Uu. uF  qd! V3/ VB NK  	  up4      # u upi rD   r   r   s   &&&&&, r$   visit_executable_options0_CopyInternalsTraversal.visit_executable_options
  r   r   c                	<    V Uu0 uF  qd! V3/ VB kK  	  up# u upi rD   r"   r   s   &&&&&, r$   !visit_clauseelement_unordered_set9_CopyInternalsTraversal.visit_clauseelement_unordered_set  r   r   c                	   aa V Uu. uF7  p\         ;QJ d    . VV3R  lV 4       F  NK  	  5M! VV3R  lV 4       4      NK9  	  up# u upi )c              3  6   <"   T F  pS! V3/ SB x  K  	  R # 5irD   r"   )r^   tup_elemr   r   s   & r$   ra   E_CopyInternalsTraversal.visit_clauseelement_tuples.<locals>.<genexpr>  s     =H%'B's   r   )rE   r_   r   r   r   r   elems   &&&&fl r$   visit_clauseelement_tuples2_CopyInternalsTraversal.visit_clauseelement_tuples  sC    
  
 E==EE===
 	
 
s
   A-Ac           
     	d    VP                  4        UUu/ uF  w  rgWd! V3/ VB bK  	  upp# u uppi rD   )itemsrE   r_   r   r   r   r   keyvalues   &&&&&,  r$   visit_string_clauseelement_dict7_CopyInternalsTraversal.visit_string_clauseelement_dict  s4     ;B--/J/JCU5'B''/JJJs   ,c                	n   aa \         ;QJ d    . VV3R  lV 4       F  NK  	  5# ! VV3R  lV 4       4      # )c              3     <"   T F5  w  rr4Ve
   S! V3/ SB MR Ve
   S! V3/ SB MR Ve
   S! V3/ SB MR V3x  K7  	  R # 5irD   r"   )r^   targetonclausefrom_flagsr   r   s   &    r$   ra   A_CopyInternalsTraversal.visit_setup_join_tuple.<locals>.<genexpr>$  sb      
 5<05 (.'9f##t)1)=h%"%4&+&7e"r"T	 5<s   =A r   r   s   &&&&flr$   visit_setup_join_tuple._CopyInternalsTraversal.visit_setup_join_tuple!  s;     u 
 5<
u 	
u 
 5<
 
 	
r&   c                	*    V P                   ! WV3/ VB # rD   r   )rE   r_   r   r   r   s   &&&&,r$   visit_memoized_select_entities6_CopyInternalsTraversal.visit_memoized_select_entities.  s    --hN2NNr&   c           
     	    V UUu. uF+  w  rg\        VR 4      '       d
   V! V3/ VB MTV! V3/ VB 3NK-  	  upp# u uppi __clause_element__r7   r   s   &&&&&,  r$   visit_dml_ordered_values0_CopyInternalsTraversal.visit_dml_ordered_values1  s^     &

 &
 s$899 #$$e"r" &

 
	
 

s   1;c           
     	    VP                  4        UUu/ uF*  w  rg\        VR 4      '       d
   V! V3/ VB MTV! V3/ VB bK,  	  upp# u uppi r   )r   r7   r   s   &&&&&,  r$   visit_dml_values(_CopyInternalsTraversal.visit_dml_valuesA  s^    
 &mmo	
 .
 %,C1E$F$Fc R CU!b!"-	
 	
 
s   0Ac           
     	|   aa VV3R  lpV UUu. uF  pV Uu. uF
  q! V4      NK  	  upNK  	  upp# u upi u uppi )c           
       < \        V \        \        34      '       d.   V  Uu. uF   p\        VR 4      '       d
   S! V3/ SB MTNK"  	  up# \        V \        4      '       d\   V P                  4        UUu/ uF>  w  r!\        VR 4      '       d
   S! V3/ SB MT\        VR 4      '       d
   S! V3/ SB MTbK@  	  upp# Q hu upi u uppi r   )
isinstancelistr   r7   dictr   )r   r   r   r   r   s   &  r$   copy<_CopyInternalsTraversal.visit_dml_multi_values.<locals>.copyN  s    $u.. "& "& #5*>?? e*r*"# "&  D$'' '+jjl '3
 #3(<== c(R(  #5*>?? e*r*"# '3  u/s   &B>4ACr"   )	rE   r_   r   r   r   r   r   sequencesub_elements	   &&&&fl   r$   visit_dml_multi_values._CopyInternalsTraversal.visit_dml_multi_valuesI  sF    
	: $
# 3;;(;T+(;#
 	
;
s   	8388c                	    V# rD   r"   r   s   &&&&&,r$   visit_propagate_attrs-_CopyInternalsTraversal.visit_propagate_attrsn  s	     r&   r"   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r"   r&   r$   r   r      s    . 06$ 06; 06B 06B 06; 06
 06K 06
O 06
  AG 
 06#
L 06 r&   r   c                t    \        V R 4      '       d&   \        V RR4      '       g   V P                  4       p K7  V # )r   is_clause_elementF)r7   getattrr   )r   s   &r$   _flatten_clauseelementr
  w  s9    
'/
0
0$e: : ,,.Nr&   c                  t    ] tR tRtRtR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tRtR# )_GetChildrenTraversali  zmGenerate a _children_traversal internal traversal dispatch for classes
with a _traverse_internals collection.c                	    R# Nr"   r"   rE   r   r   s   &&,r$   visit_has_cache_key)_GetChildrenTraversal.visit_has_cache_key  s	     	r&   c                	    V3# rD   r"   r  s   &&,r$   r   )_GetChildrenTraversal.visit_clauseelement  s
    zr&   c                	    V# rD   r"   r  s   &&,r$   r   ._GetChildrenTraversal.visit_clauseelement_list      r&   c                	    V# rD   r"   r  s   &&,r$   r   /_GetChildrenTraversal.visit_clauseelement_tuple  r  r&   c                	@    \         P                  P                  V4      # rD   )	itertoolschainfrom_iterabler  s   &&,r$   r   0_GetChildrenTraversal.visit_clauseelement_tuples  s    ,,W55r&   c                	    R# r  r"   r  s   &&,r$   ,visit_fromclause_canonical_column_collectionB_GetChildrenTraversal.visit_fromclause_canonical_column_collection      	r&   c                	"    VP                  4       # rD   )valuesr  s   &&,r$   r   5_GetChildrenTraversal.visit_string_clauseelement_dict  s    ~~r&   c                	    V# rD   r"   r  s   &&,r$   visit_fromclause_ordered_set2_GetChildrenTraversal.visit_fromclause_ordered_set  r  r&   c                	    V# rD   r"   r  s   &&,r$   r   7_GetChildrenTraversal.visit_clauseelement_unordered_set  r  r&   c              +  	   "   V F\  w  r4rVVe   Vx  \        V\        4      '       g   \        V4      x  Vf   K7  \        V\        4      '       d   KO  \        V4      x  K^  	  R # 5irD   )r   rY   r
  )rE   r   r   r   r   r   r   s   &&,    r$   r   ,_GetChildrenTraversal.visit_setup_join_tuple  sT     .5*Fe fc**,V44#Jx,E,E,X66 /6s   5A'A'A'c                	(    V P                   ! V3/ VB # rD   r   r  s   &&,r$   r   4_GetChildrenTraversal.visit_memoized_select_entities  s    --g<<<r&   c              +  	X   "   V F  w  r4\        VR 4      '       d   Vx  Vx  K!  	  R# 5ir   Nr   )rE   r   r   kvs   &&,  r$   r   ._GetChildrenTraversal.visit_dml_ordered_values  s)     DAq.//G s   (*c              +  	   "   V Uu0 uF  p\        VR 4      '       g   K  VkK  	  ppVP                  V4      p\        V4       F  pW,          x  K  	  V F  pVx  W,          x  K  	  R# u upi 5ir/  )r7   symmetric_differencesorted)rE   r   r   r0  expr_values
str_valuess   &&,   r$   r   &_GetChildrenTraversal.visit_dml_values  si     ")N'QWQ8L-Mqq'N 55g>

#A* $AG*  Os   A3A.A.AA3c                	    R# r  r"   r  s   &&,r$   r  ,_GetChildrenTraversal.visit_dml_multi_values  r!  r&   c                	    R# r  r"   r  s   &&,r$   r  +_GetChildrenTraversal.visit_propagate_attrs  r!  r&   r"   N)r   r   r   r   r   r  r   r   r   r   r  r   r&  r   r   r   r   r   r  r  r   r"   r&   r$   r  r    sR    .6 	7=r&   r  zsqlalchemy.sql.elementsc                    \        V\        P                  P                  P                  4      '       d   VP                  V4      pV# rD   )r   r   	preloadedsql_elements_anonymous_label	apply_map)r   namer   r   s   &&&,r$   _resolve_name_for_comparerC    s2    $33DDEE~~h'Kr&   c                  4   ] tR tRtR3tR tR tR R ltR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R  t"R! t#R" t$R# t%R$ t&R% t'R& t(R' t)R( t*R) t+R* t,R+ t-R, t.R- t/R. t0R/ t1R0 t2R1t3R2# )4r+   i  c                	B    \        4       V n        \        4       V n        R # rD   )r   stacksetcacherS   s   &r$   __init__$TraversalComparatorStrategy.__init__  s     G 	
 U
r&   c                	*    \        4       \        4       3# rD   r   rS   s   &r$   _memoized_attr_anon_map3TraversalComparatorStrategy._memoized_attr_anon_map  s    
HJ''r&   c               (    V ^8  d   QhRRRRRRRR/# )r   r   r   r   r   r   r    r!   r"   )r#   s   "r$   r%   (TraversalComparatorStrategy.__annotate__  s8     \ \#\ $\ 	\
 
\r&   c                	   V P                   pV P                  pVP                  R R4      pVP                  W34       V'       Ed   VP	                  4       w  rxWxJ d   K"  Ve   Vf   R# Wx3V9   d   K6  VP                  Wx34       VP                  p	WP                  8w  d   R# \        V RV	,          R4      p
V
'       d#   V
! Wx3/ VB pV\        J d   R# V\        J d   K  MR	p\        VP                  VP                  R
R7       F  w  w  rw  rV'       g   VR8X  g   VR8X  d   K"  W8w  g   WJd    R# W9   d   K8  Vf   Q hVf   Q hVf   Q hV P                  V4      pVf)   Q V P                   RV P                  V,           R24       h\        P                   ! V4      ! V4      p\        P                   ! V4      ! V4      pVf
   Ve    R# K  Vf    R# V! WVVV3/ VB pV\        J g   K   R# 	  EK  R# )compare_annotationsFNz
compare_%s	fillvalue_annotationsz has no dispatch for ''Tr"   NN)rF  rH  r)   appendpopleftadd__visit_name__r	  COMPARE_FAILEDSKIP_TRAVERSEr   r3   dispatchr{   _dispatch_lookupoperator
attrgetter)rE   r   r   r   rF  rH  rQ  leftright
visit_namer   attributes_comparedleft_attrnameleft_visit_symright_attrnameright_visit_symr]  
left_childright_child
comparisons   &&&,                r$   r,   #TraversalComparatorStrategy.compare  s"    



 ff%:EBd\"e--/KD}%'IItm$,,J1114
!:DAD&*4&="&=#&.8 (M9 : ')#
 (())&/1 +"n4&.8 "3%< "9%111$000%111==8+ ~~& '--n=>aA+ &00?E
&11.A%H%".$  ( %!UKKM
 / UX r&   c                	H    V P                  4       pVP                  ! W3/ VB # rD   )r{   r,   )rE   r   r   r   
comparators   &&&, r$   compare_inner)TraversalComparatorStrategy.compare_inner?  s$    ^^%
!!$333r&   c                	    VP                  V P                  ^ ,          . 4      VP                  V P                  ^,          . 4      8w  d   \        # R# r   N)_gen_cache_keyr   r[  rE   r_   left_parentra  right_parentrb  r   s   &&&&&&,r$   r  /TraversalComparatorStrategy.visit_has_cache_keyC  sJ     t}}Q/48L8LMM!b9
 
 "!
r&   c                	f    V P                  VP                  R R4      VP                  R R4      4      # )plugin_subjectN)ro  r)   rt  s   &&&&&&,r$   r  1TraversalComparatorStrategy.visit_propagate_attrsK  s4     !!HH%t,eii8H$.O
 	
r&   c                	   \        W5R R7       Ft  w  rxVf   Ve	   \        u # K  Vf	   \        u # VP                  V P                  ^ ,          . 4      VP                  V P                  ^,          . 4      8w  g   Kn  \        u # 	  R # NrR  )r   r[  rs  r   	rE   r_   ru  ra  rv  rb  r   lrs	   &&&&&&,  r$   visit_has_cache_key_list4TraversalComparatorStrategy.visit_has_cache_key_listR  sv      t<DAy=))%%a 0"59I9Ia ":  &% =r&   c                	`   \        W5R R7       F  w  rxVf   Ve	   \        u # K  Vf	   \        u # VP                  '       d$   VP                  V P                  ^ ,          . 4      MTVP                  '       d$   VP                  V P                  ^,          . 4      MT8w  g   K  \        u # 	  R # r|  )r   r[  _is_has_cache_keyrs  r   r}  s	   &&&&&&,  r$   r   4TraversalComparatorStrategy.visit_executable_optionsc  s      t<DAy=))%% &&&   q!126 &&&   q!126 &%% =r&   c                	>    V P                   P                  W534       R # rD   )rF  rW  rt  s   &&&&&&,r$   r   /TraversalComparatorStrategy.visit_clauseelementz  s     	

4-(r&   c                	j    \        W5R R7       F!  w  rxV P                  P                  Wx34       K#  	  R # r|  r   rF  rW  )	rE   r_   ru  ra  rv  rb  r   lcolrcols	   &&&&&&,  r$   r  HTraversalComparatorStrategy.visit_fromclause_canonical_column_collection  s,     &dTBJDJJtl+ Cr&   c                	    R # rD   r"   rt  s   &&&&&&,r$   *visit_fromclause_derived_column_collectionFTraversalComparatorStrategy.visit_fromclause_derived_column_collection  s     	r&   c                	    \        \        V4      \        V4      R R7       F<  w  rxWx8w  d	   \        u # V P                  P	                  W7,          WX,          34       K>  	  R # r|  )r   r5  r[  rF  rW  )	rE   r_   ru  ra  rv  rb  r   lstrrstrs	   &&&&&&,  r$   r   ;TraversalComparatorStrategy.visit_string_clauseelement_dict  sL     &4L&-4
JD |%%JJtz5;78
r&   c                	    \        W5R R7       FG  w  rxVe   Vf	   \        u # \        WxR R7       F!  w  rV P                  P                  W34       K#  	  KI  	  R # r|  r   r[  rF  rW  )rE   r_   ru  ra  rv  rb  r   ltuprtupr~  r  s   &&&&&&,    r$   r   6TraversalComparatorStrategy.visit_clauseelement_tuples  sO     &dTBJD|t|%%#D$?

!!1&) @	 Cr&   c                	j    \        W5R R7       F!  w  rxV P                  P                  Wx34       K#  	  R # r|  r  r}  s	   &&&&&&,  r$   r   4TraversalComparatorStrategy.visit_clauseelement_list  +      t<DAJJqf% =r&   c                	j    \        W5R R7       F!  w  rxV P                  P                  Wx34       K#  	  R # r|  r  r}  s	   &&&&&&,  r$   r   5TraversalComparatorStrategy.visit_clauseelement_tuple  r  r&   c                	6   Vf   VR J # \        4       pV FQ  p\        V4      P                  V4       F0  pV P                  ! WV3/ VB '       g   K  VP                  V4        KO  	  KS  	  \	        V4      \	        V4      u;8H  ;'       d    \	        V4      8H  # u # rD   )rG  
differencero  rY  len)rE   seq1seq2r   	completedr   other_clauses   &&&,   r$   _compare_unordered_sequences8TraversalComparatorStrategy._compare_unordered_sequences  s    <4<!$	F #D	 4 4Y ?%%fAbAAMM,/ !@ 
 9~T77c$i7777r&   c                	(    V P                   ! W53/ VB # rD   )r  rt  s   &&&&&&,r$   r   =TraversalComparatorStrategy.visit_clauseelement_unordered_set  s     00CCCr&   c                	j    \        W5R R7       F!  w  rxV P                  P                  Wx34       K#  	  R # r|  r  r}  s	   &&&&&&,  r$   r&  8TraversalComparatorStrategy.visit_fromclause_ordered_set  r  r&   c                	
    W58H  # rD   r"   rt  s   &&&&&&,r$   visit_string(TraversalComparatorStrategy.visit_string       }r&   c                	
    W58H  # rD   r"   rt  s   &&&&&&,r$   visit_string_list-TraversalComparatorStrategy.visit_string_list  r  r&   c                	   \        \        VP                  4       4      \        VP                  4       4      RR7       F  w  rxWx8w  d	   \        u # W7,          WX,          r\	        V\
        4      p\	        V\
        4      pV'       d\   V'       dT   V	P                  V P                  ^ ,          . 4      V
P                  V P                  ^,          . 4      8w  d	   \        u # K  W8w  d	   \        u # W8w  g   K  \        u # 	  R # NrR  rV  )r   r5  keysr[  r   r   rs  r   )rE   r_   ru  ra  rv  rb  r   lkrklvrvlhcrhcs   &&&&&&,      r$   visit_string_multi_dict3TraversalComparatorStrategy.visit_string_multi_dict  s     "499;

!5
FB x%%XuyT;/CUK0Cs$$MM!$b&&t}}Q'7<= *)= %%%%%
r&   c                	$   \        V\        4      p\        V\        4      pV'       dZ   V'       dR   VP                  V P                  ^ ,          . 4      VP                  V P                  ^,          . 4      8w  d   \        # R# Wx8w  d   \        # W58H  # rr  )r   r   rs  r   r[  )	rE   r_   ru  ra  rv  rb  r   r  r  s	   &&&&&&,  r$   visit_multi'TraversalComparatorStrategy.visit_multi  s}     {+,3""a "%%dmmA&6;< &%< Z!!= r&   c                	|    \        W#V P                  ^ ,          3/ VB \        WEV P                  ^,          3/ VB 8H  # r   )rC  r   rt  s   &&&&&&,r$   visit_anon_name+TraversalComparatorStrategy.visit_anon_name  sJ     )t}}Q/
35
&q!1
57

 	
r&   c                	
    W58H  # rD   r"   rt  s   &&&&&&,r$   visit_boolean)TraversalComparatorStrategy.visit_boolean  r  r&   c                	
    W58H  # rD   r"   rt  s   &&&&&&,r$   visit_operator*TraversalComparatorStrategy.visit_operator  r  r&   c                	$    VP                  V4      # rD   )_compare_type_affinityrt  s   &&&&&&,r$   
visit_type&TraversalComparatorStrategy.visit_type  s     **511r&   c                	
    W58H  # rD   r"   rt  s   &&&&&&,r$   visit_plain_dict,TraversalComparatorStrategy.visit_plain_dict	  r  r&   c                	
    W58H  # rD   r"   rt  s   &&&&&&,r$   visit_dialect_options1TraversalComparatorStrategy.visit_dialect_options  r  r&   c                	\    V'       d"   V'       d   VP                   VP                   8H  # W58H  # rD   )_annotations_cache_keyrt  s   &&&&&&,r$   visit_annotations_key1TraversalComparatorStrategy.visit_annotations_key  s/     E22667
 = r&   c                	    \         ;QJ d    . R  V 4       F  NK  	  5M! R  V 4       4      \         ;QJ d    . R V 4       F  NK  	  58H  # ! R V 4       4      8H  # )c              3  B   "   T F  w  rVP                   V3x  K  	  R # 5irD   __code__r^   fnc_keys   &  r$   ra   ITraversalComparatorStrategy.visit_with_context_options.<locals>.<genexpr>!  s     @4ibbkk5)4   c              3  B   "   T F  w  rVP                   V3x  K  	  R # 5irD   r  r  s   &  r$   ra   r  !  s      J
27YRR[[% %r  r   rt  s   &&&&&&,r$   visit_with_context_options6TraversalComparatorStrategy.visit_with_context_options  s`     u@4@uu@4@@EE J
27J
E 
 	
E J
27J
 E
 
 	
r&   c                	
    W58H  # rD   r"   rt  s   &&&&&&,r$   visit_plain_obj+TraversalComparatorStrategy.visit_plain_obj%  r  r&   c                	P    Vf   Ve   \         # VP                  VP                  8H  # rD   )r[  rB  rt  s   &&&&&&,r$   visit_named_ddl_element3TraversalComparatorStrategy.visit_named_ddl_element*  s(     < %%yyEJJ&&r&   c                	    \        W5RR7       F4  w  w  rxw  rW8w  d	   \        u # V P                  P                  Wy34       K6  	  R # r  r  )rE   r_   ru  ra  rv  rb  r   l_clausel_strr_clauser_strs   &&&&&&,    r$   visit_prefix_sequence1TraversalComparatorStrategy.visit_prefix_sequence3  sF     5@<5
0X0 ~%%

!!8"675
r&   c                	   \        W5RR7       Fn  w  w  rxrw  rrW8w  d	   \        u # V P                  P                  W{34       V P                  P                  W34       V P                  P                  W34       Kp  	  R # )NrR  )NNNNr  )rE   r_   ru  ra  rv  rb  r   l_target
l_onclausel_froml_flagsr_target
r_onclauser_fromr_flagss   &&&&&&,        r$   r   2TraversalComparatorStrategy.visit_setup_join_tuple>  ss     0HI
3X63X6!%%JJx23JJz67JJv./ Jr&   c                	,    V P                   ! WW4V3/ VB # rD   r   rt  s   &&&&&&,r$   r   :TraversalComparatorStrategy.visit_memoized_select_entitiesL  s&     --4u
@B
 	
r&   c                	   \        VR  R7      p\        VR R7      p\        WxRR7       FS  w  w  rw  rW8w  d	   \        u # W9V
3,          W[V3,          8w  d	   \        u # V P                  P	                  W34       KU  	  R# )c                :    V ^ ,          P                   V ^,          3# r  fullnamer   s   &r$   <lambda>CTraversalComparatorStrategy.visit_table_hint_list.<locals>.<lambda>V  s    473C3CT!W2Mr&   )r   c                :    V ^ ,          P                   V ^,          3# r  r  r   s   &r$   r  r  X  s    T!W%5%5tAw$?r&   NrR  rV  )r5  r   r[  rF  rW  )rE   r_   ru  ra  rv  rb  r   	left_keys
right_keysltableldialectrtablerdialects   &&&&&&,      r$   visit_table_hint_list1TraversalComparatorStrategy.visit_table_hint_listS  s     4%MN	?

 7B\7
2V 2 #%%x()UH3E-FF%%

!!6"237
r&   c                	
    W58H  # rD   r"   rt  s   &&&&&&,r$   visit_statement_hint_list5TraversalComparatorStrategy.visit_statement_hint_listd  r  r&   c                	    \        4       hrD   r   rt  s   &&&&&&,r$   visit_unknown_structure3TraversalComparatorStrategy.visit_unknown_structurei  s     "##r&   c                	~    \        W5RR7       F+  w  w  rxw  rV P                  ! Wy3/ VB '       d   K%  \        u # 	  R # r  )r   _compare_dml_values_or_cer[  )rE   r_   ru  ra  rv  rb  r   r  r  r  r  s   &&&&&&,    r$   r   4TraversalComparatorStrategy.visit_dml_ordered_valuesn  s?    
 #.<#
HRhr 11"?B??%%	#
r&   c                	    \        VR 4      p\        VR 4      pWE8w  d   R# V'       d   V P                  ! W3/ VB '       g   R# V'       g	   W8w  d   R# V P                  ! W3/ VB '       g   R# R# )r   FT)r7   ro  )rE   r  r  r   lvcervces   &&&,  r$   r  5TraversalComparatorStrategy._compare_dml_values_or_cey  se    r/0r/0<$,,R:r::"(##B1b11r&   c                	>   Ve   Ve   \        V4      \        V4      8w  d   \        # \        V\        P                  4      '       d8   \        W54       F&  w  rxV P                  ! Wx3/ VB '       d   K   \        u # 	  R # \        V\        P                  4      '       d   \        # \        VP                  4       VP                  4       4       FL  w  w  rw  rV P                  ! W3/ VB '       g	   \        u # V P                  ! Wx3/ VB '       d   KF  \        u # 	  R # rD   )r  r[  r   collections_abcSequencezipr  r   )rE   r_   ru  ra  rv  rb  r   r  r  r  r  s   &&&&&&,    r$   r   ,TraversalComparatorStrategy.visit_dml_values  s     <5=CIU,C!!dO4455d*55bCCC)) + 7788!! '*$**,&F"(255bCCC))55bCCC))	 'Gr&   c           	     	    \        W5R R7       FR  w  rxVe   Vf	   \        u # \        WxR R7       F,  w  rV P                  ! WWV
3/ VB \        J g   K$  \        u u # 	  KT  	  R # r|  )r   r[  r   )rE   r_   ru  ra  rv  rb  r   lseqrseqldrds   &&&&&&,    r$   r  2TraversalComparatorStrategy.visit_dml_multi_values  sj     &dTBJD|t|%%%dDA)) rGI &&
 *) B	 Cr&   c                	   VP                   VP                   J db   \        P                  ! VP                   4      '       d9   V P                  ! VP                  VP                  3/ VB '       d   R R.# \
        # R .# \
        # )r_  clauses)r_  r   is_associativer  r%  r[  rE   ra  rb  r   s   &&&,r$   compare_expression_clauselist9TraversalComparatorStrategy.compare_expression_clauselist  sp    ==ENN*''6644LL%--35  '	22))"|#!!r&   c                	(    V P                   ! W3/ VB # rD   )r(  r'  s   &&&,r$   compare_clauselist.TraversalComparatorStrategy.compare_clauselist  s    11$DDDr&   c                	   VP                   VP                   8X  d   \        P                  ! VP                   4      '       d   V P                  ! VP                  VP                  3/ VB '       d/   V P                  ! VP
                  VP
                  3/ VB '       g]   V P                  ! VP                  VP
                  3/ VB '       d3   V P                  ! VP
                  VP                  3/ VB '       d   . RO# \        # R R.# \        # )r_  negate)r_  r.  ra  rb  )r_  r   is_commutativero  ra  rb  r[  r'  s   &&&,r$   compare_binary*TraversalComparatorStrategy.compare_binary  s    ==ENN*''66&&tyy%**CCC**4::u{{IbII&&tyy%++DDD**4::uzzHRHHBB))"H--!!r&   c                	    VP                  R R4      pVP                  RR4      pV'       d   . pMRR.pV'       g   VP                  R4       V# )compare_keysTcompare_valuescallabler   r   )poprW  )rE   ra  rb  r   r3  r4  omits   &&&,   r$   compare_bindparam-TraversalComparatorStrategy.compare_bindparam  sK    vvnd3 0$7D (DKKr&   )rH  rF  N)rF  rH  r   )4r   r   r   r   r   rI  rL  r,   ro  r  r  r  r   r   r  r  r   r   r   r   r  r   r&  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r
  r  r  r   r  r   r  r(  r+  r0  r8  r   r"   r&   r$   r+   r+     s    ,I(\|4"
&"&.)
,
9*&&
8D
&

&.!


2


	!

'	80
4"
$
	&*.* "E"$r&   r+   c                  2    ] tR tRtRR ltR tR tR tRtR# )	r*   i  c                    V3pV'       d   W$9   d   WB,          P                  V4      pV FK  pV'       d    VP                  V4      '       d	   \        u # \        V4      \        V4      8X  g   KE  \        u # 	  \        # )zuCompare ColumnElements using proxies and equivalent collections.

This is a comparison strategy specific to the ORM.
)unionshares_lineager\  hashr[  )rE   ra  rb  r(   equivalentsr   
to_compareoths   &&&&&,  r$   compare_column_element4ColIdentityComparatorStrategy.compare_column_element  sg     X
5/$+11*=JCt22377$$dtE{*$$	  "!r&   c                	(    V P                   ! W3/ VB # rD   rB  r'  s   &&&,r$   compare_column,ColIdentityComparatorStrategy.compare_column      **4="==r&   c                	(    V P                   ! W3/ VB # rD   rE  r'  s   &&&,r$   compare_label+ColIdentityComparatorStrategy.compare_label  rH  r&   c                	$    WJ d   \         # \        # rD   )r\  r[  r'  s   &&&,r$   compare_table+ColIdentityComparatorStrategy.compare_table  s     !%}A>Ar&   r"   N)Tr"   )	r   r   r   r   rB  rF  rJ  rM  r   r"   r&   r$   r*   r*     s    "(>>Br&   r*   )6
__future__r   collectionsr   collections.abcabcr  r  r   r_  r   r   r   r   r	   r
   r   r   r   r    r   	cache_keyr   visitorsr   r   r   r   r   r   r   util.typingr   symbolr\  r[  COMPARE_SUCCEEDEDr,   r<   r>   r   r   r   r   r8   r
  r  r:   preload_modulerC  MemoizedSlotsr+   r*   r"   r&   r$   <module>r[     s'   #  )  !             " ,  + * *   O, .$o) odN (#4+ #4Lz2 zz *+D0 DN &' ./ 0L"68J8J L^B$? Br&   