
    ,h                    x   S SK Jr  S SKJr  S SKJr  S SKrS SKJr  S SK	r	S SK
r
S SK
Jr  S SK
Jr  S SK
Jr  S SK
Jr  S S	K
Jr  S S
K
Jr  S SK
Jr  S SK
Jr  S SK
Jr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK J!r!  \RD                  " S5      r#Sr$Sr%S1S jr&S2S jr' " S S \5      r( " S! S"\(5      r)S# r* " S$ S%\5      r+ " S& S'\5      r,\," 5       r-S( r. " S) S*\5      r/\/" 5       r0\Rb                  " S+5      S, 5       r2 " S- S.\\Rf                  5      r4 " S/ S0\45      r5g)3    )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                    UR                  SS5      (       a  [        5       nO
[        5       nUR                  " X40 UD6$ )Nuse_proxiesF)getColIdentityComparatorStrategyTraversalComparatorStrategycompare)obj1obj2kwstrategys       Q/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/sql/traversals.pyr"   r"   ,   s9    	vvmU##02.0D-"--    c                .   [         R                  " U 5       H{  n[        US5      (       d  M  [        US5      (       d  M)  UR                  5         [        R                  UUR                  S5        [        R                  UUR                  S5        M}     g )N_generate_cache_attrs_traverse_internals#_generated_copy_internals_traversal!_generated_get_children_traversal)r   walk_subclasseshasattrr*   _copy_internalsgenerate_dispatchr+   _get_children)target_hierarchyclss     r'   _preconfigure_traversalsr5   6   s    ##$453/00W&6
 6
 %%'--''5
 ++''3 6r(   c                      \ rS rSrSrSr\R                  (       a  SS jr    SS jr	SS jr
\      SS j5       r\      SS j5       r\      SS	 j5       rSS
 jrSS jrSS jrSS jrSrg)HasShallowCopyH   zattribute-wide operations that are useful for classes that use
__slots__ and therefore can't operate on their attributes in a dictionary.


 c                    g Nr9   )selfothers     r'   !_generated_shallow_copy_traversal0HasShallowCopy._generated_shallow_copy_traversalS       #r(   c                    g r;   r9   )r<   ds     r'   &_generated_shallow_from_dict_traversal5HasShallowCopy._generated_shallow_from_dict_traversalU   s    r(   c                    g r;   r9   r<   s    r'   $_generated_shallow_to_dict_traversal3HasShallowCopy._generated_shallow_to_dict_traversalY   r@   r(   c                t    SR                  S U 5       5      nSU SU S3n[        R                  " U0 U5      $ )N
c              3  6   #    U  H  u  pS U SU 3v   M     g7f)z
    other.z = self.Nr9   .0attrname_s      r'   	<genexpr>8HasShallowCopy._generate_shallow_copy.<locals>.<genexpr>a   s&      
0 
(8*50   def z(self, other):
joinr   _exec_code_in_envr4   internal_dispatchmethod_namecode	meth_texts        r'   _generate_shallow_copy%HasShallowCopy._generate_shallow_copy[   sK     yy 
0
 
 ;-'7vR@	,,YKHHr(   c                t    SR                  S U 5       5      nSU SU S3n[        R                  " U0 U5      $ )Nz,
c              3  6   #    U  H  u  pS U SU 3v   M     g7f)z    'z': self.Nr9   rL   s      r'   rP   ;HasShallowCopy._generate_shallow_to_dict.<locals>.<genexpr>n   s&      
0 H:XhZ00rR   rS   z(self):
    return {z}
rT   rW   s        r'   _generate_shallow_to_dict(HasShallowCopy._generate_shallow_to_dicth   sK     zz 
0
 
 ;-'=dV4H	,,YKHHr(   c                t    SR                  S U 5       5      nSU SU S3n[        R                  " U0 U5      $ )NrJ   c              3  8   #    U  H  u  pS U SU S3v   M     g7f)z	    self.z = d['z']Nr9   rL   s      r'   rP   =HasShallowCopy._generate_shallow_from_dict.<locals>.<genexpr>{   s(      
0 zz40s   rS   z(self, d):
rT   rW   s        r'   _generate_shallow_from_dict*HasShallowCopy._generate_shallow_from_dictu   sJ     yy 
0
 
 ;-|D6<	,,YKHHr(   c                    U R                   n UR                  S   nU" X5        g ! [         a%    U R                  UR                  S5      nX2l         N7f = f)NrC   )	__class____dict__KeyErrorrf   r+   rC   )r<   rB   r4   shallow_from_dicts       r'   _shallow_from_dict!HasShallowCopy._shallow_from_dict   sf    nn
	K #8! 	$"  	K $ @ @''8!
 :K6	K   & ,AAc                    U R                   n UR                  S   nU" U 5      $ ! [         a%    U R                  UR                  S5      nX!l         N6f = f)NrG   )ri   rj   rk   ra   r+   rG   )r<   r4   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                    U R                   n UR                  S   nU" X5        g ! [         a%    U R                  UR                  S5      nX2l         N7f = f)Nr>   )ri   rj   rk   r\   r+   r>   )r<   r=   r4   shallow_copys       r'   _shallow_copy_toHasShallowCopy._shallow_copy_to   sb    nn	A<<(KLL 	T!  	A66'')LL 5A1	Aro   c                r    U R                   R                  U R                   5      nU R                  U5        U$ )zCreate a shallow copyri   __new__rv   )r<   r%   cs      r'   _cloneHasShallowCopy._clone   s-    NN""4>>2a r(   N)r=   r   returnNone)rB   Dict[str, Any]r~   r   )r~   r   )rX   r   rY   strr~   zCallable[[Self, Self], None])rX   r   rY   r   r~   z Callable[[Self], Dict[str, Any]])rX   r   rY   r   r~   z&Callable[[Self, Dict[str, Any]], None])r%   r   r~   r   )__name__
__module____qualname____firstlineno____doc__	__slots__typingTYPE_CHECKINGr>   rC   rG   classmethodr\   ra   rf   rm   rr   rv   r|   __static_attributes__r9   r(   r'   r7   r7   H   s     IM	#		 	N
I1
I 
I 
&	
I 
I 
I1
I 
I 
*	
I 
I 
I1
I 
I 
0	
I 
I#$%""r(   r7   c                  &    \ rS rSrSrSrSS jrSrg)GenerativeOnTraversal   zSupplies Generative behavior but making use of traversals to shallow
copy.

.. seealso::

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


r9   c                b    U R                   nUR                  U5      nU R                  U5        U$ r;   ry   )r<   r4   ss      r'   	_generateGenerativeOnTraversal._generate   s,    nnKKa r(   N)r~   r   )r   r   r   r   r   r   r   r   r9   r(   r'   r   r      s     Ir(   r   c                "    U R                  5       $ r;   )r|   )elementr%   s     r'   r|   r|      s    >>r(   c                  :    \ rS rSrSrS rSS.     SS jjrSrg)HasCopyInternals   r9   c                    [        5       er;   NotImplementedError)r<   r%   s     r'   r|   HasCopyInternals._clone   s    !##r(   )
omit_attrsc                    U R                   n[        R                  XS5       H-  u  pEnXA;   a  M  Uc  M  U" X@U40 UD6nUc  M!  [	        XU5        M/     g! [         a     gf = f)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).

Nr,   )r+   AttributeErrorr0   run_generated_dispatchsetattr)r<   r   r%   traverse_internalsrN   objmethresults           r'   r0    HasCopyInternals._copy_internals   sz    	!%!9!9
 $3#I#I&K$
H4 %hc8R8%DF3$
	  		s   A 
A#"A#N)r   zIterable[str]r%   r   r~   r   )r   r   r   r   r   r|   r0   r   r9   r(   r'   r   r      s3    I$ .04*47:4	4 4r(   r   c                      \ rS rSrSr\4S jr\4S jr\4S jr\4S jr	\4S jr
\4S jr\4S	 jr\4S
 jrS r\4S jr\4S jr\4S jr\4S jrSrg)_CopyInternalsTraversal   ziGenerate a _copy_internals internal traversal dispatch for classes
with a _traverse_internals collection.c                    U" U40 UD6$ r;   r9   r<   rN   parentr   cloner%   s         r'   visit_clauseelement+_CopyInternalsTraversal.visit_clauseelement   s     W###r(   c                >    U Vs/ s H  od" U40 UD6PM     sn$ s  snf r;   r9   r<   rN   r   r   r   r%   clauses          r'   visit_clauseelement_list0_CopyInternalsTraversal.visit_clauseelement_list  &     3::'f##':::   c           
     P    [        U Vs/ s H  od" U40 UD6PM     sn5      $ s  snf r;   tupler   s          r'   visit_clauseelement_tuple1_CopyInternalsTraversal.visit_clauseelement_tuple  +     @feF)b)@AA@   #c           
     P    [        U Vs/ s H  od" U40 UD6PM     sn5      $ s  snf r;   r   r   s          r'   visit_executable_options0_CopyInternalsTraversal.visit_executable_options  r   r   c                >    U Vs1 s H  od" U40 UD6iM     sn$ s  snf r;   r9   r   s          r'   !visit_clauseelement_unordered_set9_CopyInternalsTraversal.visit_clauseelement_unordered_set  r   r   c                ^   ^^ U Vs/ s H  n[        UU4S jU 5       5      PM     sn$ s  snf )Nc              3  6   >#    U  H  nT" U40 TD6v   M     g 7fr;   r9   )rM   tup_elemr   r%   s     r'   rP   E_CopyInternalsTraversal.visit_clauseelement_tuples.<locals>.<genexpr>  s     =H%'B's   r   )r<   rN   r   r   r   r%   elems       `` r'   visit_clauseelement_tuples2_CopyInternalsTraversal.visit_clauseelement_tuples  s5    
  
 ===
 	
 
s    *c           
     f    UR                  5        VVs0 s H  u  pgXd" U40 UD6_M     snn$ s  snnf r;   )itemsr<   rN   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                2   ^^ [        UU4S jU 5       5      $ )Nc              3  ~   >#    U  H2  u  pp4Ub	  T" U40 TD6OS Ub	  T" U40 TD6OS Ub	  T" U40 TD6OS U4v   M4     g 7fr;   r9   )rM   targetonclausefrom_flagsr   r%   s        r'   rP   A_CopyInternalsTraversal.visit_setup_join_tuple.<locals>.<genexpr>%  sb      
 5<05 (.'9f##t)1)=h%"%4&+&7e"r"T	 5<s   :=r   r   s       ``r'   visit_setup_join_tuple._CopyInternalsTraversal.visit_setup_join_tuple"  s!      
 5<
 
 	
r(   c                *    U R                   " XU40 UD6$ r;   r   )r<   rN   r   r   r%   s        r'   visit_memoized_select_entities6_CopyInternalsTraversal.visit_memoized_select_entities/  s    --hN2NNr(   c           
         U VVs/ s H*  u  pg[        US5      (       a	  U" U40 UD6OUU" U40 UD64PM,     snn$ s  snnf N__clause_element__r/   r   s           r'   visit_dml_ordered_values0_CopyInternalsTraversal.visit_dml_ordered_values2  s^     &

 &
 s$899 #$$e"r" &

 
	
 

s   1;c           
         UR                  5        VVs0 s H)  u  pg[        US5      (       a	  U" U40 UD6OUU" U40 UD6_M+     snn$ s  snnf r   )r   r/   r   s           r'   visit_dml_values(_CopyInternalsTraversal.visit_dml_valuesB  s^    
 &mmo	
 .
 %,C1E$F$Fc R CU!b!"-	
 	
 
s   0Ac           
        ^^ UU4S jnU VVs/ s H  nU Vs/ s H
  o" U5      PM     snPM     snn$ s  snf s  snnf )Nc           
       > [        U [        [        45      (       a-  U  Vs/ s H  n[        US5      (       a	  T" U40 TD6OUPM!     sn$ [        U [        5      (       aZ  U R                  5        VVs0 s H<  u  p![        US5      (       a	  T" U40 TD6OU[        US5      (       a	  T" U40 TD6OU_M>     snn$  es  snf s  snnf r   )
isinstancelistr   r/   dictr   )r   r   r   r   r%   s      r'   copy<_CopyInternalsTraversal.visit_dml_multi_values.<locals>.copyO  s    $u.. "& "& #5*>?? e*r*"# "&  D$'' '+jjl '3
 #3(<== c(R(  #5*>?? e*r*"# '3  u/s   &B;2AC r9   )	r<   rN   r   r   r   r%   r   sequencesub_elements	       ``   r'   visit_dml_multi_values._CopyInternalsTraversal.visit_dml_multi_valuesJ  sF    
	: $
# 3;;(;T+(;#
 	
;
s   
:5::c                    U$ r;   r9   r   s         r'   visit_propagate_attrs-_CopyInternalsTraversal.visit_propagate_attrso  s	     r(   r9   N)r   r   r   r   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r9   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                    [        U S5      (       aG  [        U SS5      (       d5  U R                  5       n [        U S5      (       a  [        U SS5      (       d  M5  U $ )Nr   is_clause_elementF)r/   getattrr   )r   s    r'   _flatten_clauseelementr   x  s_    
'/
0
0$e: : ,,. '/
0
0$e: :
 Nr(   c                  r    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)_GetChildrenTraversali  zmGenerate a _children_traversal internal traversal dispatch for classes
with a _traverse_internals collection.c                    gNr9   r9   r<   r   r%   s      r'   visit_has_cache_key)_GetChildrenTraversal.visit_has_cache_key  s     r(   c                    U4$ r;   r9   r   s      r'   r   )_GetChildrenTraversal.visit_clauseelement  s
    zr(   c                    U$ r;   r9   r   s      r'   r   ._GetChildrenTraversal.visit_clauseelement_list      r(   c                    U$ r;   r9   r   s      r'   r   /_GetChildrenTraversal.visit_clauseelement_tuple  r  r(   c                @    [         R                  R                  U5      $ r;   )	itertoolschainfrom_iterabler   s      r'   r   0_GetChildrenTraversal.visit_clauseelement_tuples  s    ,,W55r(   c                    gr   r9   r   s      r'   ,visit_fromclause_canonical_column_collectionB_GetChildrenTraversal.visit_fromclause_canonical_column_collection      r(   c                "    UR                  5       $ r;   )valuesr   s      r'   r   5_GetChildrenTraversal.visit_string_clauseelement_dict  s    ~~r(   c                    U$ r;   r9   r   s      r'   visit_fromclause_ordered_set2_GetChildrenTraversal.visit_fromclause_ordered_set  r  r(   c                    U$ r;   r9   r   s      r'   r   7_GetChildrenTraversal.visit_clauseelement_unordered_set  r  r(   c              +     #    U HX  u  p4pVUb  Uv   [        U[        5      (       d  [        U5      v   Uc  M4  [        U[        5      (       a  MK  [        U5      v   MZ     g 7fr;   )r   r   r   )r<   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   3A"A"A"c                (    U R                   " U40 UD6$ r;   r   r   s      r'   r   4_GetChildrenTraversal.visit_memoized_select_entities  s    --g<<<r(   c              +  T   #    U H  u  p4[        US5      (       a  Uv   Uv   M      g 7fr   r   )r<   r   r%   kvs        r'   r   ._GetChildrenTraversal.visit_dml_ordered_values  s)     DAq.//G s   &(c              +     #    U Vs1 s H  n[        US5      (       d  M  UiM     nnUR                  U5      n[        U5       H	  nX   v   M     U H  nUv   X   v   M     g s  snf 7fr   )r/   symmetric_differencesorted)r<   r   r%   r  expr_values
str_valuess         r'   r   &_GetChildrenTraversal.visit_dml_values  sg     ")N'QWQ8L-Mq'N 55g>

#A* $AG*  Os   A*A%A%AA*c                    gr   r9   r   s      r'   r   ,_GetChildrenTraversal.visit_dml_multi_values  r  r(   c                    gr   r9   r   s      r'   r   +_GetChildrenTraversal.visit_propagate_attrs  r  r(   r9   N)r   r   r   r   r   r   r   r   r   r   r  r   r  r   r   r   r   r   r   r   r   r9   r(   r'   r   r     sR    .6 	7=r(   r   zsqlalchemy.sql.elementsc                    [        U[        R                  R                  R                  5      (       a  UR                  U5      nU$ r;   )r   r   	preloadedsql_elements_anonymous_label	apply_map)r   namer   r%   s       r'   _resolve_name_for_comparer0    s2    $33DDEE~~h'Kr(   c                  @   \ rS rSrSrS rS r        S3S jrS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS r S r!S  r"S! r#S" r$S# r%S$ r&S% r'S& r(S' r)S( r*S) r+S* r,S+ r-S, r.S- r/S. r0S/ r1S0 r2S1r3g2)4r!   i  )stackcacher   c                @    [        5       U l        [        5       U l        g r;   )r   r2  setr3  rF   s    r'   __init__$TraversalComparatorStrategy.__init__  s     G 	
 U
r(   c                *    [        5       [        5       4$ r;   r   rF   s    r'   _memoized_attr_anon_map3TraversalComparatorStrategy._memoized_attr_anon_map  s    
HJ''r(   c                   U R                   nU R                  nUR                  SS5      nUR                  X45        U(       Ga  UR	                  5       u  pxXxL a  M   Ub  Uc  gXx4U;   a  M0  UR                  Xx45        UR                  n	XR                  :w  a  g[        U SU	-  S 5      n
U
(       a  U
" Xx40 UD6nU[        L a  gU[        L a  M  OSn[        UR                  UR                  SS9 H  u  u  pu  pU(       d  US:X  d  US:X  a  M  X:w  d  XLa    gX;   a  M1  Uc   eUc   eUc   eU R                  U5      nUc$   U R                   SU R                  U    S	35       e[        R                   " U5      " U5      n[        R                   " U5      " U5      nUc  Ub    gM  Uc    gU" XUUU40 UD6nU[        L d  M    g   U(       a  GM  g
)Ncompare_annotationsFz
compare_%sr9   NN	fillvalue_annotationsz has no dispatch for ''T)r2  r3  r   appendpopleftadd__visit_name__r   COMPARE_FAILEDSKIP_TRAVERSEr   r+   dispatchri   _dispatch_lookupoperator
attrgetter)r<   r#   r$   r%   r2  r3  r<  leftright
visit_namer   attributes_comparedleft_attrnameleft_visit_symright_attrnameright_visit_symrH  
left_childright_child
comparisons                       r'   r"   #TraversalComparatorStrategy.compare  s(    



 ff%:EBd\"--/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G e^ r(   c                H    U R                  5       nUR                  " X40 UD6$ r;   )ri   r"   )r<   r#   r$   r%   
comparators        r'   compare_inner)TraversalComparatorStrategy.compare_inner@  s$    ^^%
!!$333r(   c                    UR                  U R                  S   / 5      UR                  U R                  S   / 5      :w  a  [        $ g Nr   r   )_gen_cache_keyr   rF  r<   rN   left_parentrL  right_parentrM  r%   s          r'   r   /TraversalComparatorStrategy.visit_has_cache_keyD  sJ     t}}Q/48L8LMM!b9
 
 "!
r(   c                f    U R                  UR                  SS 5      UR                  SS 5      5      $ )Nplugin_subject)rZ  r   r_  s          r'   r   1TraversalComparatorStrategy.visit_propagate_attrsL  s4     !!HH%t,eii8H$.O
 	
r(   c                    [        X5S S9 Hh  u  pxUc  Ub  [        s  $ M  Uc  [        s  $ UR                  U R                  S   / 5      UR                  U R                  S   / 5      :w  d  Mb  [        s  $    g Nr>  r   r   )r   rF  r^  r   	r<   rN   r`  rL  ra  rM  r%   lrs	            r'   visit_has_cache_key_list4TraversalComparatorStrategy.visit_has_cache_key_listS  sv      t<DAy=))%%a 0"59I9Ia ":  &% =r(   c                <   [        X5S S9 H  u  pxUc  Ub  [        s  $ M  Uc  [        s  $ UR                  (       a  UR                  U R                  S   / 5      OUUR                  (       a  UR                  U R                  S   / 5      OU:w  d  M  [        s  $    g rg  )r   rF  _is_has_cache_keyr^  r   rh  s	            r'   r   4TraversalComparatorStrategy.visit_executable_optionsd  s      t<DAy=))%% &&   q!126 &&   q!126 &%% =r(   c                <    U R                   R                  X545        g r;   )r2  rB  r_  s          r'   r   /TraversalComparatorStrategy.visit_clauseelement{  s     	

4-(r(   c                b    [        X5S S9 H!  u  pxU R                  R                  Xx45        M#     g Nr>  r   r2  rB  )	r<   rN   r`  rL  ra  rM  r%   lcolrcols	            r'   r  HTraversalComparatorStrategy.visit_fromclause_canonical_column_collection  s,     &dTBJDJJtl+ Cr(   c                    g r;   r9   r_  s          r'   *visit_fromclause_derived_column_collectionFTraversalComparatorStrategy.visit_fromclause_derived_column_collection  s     	r(   c                    [        [        U5      [        U5      S S9 H3  u  pxXx:w  a  [        s  $ U R                  R	                  X7   XX   45        M5     g rs  )r   r"  rF  r2  rB  )	r<   rN   r`  rL  ra  rM  r%   lstrrstrs	            r'   r   ;TraversalComparatorStrategy.visit_string_clauseelement_dict  sL     &4L&-4
JD |%%JJtz5;78
r(   c                    [        X5S S9 HB  u  pxUb  Uc  [        s  $ [        XxS S9 H!  u  pU R                  R                  X45        M#     MD     g rs  r   rF  r2  rB  )r<   rN   r`  rL  ra  rM  r%   ltuprtupri  rj  s              r'   r   6TraversalComparatorStrategy.visit_clauseelement_tuples  sO     &dTBJD|t|%%#D$?

!!1&) @	 Cr(   c                b    [        X5S S9 H!  u  pxU R                  R                  Xx45        M#     g rs  rt  rh  s	            r'   r   4TraversalComparatorStrategy.visit_clauseelement_list  +      t<DAJJqf% =r(   c                b    [        X5S S9 H!  u  pxU R                  R                  Xx45        M#     g rs  rt  rh  s	            r'   r   5TraversalComparatorStrategy.visit_clauseelement_tuple  r  r(   c                0   Uc  US L $ [        5       nU HP  n[        U5      R                  U5       H/  nU R                  " XV40 UD6(       d  M  UR                  U5          MN     MR     [	        U5      [	        U5      s=:H  =(       a    [	        U5      :H  $ s  $ r;   )r5  
differencerZ  rD  len)r<   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                (    U R                   " X540 UD6$ r;   )r  r_  s          r'   r   =TraversalComparatorStrategy.visit_clauseelement_unordered_set  s     00CCCr(   c                b    [        X5S S9 H!  u  pxU R                  R                  Xx45        M#     g rs  rt  rh  s	            r'   r  8TraversalComparatorStrategy.visit_fromclause_ordered_set  r  r(   c                
    X5:H  $ r;   r9   r_  s          r'   visit_string(TraversalComparatorStrategy.visit_string       }r(   c                
    X5:H  $ r;   r9   r_  s          r'   visit_string_list-TraversalComparatorStrategy.visit_string_list  r  r(   c                   [        [        UR                  5       5      [        UR                  5       5      SS9 H  u  pxXx:w  a  [        s  $ X7   XX   p[	        U[
        5      n[	        U[
        5      nU(       aQ  U(       aJ  U	R                  U R                  S   / 5      U
R                  U R                  S   / 5      :w  a  [        s  $ M  X:w  a  [        s  $ X:w  d  M  [        s  $    g )Nr=  r>  r   r   )r   r"  keysrF  r   r   r^  r   )r<   rN   r`  rL  ra  rM  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                
   [        U[        5      n[        U[        5      nU(       aN  U(       aG  UR                  U R                  S   / 5      UR                  U R                  S   / 5      :w  a  [        $ g Xx:w  a  [        $ X5:H  $ r]  )r   r   r^  r   rF  )	r<   rN   r`  rL  ra  rM  r%   r  r  s	            r'   visit_multi'TraversalComparatorStrategy.visit_multi  s}     {+,3""a "%%dmmA&6;< &%< Z!!= r(   c                l    [        X#U R                  S   40 UD6[        XEU R                  S   40 UD6:H  $ r]  )r0  r   r_  s          r'   visit_anon_name+TraversalComparatorStrategy.visit_anon_name  sJ     )t}}Q/
35
&q!1
57

 	
r(   c                
    X5:H  $ r;   r9   r_  s          r'   visit_boolean)TraversalComparatorStrategy.visit_boolean  r  r(   c                
    X5:H  $ r;   r9   r_  s          r'   visit_operator*TraversalComparatorStrategy.visit_operator   r  r(   c                $    UR                  U5      $ r;   )_compare_type_affinityr_  s          r'   
visit_type&TraversalComparatorStrategy.visit_type  s     **511r(   c                
    X5:H  $ r;   r9   r_  s          r'   visit_plain_dict,TraversalComparatorStrategy.visit_plain_dict
  r  r(   c                
    X5:H  $ r;   r9   r_  s          r'   visit_dialect_options1TraversalComparatorStrategy.visit_dialect_options  r  r(   c                X    U(       a   U(       a  UR                   UR                   :H  $ X5:H  $ r;   )_annotations_cache_keyr_  s          r'   visit_annotations_key1TraversalComparatorStrategy.visit_annotations_key  s/     E22667
 = r(   c                L    [        S U 5       5      [        S U 5       5      :H  $ )Nc              3  B   #    U  H  u  pUR                   U4v   M     g 7fr;   __code__rM   fnc_keys      r'   rP   ITraversalComparatorStrategy.visit_with_context_options.<locals>.<genexpr>"  s     @4ibbkk5)4   c              3  B   #    U  H  u  pUR                   U4v   M     g 7fr;   r  r  s      r'   rP   r  "  s      J
27YRR[[% %r  r   r_  s          r'   visit_with_context_options6TraversalComparatorStrategy.visit_with_context_options  s3     @4@@E J
27J
 E
 
 	
r(   c                
    X5:H  $ r;   r9   r_  s          r'   visit_plain_obj+TraversalComparatorStrategy.visit_plain_obj&  r  r(   c                L    Uc	  Ub  [         $ UR                  UR                  :H  $ r;   )rF  r/  r_  s          r'   visit_named_ddl_element3TraversalComparatorStrategy.visit_named_ddl_element+  s(     < %%yyEJJ&&r(   c                    [        X5SS9 H3  u  u  pxu  pX:w  a  [        s  $ U R                  R                  Xy45        M5     g Nr=  r>  r  )r<   rN   r`  rL  ra  rM  r%   l_clausel_strr_clauser_strs              r'   visit_prefix_sequence1TraversalComparatorStrategy.visit_prefix_sequence4  sF     5@<5
0X0 ~%%

!!8"675
r(   c                    [        X5SS9 Hm  u  u  pxpu  ppX:w  a  [        s  $ U R                  R                  X{45        U R                  R                  X45        U R                  R                  X45        Mo     g )N)NNNNr>  r  )r<   rN   r`  rL  ra  rM  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                ,    U R                   " XX4U40 UD6$ r;   r   r_  s          r'   r   :TraversalComparatorStrategy.visit_memoized_select_entitiesM  s&     --4u
@B
 	
r(   c                    [        US S9n[        US S9n[        XxSS9 HI  u  u  pu  pX:w  a  [        s  $ X9U
4   X[U4   :w  a  [        s  $ U R                  R	                  X45        MK     g )Nc                *    U S   R                   U S   4$ r]  fullnamer   s    r'   <lambda>CTraversalComparatorStrategy.visit_table_hint_list.<locals>.<lambda>W  s    473C3CT!W2Mr(   )r   c                *    U S   R                   U S   4$ r]  r  r  s    r'   r  r  Y  s    T!W%5%5tAw$?r(   r=  r>  )r"  r   rF  r2  rB  )r<   rN   r`  rL  ra  rM  r%   	left_keys
right_keysltableldialectrtablerdialects                r'   visit_table_hint_list1TraversalComparatorStrategy.visit_table_hint_listT  s     4%MN	?

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

!!6"237
r(   c                
    X5:H  $ r;   r9   r_  s          r'   visit_statement_hint_list5TraversalComparatorStrategy.visit_statement_hint_liste  r  r(   c                    [        5       er;   r   r_  s          r'   visit_unknown_structure3TraversalComparatorStrategy.visit_unknown_structurej  s     "##r(   c                t    [        X5SS9 H*  u  u  pxu  pU R                  " Xy40 UD6(       a  M$  [        s  $    g r  )r   _compare_dml_values_or_cerF  )r<   rN   r`  rL  ra  rM  r%   r  r  r  r  s              r'   r   4TraversalComparatorStrategy.visit_dml_ordered_valueso  s?    
 #.<#
HRhr 11"?B??%%	#
r(   c                    [        US5      n[        US5      nXE:w  a  gU(       a  U R                  " X40 UD6(       d  gU(       d  X:w  a  gU R                  " X40 UD6(       d  gg)Nr   FT)r/   rZ  )r<   r  r  r%   lvcervces         r'   r  5TraversalComparatorStrategy._compare_dml_values_or_cez  s_    r/0r/0<$,,R:r:"(##B1b1r(   c                *   Ub  Ub  [        U5      [        U5      :w  a  [        $ [        U[        R                  5      (       a5  [        X55       H%  u  pxU R                  " Xx40 UD6(       a  M  [        s  $    g [        U[        R                  5      (       a  [        $ [        UR                  5       UR                  5       5       HJ  u  u  pu  pU R                  " X40 UD6(       d  [        s  $ U R                  " Xx40 UD6(       a  MD  [        s  $    g r;   )r  rF  r   collections_abcSequencezipr  r   )r<   rN   r`  rL  ra  rM  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))55bCCC))	 'Gr(   c           	         [        X5S S9 HL  u  pxUb  Uc  [        s  $ [        XxS S9 H+  u  pU R                  " XXU
40 UD6[        L d  M#  [        s  s  $    MN     g rs  )r   rF  r   )r<   rN   r`  rL  ra  rM  r%   lseqrseqldrds              r'   r   2TraversalComparatorStrategy.visit_dml_multi_values  sj     &dTBJD|t|%%%dDA)) rGI &&
 *) B	 Cr(   c                    UR                   UR                   L a_  [        R                  " UR                   5      (       a7  U R                  " UR                  UR                  40 UD6(       a  SS/$ [
        $ S/$ [
        $ )NrJ  clauses)rJ  r   is_associativer  r  rF  r<   rL  rM  r%   s       r'   compare_expression_clauselist9TraversalComparatorStrategy.compare_expression_clauselist  sk    ==ENN*''6644LL%--35 '	22))"|#!!r(   c                (    U R                   " X40 UD6$ r;   )r  r  s       r'   compare_clauselist.TraversalComparatorStrategy.compare_clauselist  s    11$DDDr(   c                   UR                   UR                   :X  a  [        R                  " UR                   5      (       a  U R                  " UR                  UR                  40 UD6(       a-  U R                  " UR
                  UR
                  40 UD6(       dZ  U R                  " UR                  UR
                  40 UD6(       a1  U R                  " UR
                  UR                  40 UD6(       a  / SQ$ [        $ SS/$ [        $ )N)rJ  negaterL  rM  rJ  r  )rJ  r   is_commutativerZ  rL  rM  rF  r  s       r'   compare_binary*TraversalComparatorStrategy.compare_binary  s    ==ENN*''66&&tyy%**CC**4::u{{IbI&&tyy%++DD**4::uzzHRHBB))"H--!!r(   c                    UR                  SS5      nUR                  SS5      nU(       a  / nOSS/nU(       d  UR                  S5        U$ )Ncompare_keysTcompare_valuescallabler   r   )poprB  )r<   rL  rM  r%   r  r  omits          r'   compare_bindparam-TraversalComparatorStrategy.compare_bindparam  sK    vvnd3 0$7D (DKKr(   )r3  r2  N)r#   r   r$   r   r%   r   r~   bool)4r   r   r   r   r   r6  r9  r"   rZ  r   r   rk  r   r   r  ry  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   r9   r(   r'   r!   r!     s   ,I(\#\ $\ 	\
 
\|4"
&"&.)
,
9*&&
8D
&

&.!


2


	!

'	80
4"
$
	&*.* "E"$r(   r!   c                  2    \ rS rSr SS jrS rS rS rSrg)	r    i  r9   c                    U4nU(       a  X$;   a  XB   R                  U5      nU HH  nU(       a  UR                  U5      (       a  [        s  $ [        U5      [        U5      :X  d  MB  [        s  $    [        $ )zuCompare ColumnElements using proxies and equivalent collections.

This is a comparison strategy specific to the ORM.
)unionshares_lineagerG  hashrF  )r<   rL  rM  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                (    U R                   " X40 UD6$ r;   r.  r  s       r'   compare_column,ColIdentityComparatorStrategy.compare_column      **4="==r(   c                (    U R                   " X40 UD6$ r;   r1  r  s       r'   compare_label+ColIdentityComparatorStrategy.compare_label  r4  r(   c                "    XL a  [         $ [        $ r;   )rG  rF  r  s       r'   compare_table+ColIdentityComparatorStrategy.compare_table  s     !%}A>Ar(   N)Tr9   )	r   r   r   r   r.  r2  r6  r9  r   r9   r(   r'   r    r      s    9;"(>>Br(   r    )r#   r   r$   r   r%   r   r~   r%  )r3   z	Type[Any]r~   r   )6
__future__r   collectionsr   collections.abcabcr  r  r   rJ  r   r   r   r   r	   r
   r   r   r   r    r   	cache_keyr   visitorsr   r   r   r   r   r   r   util.typingr   symbolrG  rF  COMPARE_SUCCEEDEDr"   r5   r7   r   r|   r   r   r0   r   r   r2   preload_moduler0  MemoizedSlotsr!   r    r9   r(   r'   <module>rG     s)   #  )  !             " ,  + * *    O, .$o) odN (#4+ #4Lz2 zz *+D0 DN &' ./ 0L"68J8J L^B$? Br(   