
    ,hu              
      Z   S SK Jr  S SKrS SKJ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  SSKJr  SSKJr  SSKJr  \R@                  (       a  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"\5      r( " S# S$\RR                  5      r*\*RV                  r+\S%\\*RV                     \S   4   r, " S& S'\RR                  5      r-\." \-5      u  r/r0r1r2r3\\\4\\\S(\\S(4   4   \-\4   4      r5 " S) S*5      r6 " S+ S,\\65      r7 " S- S.\6\5      r8 " S/ S0\6\Rr                  5      r: " S1 S2\5      r;        S6S3 jr< " S4 S5\5      r=\=" 5       r>g)7    )annotationsN)zip_longest)Any)Callable)Dict)Iterable)Iterator)List)MutableMapping)
NamedTuple)Optional)Sequence)Tuple)Union   )anon_map)HasTraversalDispatch)HasTraverseInternals)InternalTraversal)prefix_anon_map   )util)inspect)HasMemoized)Literal)Protocol)BindParameter)ClauseElement)ColumnElement)_TraverseInternalsType)_CoreSingleExecuteParamsc                  *    \ rS rSr      SS jrSrg)_CacheKeyTraversalDispatchType-   c                    g N )sselfvisitors      P/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/sql/cache_key.py__call__'_CacheKeyTraversalDispatchType.__call__.   s    /2    r'   N)r)   HasCacheKeyr*   _CacheKeyTraversalreturn$_CacheKeyTraversalDispatchTypeReturn)__name__
__module____qualname____firstlineno__r,   __static_attributes__r'   r.   r+   r#   r#   -   s    33'93	-3r.   r#   c                      \ rS rSrSrSrg)
CacheConst3   r   r'   N)r3   r4   r5   r6   NO_CACHEr7   r'   r.   r+   r9   r9   3   s    Hr.   r9   r    c                  (    \ rS rSrSrSrSrSrSrSr	g)	CacheTraverseTarget?   r   r   r         r'   N)
r3   r4   r5   r6   CACHE_IN_PLACECALL_GEN_CACHE_KEYSTATIC_CACHE_KEYPROPAGATE_ATTRS	ANON_NAMEr7   r'   r.   r+   r=   r=   ?   s    NOIr.   r=   .c                      \ rS rSr% SrSr\rS\S'   Sr	Sr
 SrS\S	'    SrS
\S'   \  SS j5       r\R                  " S5            SS j5       rSS jr\    SS j5       rSrg)r/   \   aP  Mixin for objects which can produce a cache key.

This class is usually in a hierarchy that starts with the
:class:`.HasTraverseInternals` base, but this is optional.  Currently,
the class should be able to work on its own without including
:class:`.HasTraverseInternals`.

.. seealso::

    :class:`.CacheKey`

    :ref:`sql_caching`

r'   _CacheKeyTraversalType_cache_key_traversalTNzOptional[bool]inherit_cacher   _generated_cache_key_traversalc                   U R                   R                  SS5      n[        U5      nU(       a_  [        U SS5      nUc$   [	        U [
        5      (       d   eU R                  nU[        Ld   SU  S35       e[        R                  U US5      $ U R                   R                  SS5      nUcf  U R                   R                  SS5      nUcG  [        U l	        Uc3  U R                  (       a"  [        R                  " SU R                  -  S	S
9  [        $ [        R                  U US5      $ ! [         a    [        U l	        [        s $ f = f)zgenerate cache key dispatcher for a new class.

This sets the _generated_cache_key_traversal attribute once called
so should only be called once per class.

rJ   NrI   zclass zK has _cache_key_traversal=NO_CACHE, which conflicts with inherit_cache=TruerK   _traverse_internalsa  Class %s will not make use of SQL compilation caching as it does not set the 'inherit_cache' attribute to ``True``.  This can have significant performance implications including some performance degradations in comparison to prior SQLAlchemy versions.  Set this attribute to True if this object can make use of the cache key generated by the superclass.  Alternatively, this attribute may be set to False which will disable this warning.cprf)code)__dict__getboolgetattr
issubclassr   rM   AttributeErrorr;   rK   _cache_key_traversal_visitorgenerate_dispatch_hierarchy_supports_cachingr   warnr3   )clsrJ   inheritrI   s       r+   _generate_cache_attrs!HasCacheKey._generate_cache_attrs   sl    (($?}%#*30F#M #+$%c+?@@@@+.+B+B(
 (x7  : :7 0AA$0  $'<<#3#3&$  $+'*||'7'7)4($ (/9AC6%-;;			4 8;||	E "( $O/AA$0 a & $9AC6#O$s    #D* *EEsqlalchemy.sql.elementsc                   U R                   nUR                  " U 5      u  pEU(       a  XC4$  UR                  S   nU[
        L a
  SU[
        '   gXC4nU" U [        5       GH  u  pn
U	c  M  U
[        L a(  U	R                  nU[
        L a  SU[
        '     gXxU4-  nM=  U
[        L aM  [        R                  R                  n[        XR                  5      (       a  U	R                  U5      n	XxU	4-  nM  U
[         L a  UUU	R#                  X5      4-  nM  U	(       d  M  U
[$        L a  XxU	4-  nM  U
[&        L a,  UUU	S   U	S   (       a  U	S   R#                  X5      OS4-  nGM  U
[(        R*                  L a8  U R,                  (       a  XpR.                  -  nGM8  XpR1                  U5      -  nGMN  U
[(        R2                  L d&  U
[(        R4                  L d  U
[(        R6                  L a3  UU[9        U	 Vs/ s H  nUR#                  X5      PM     sn5      4-  nGM  Xz" XXU5      -  nGM     U$ ! [         a    UR	                  5       n GNf = fs  snf )a  return an optional cache key.

The cache key is a tuple which can contain any series of
objects that are hashable and also identifies
this object uniquely within the presence of a larger SQL expression
or statement, for the purposes of caching the resulting query.

The cache key should be based on the SQL compiled structure that would
ultimately be produced.   That is, two structures that are composed in
exactly the same way should produce the same cache key; any difference
in the structures that would affect the SQL string or the type handlers
should result in a different cache key.

If a structure cannot produce a useful cache key, the NO_CACHE
symbol should be added to the anon_map and the method should
return None.

rK   TNcompile_state_pluginplugin_subject)	__class__get_anonrP   KeyErrorr\   r;   rV   rC   _static_cache_keyrE   r   	preloadedsql_elements
isinstance_anonymous_label	apply_maprB   _gen_cache_keyrA   rD   r   dp_annotations_key!_gen_static_annotations_cache_key_annotations_cache_key_gen_annotations_cache_keydp_clauseelement_listdp_clauseelement_tupledp_memoized_select_entitiestuple)r)   r   
bindparamsrZ   id_found
dispatcherresultattrnameobjmethsckelementselems                 r+   rk   HasCacheKey._gen_cache_key   s   . nn&&t,
:	5&FGJ !!%HX#&* $..$
H4  ++//Ch-1*#o-FY&#~~::H!#'@'@AA!mmH5o-F// **8@ F S~-S/10$ 67
 $''7#8 !$$4 5 D D$,!" &*
# 
 !2!E!EE  AA"&A&AAF"&E&Eh&OOF  1 G GG#4#K#KK,HHI $! 14!"03 %)$7$7$M03!"#  $$4:# M$
R q  	5
 224J	5\!"s   H+ 0I+I	I	c                r    / n[        5       nU R                  X!5      n[        U;   a  gUc   e[        X15      $ )a  return a cache key.

The cache key is a tuple which can contain any series of
objects that are hashable and also identifies
this object uniquely within the presence of a larger SQL expression
or statement, for the purposes of caching the resulting query.

The cache key should be based on the SQL compiled structure that would
ultimately be produced.   That is, two structures that are composed in
exactly the same way should produce the same cache key; any difference
in the structures that would affect the SQL string or the type handlers
should result in a different cache key.

The cache key returned by this method is an instance of
:class:`.CacheKey`, which consists of a tuple representing the
cache key, as well as a list of :class:`.BindParameter` objects
which are extracted from the expression.   While two expressions
that produce identical cache key tuples will themselves generate
identical SQL strings, the list of :class:`.BindParameter` objects
indicates the bound values which may have different values in
each one; these bound parameters must be consulted in order to
execute the statement with the correct parameters.

a :class:`_expression.ClauseElement` structure that does not implement
a :meth:`._gen_cache_key` method and does not implement a
:attr:`.traverse_internals` attribute will not be cacheable; when
such an element is embedded into a larger structure, this method
will return None, indicating no cache key is available.

Nr   rk   r;   CacheKey)r)   rt   	_anon_mapkeys       r+   _generate_cache_keyHasCacheKey._generate_cache_key[  sA    @ 02
J	!!)8y ?"?C,,r.   c                r    / n[        5       nUR                  X25      n[        U;   a  g Uc   e[        XB5      $ r&   r   )rZ   rz   rt   r   r   s        r+   _generate_cache_key_for_object*HasCacheKey._generate_cache_key_for_object  s@     02
J	  7y ?"?C,,r.   )r1   zCUnion[_CacheKeyTraversalDispatchType, Literal[CacheConst.NO_CACHE]])r   r   rt   List[BindParameter[Any]]r1   zOptional[Tuple[Any, ...]]r1   Optional[CacheKey])rz   r/   r1   r   )r3   r4   r5   r6   __doc__	__slots__r;   rI   __annotations___is_has_cache_keyrX   rJ   classmethodr\   r   preload_modulerk   r   r   r7   r'   r.   r+   r/   r/   \   s     I3;0;"& %)M>(( I$''F	LF FP 
23{ {.F{	"{ 4{z(-T --	- -r.   r/   c                      \ rS rSrSrg)HasCacheKeyTraversei  r'   N)r3   r4   r5   r6   r7   r'   r.   r+   r   r     s    r.   r   c                  @    \ rS rSrSr\R                  SS j5       rSrg)MemoizedHasCacheKeyi  r'   c                ,    [         R                  U 5      $ r&   r/   r   r)   s    r+   r   'MemoizedHasCacheKey._generate_cache_key  s    ..t44r.   Nr   )	r3   r4   r5   r6   r   r   memoized_instancemethodr   r7   r'   r.   r+   r   r     s    I((5 )5r.   r   c                  "    \ rS rSrSrSS jrSrg)SlotsMemoizedHasCacheKeyi  r'   c                ,    [         R                  U 5      $ r&   r   r   s    r+   $_memoized_method__generate_cache_key=SlotsMemoizedHasCacheKey._memoized_method__generate_cache_key  s    ..t44r.   Nr   )r3   r4   r5   r6   r   r   r7   r'   r.   r+   r   r     s    I5r.   r   c                      \ rS rSr% SrS\S'   S\S'   SS jr        SS jrSS	 jrSS
 jr	\
SS j5       rSS jrSS jrSS jrSS jr\R"                  " S5            SS j5       rSrg)r   i  zxThe key used to identify a SQL statement construct in the
SQL compilation cache.

.. seealso::

    :ref:`sql_caching`

Tuple[Any, ...]r   zSequence[BindParameter[Any]]rt   c                    g)z7CacheKey itself is not hashable - hash the .key portionNr'   r   s    r+   __hash__CacheKey.__hash__  s    r.   c                *  ^ U R                   U;  a  [        U5      =XR                   '   nOXR                      nU R                  (       d  [        U4S j[	        T5       5       5      nO[        U4S jU R                   5       5      n[        XE45      $ )ae  Generate an "offline string" form of this :class:`.CacheKey`

The "offline string" is basically the string SQL for the
statement plus a repr of the bound parameter values in series.
Whereas the :class:`.CacheKey` object is dependent on in-memory
identities in order to work as a cache key, the "offline" version
is suitable for a cache that will work for other processes as well.

The given ``statement_cache`` is a dictionary-like object where the
string form of the statement itself will be cached.  This dictionary
should be in a longer lived scope in order to reduce the time spent
stringifying statements.


c              3  .   >#    U  H
  nTU   v   M     g 7fr&   r'   ).0r   
parameterss     r+   	<genexpr>-CacheKey.to_offline_string.<locals>.<genexpr>  s     N;MC
3;Ms   c              3  p   >#    U  H+  nTR                  UR                  UR                  5      v   M-     g 7fr&   )rQ   r   value)r   	bindparamr   s     r+   r   r     s.       !0I y}}ioo>>!0s   36)r   strrt   rs   sortedrepr)r)   statement_cache	statementr   sql_strparam_tuples      `  r+   to_offline_stringCacheKey.to_offline_string  sy    * 88?*25i.@OHH%%hh/GN6*;MNNK  !%  K
 W*++r.   c                F    [        U R                  UR                  :H  5      $ r&   )rR   r   r)   others     r+   __eq__CacheKey.__eq__  s    DHH		)**r.   c                6    U R                   UR                   :X  + $ r&   )r   r   s     r+   __ne__CacheKey.__ne__  s    HH		**r.   c                T    [        U/ 5      n[        U/ 5      nUR                  U5      $ r&   )r   _diff)rZ   leftrightck1ck2s        r+   _diff_tuplesCacheKey._diff_tuples  s(    tR ub!yy~r.   c              #    #    U R                   nUR                   n/ nSn X#pvU H  nXh   nXx   nM     [        [        Xg5      5       Ht  u  nu  pX:  a  M  X:w  d  M  [        U	[        5      (       a(  [        U
[        5      (       a  UR                  U5          O7SSR                  S U 5       5      UU	U
4-  v   Mv     UR                  S5        g M  7f)Nr   zkey%s[%d]:  %s != %s c              3  ,   #    U  H
  nS U-  v   M     g7f)z[%d]Nr'   )r   ru   s     r+   r   ,CacheKey._whats_different.<locals>.<genexpr>  s     #BESFSLEs   )r   	enumerater   rh   rs   appendjoinpop)r)   r   k1k2stackpickup_indexs1s2idxe1e2s              r+   _whats_differentCacheKey._whats_different  s     XXYYWW  "+;r+>!?Xb%8!"e,,B1F1FS)4GG#BE#BB	8   "@ 		"- s   ACA6Cc                B    SR                  U R                  U5      5      $ )N, )r   r   r   s     r+   r   CacheKey._diff
  s    yy..u566r.   c                   U R                   /n/ n[        5       nSnU(       Ga  UR                  S5      nXSL a   UR                  SUS-  -  S-   5        US-  nO[	        U[
        5      (       aW  U(       d  UR                  SUS-   S-  -  S-   5        OUS-  n[        U5      U/-   U-   nUR                  SUS-  -  S-   5        Oq[	        U[        5      (       a1  S	[        U5      R                  < S
[        [        U5      5      < S3nO[        U5      nUR                  SUS-  -  S-   U-   S-   5        U(       a  GM  SSR                  U5      < S3$ )Nr   r    r   z),r   z()(<z object at >z  r   zCacheKey(key=
))r   objectr   r   rh   rs   listr/   typer3   hexidr   r   )r)   r   outputsentinelindentr~   repr_s          r+   __str__CacheKey.__str__  s5   <@HH:899Q<Dsfqj1T9:!D%((MM36A:*:#;t"CDaKF J(3e;EMM3&1*#5"<=dK00T
++BtHE
 !JEsfqj1T9EADHI) e, &*YYv%688r.   c                    [        5       nU R                   Vs0 s H  o"R                  U-  UR                  _M     sn$ s  snf )zused for testing)r   rt   r   effective_value)r)   r   bs      r+   _generate_param_dictCacheKey._generate_param_dict+  s:     $%	>BooNo	!1#4#44oNNNs   #?r^   c                    UR                   (       d  XL a  U$ [        R                  R                  nUR	                  X R
                  UR
                  5      $ r&   )_is_immutabler   rf   rg   _OverrideBindsrt   )r)   original_cache_keytarget_elementr}   s       r+   _apply_params_to_element!CacheKey._apply_params_to_element1  sK     ''+=+E!!>>..&&OO-?-J-J
 	
r.   r'   N)r1   zOptional[int])r   zMutableMapping[Any, str]r   r   r   r!   r1   r   )r   r   r1   rR   )r   r   r   r   r1   r   )r   r   r1   zIterator[str])r   r   r1   r   )r1   r   )r1   zDict[str, Any])r   r   r   ColumnElement[Any]r1   r   )r3   r4   r5   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r'   r.   r+   r   r     s     
,,",1", !", -	",
 
",H++  
<79<O 
23	
"*	
<N	
		
 4	
r.   r   c           	     N   / n[        5       nU n[        X5       H  u  u  pgnUR                  n	U	R                  SS5      n
Uc  XVS4-  nM1  [	        [
        U
5      nU[        L a  XVU4-  nMR  U[        [        [        [        4;   a  [        SU S35      eX[" XhSXC5      -  nM     U$ )z;a quick cache key generator used by reflection.flexi_cache.dp_visit_NzHaven't implemented symbol z for ad-hoc key from args)r   zipnamereplacerS   rV   rA   rB   rC   rE   rD   NotImplementedError)tokenstraverse_argsargsrt   r   tupry   symargr   	visit_keyr{   s               r+   _ad_hoc_cache_key_from_argsr  >  s     ,.J
I
C #M 8hhKKx0	;d##C3Y?>!c?"C	
 
 &-dV3LM  4tYCCC+ !9, Jr.   c                     \ rS rSr\=rr\R                  r	\R                  r\R                  r\R                  r\=r=r=rr\r\r\r\r            SS jr            SS jr            SS jr            SS jr            SS jr             SS jr!            SS jr"            SS	 jr#            SS
 jr$            SS jr%            SS jr&            SS jr'            SS jr(            SS jr)            SS jr*            SS jr+            SS jr,            SS jr-            SS jr.            SS jr/            SS jr0            SS jr1            SS jr2            SS jr3            SS jr4Sr5g)r0   ic  c                &    [        S U 5       5      $ )Nc              3  B   #    U  H  u  pUR                   U4v   M     g 7fr&   )__code__)r   fnc_keys      r+   r   @_CacheKeyTraversal.visit_with_context_options.<locals>.<genexpr>  s     ?3ibbkk5)3s   rs   r)   ry   rz   parentr   rt   s         r+   visit_with_context_options-_CacheKeyTraversal.visit_with_context_optionsx  s     ?3???r.   c                :    U[        U5      R                  XE5      4$ r&   )r   rk   r  s         r+   visit_inspectable$_CacheKeyTraversal.visit_inspectable  s     '#,55hKLLr.   c                    [        U5      $ r&   r  r  s         r+   visit_string_list$_CacheKeyTraversal.visit_string_list  s     Szr.   c                X    U[        U[        5      (       a  UR                  XE5      4$ U4$ r&   rh   r/   rk   r  s         r+   visit_multi_CacheKeyTraversal.visit_multi  s?      c;// ""88
 	

 
 	
r.   c                6   ^^ U[        UU4S jU 5       5      4$ )Nc              3  v   >#    U  H.  n[        U[        5      (       a  UR                  TT5      OUv   M0     g 7fr&   r   r   r~   r   rt   s     r+   r   6_CacheKeyTraversal.visit_multi_list.<locals>.<genexpr>  s@        D "$44 ''*=  s   69r  r  s       ``r+   visit_multi_list#_CacheKeyTraversal.visit_multi_list  s)         

 
	
r.   c                F   ^^ U(       d  gU[        UU4S jU 5       5      4$ )Nr'   c              3  P   >#    U  H  n[        UU4S  jU 5       5      v   M     g7f)c              3  H   >#    U  H  nUR                  TT5      v   M     g 7fr&   rk   r%  s     r+   r   J_CacheKeyTraversal.visit_has_cache_key_tuples.<locals>.<genexpr>.<genexpr>  s(       ( ''*== (s   "Nr  )r   tup_elemr   rt   s     r+   r   @_CacheKeyTraversal.visit_has_cache_key_tuples.<locals>.<genexpr>  s3      
 !$H	   (   !$s   #&r  r  s       ``r+   visit_has_cache_key_tuples-_CacheKeyTraversal.visit_has_cache_key_tuples  s/      
 !$ 	
 		
r.   c                F   ^^ U(       d  gU[        UU4S jU 5       5      4$ )Nr'   c              3  F   >#    U  H  oR                  TT5      v   M     g 7fr&   r,  r%  s     r+   r   >_CacheKeyTraversal.visit_has_cache_key_list.<locals>.<genexpr>  s     L%%h
;;s   !r  r  s       ``r+   visit_has_cache_key_list+_CacheKeyTraversal.visit_has_cache_key_list  s&     LLL
 	
r.   c                F   ^^ U(       d  gU[        UU4S jU 5       5      4$ )Nr'   c              3  n   >#    U  H*  nUR                   (       d  M  UR                  TT5      v   M,     g 7fr&   )r   rk   r%  s     r+   r   >_CacheKeyTraversal.visit_executable_options.<locals>.<genexpr>  s3      D)) :##Hj99s   55r  r  s       ``r+   visit_executable_options+_CacheKeyTraversal.visit_executable_options  s-       
 	
r.   c           	     f    U R                  X Vs/ s H  n[        U5      PM     snX4U5      $ s  snf r&   )r5  r   )r)   ry   rz   r  r   rt   os          r+   visit_inspectable_list)_CacheKeyTraversal.visit_inspectable_list  s6     ,,3/3awqz3/:
 	
/s   .
c                (    U R                  XX4U5      $ r&   )r0  r  s         r+   visit_clauseelement_tuples-_CacheKeyTraversal.visit_clauseelement_tuples  s     ..6Z
 	
r.   c           
     t    U(       d  gU[        U Vs/ s H  ofR                  XE5      PM     sn5      4$ s  snf Nr'   rs   rk   )r)   ry   rz   r  r   rt   r~   s          r+   visit_fromclause_ordered_set/_CacheKeyTraversal.visit_fromclause_ordered_set
  s:     M&&x<MN
 	
Ms   5
c                    U(       d  gU Vs/ s H  ofR                  XE5      PM     nnU[        [        U5      5      4$ s  snf rD  rk   rs   r   )r)   ry   rz   r  r   rt   r~   
cache_keyss           r+   !visit_clauseelement_unordered_set4_CacheKeyTraversal.visit_clauseelement_unordered_set  sS     BE
BE$5# 	 
 z"
 	

s   ?c                    XR                   4$ r&   )r  r  s         r+   visit_named_ddl_element*_CacheKeyTraversal.visit_named_ddl_element-  s     ((##r.   c                    U(       d  gU[        U VVs/ s H  u  pgUR                  XE5      U4PM     snn5      4$ s  snnf rD  rE  )r)   ry   rz   r  r   rt   clausestrvals           r+   visit_prefix_sequence(_CacheKeyTraversal.visit_prefix_sequence7  sU       +.*- **8@&I*-
 	
s   <c                2   ^^ [        UU4S jU 5       5      $ )Nc              3     >#    U  Hn  u  pp4UR                  TT5      Ub  UR                  TT5      OS Ub  UR                  TT5      OS [        [        U5       Vs/ s H  oUXE   4PM
     sn5      4v   Mp     g s  snf 7fr&   rI  )r   targetonclausefrom_flagsr   r   rt   s         r+   r   <_CacheKeyTraversal.visit_setup_join_tuple.<locals>.<genexpr>T  s      
 5805 %%h
;  + ++HjA ( ((:>F5MBMSUZ(MBC 58 Cs   AA>A9*A>r  r  s       ``r+   visit_setup_join_tuple)_CacheKeyTraversal.visit_setup_join_tupleL  s!      
 58
 
 	
r.   c                    U(       d  gU[        UR                  5        VVVs/ s H  u  u  pgnUR                  XE5      UU4PM     snnn5      4$ s  snnnf rD  )rs   itemsrk   )	r)   ry   rz   r  r   rt   rQ  dialect_nametexts	            r+   visit_table_hint_list(_CacheKeyTraversal.visit_table_hint_listf  sm       9<		 9D4.	 --hC$
 9D	
 	
s   #Ac           	     `    U[        [        U5       Vs/ s H  ofX&   4PM
     sn5      4$ s  snf r&   rs   r   r)   ry   rz   r  r   rt   r   s          r+   visit_plain_dict#_CacheKeyTraversal.visit_plain_dict  s.     %F3K HKSsxK HIJJ Hs   +
c                D   ^ U[        U4S j[        T5       5       5      4$ )Nc           
   3     >#    U  H7  nU[        [        TU   5       Vs/ s H  nUTU   U   4PM     sn5      4v   M9     g s  snf 7fr&   re  )r   r`  r   rz   s      r+   r   ;_CacheKeyTraversal.visit_dialect_options.<locals>.<genexpr>  sd       %0L ! (.c,.?'@'@ !#l"3C"89'@ %0s   AAAre  r  s     `   r+   visit_dialect_options(_CacheKeyTraversal.visit_dialect_options  s-       %+3K 
 	
r.   c                L   ^^^ U[        UUU4S j[        T5       5       5      4$ )Nc              3  R   >#    U  H  nUTU   R                  TT5      4v   M     g 7fr&   r,  )r   r   r   rt   rz   s     r+   r   E_CacheKeyTraversal.visit_string_clauseelement_dict.<locals>.<genexpr>  s.      &C c#h--h
CD&s   $'re  r  s     ` ``r+   visit_string_clauseelement_dict2_CacheKeyTraversal.visit_string_clauseelement_dict  s+      !#; 
 	
r.   c           
     z   ^^ U[        UU4S j[        U5       Vs/ s H  ofX&   4PM
     sn 5       5      4$ s  snf )Nc              3  ~   >#    U  H2  u  pU[        U[        5      (       a  UR                  TT5      OU4v   M4     g 7fr&   r   r   r   r   r   rt   s      r+   r   =_CacheKeyTraversal.visit_string_multi_dict.<locals>.<genexpr>  sI      
 #KJC  &e[99 ,,XzB" #Ks   :=re  rf  s       `` r+   visit_string_multi_dict*_CacheKeyTraversal.visit_string_multi_dict  sG      
 ?ESk"Jks?k"J
 

 	
 #Ks   8c                J   ^^ U[        UU4S jUR                   5       5      4$ )Nc              3  N   >#    U  H  u  pnUR                  TT5      v   M     g 7fr&   r,  )r   kcol_r   rt   s       r+   r   R_CacheKeyTraversal.visit_fromclause_canonical_column_collection.<locals>.<genexpr>  s,      !0IAA ""8Z88!0s   "%)rs   _collectionr  s       ``r+   ,visit_fromclause_canonical_column_collection?_CacheKeyTraversal.visit_fromclause_canonical_column_collection  s+      !$ 
 	
r.   c                    SU[         '   gNTr'   r;   r  s         r+   visit_unknown_structure*_CacheKeyTraversal.visit_unknown_structure  s     "r.   c                6   ^^ U[        UU4S jU 5       5      4$ )Nc              3     >#    U  H>  u  p[        US 5      (       a  UR                  TT5      OUUR                  TT5      4v   M@     g7f__clause_element__Nhasattrrk   ru  s      r+   r   >_CacheKeyTraversal.visit_dml_ordered_values.<locals>.<genexpr>  sS      
 #&JC #3(<== **8Z@ ((:> #&s   AA	r  r  s       ``r+   visit_dml_ordered_values+_CacheKeyTraversal.visit_dml_ordered_values  s)      
 #&
 

 	
r.   c                :   ^^^ U[        UUU4S jT 5       5      4$ )Nc              3     >#    U  H?  n[        US 5      (       a  UR                  TT5      OUTU   R                  TT5      4v   MA     g7fr  r  )r   r{  r   rt   rz   s     r+   r   6_CacheKeyTraversal.visit_dml_values.<locals>.<genexpr>  sU      
 A #1&:;; ((:>F))(J? s   AA
r  r  s     ` ``r+   visit_dml_values#_CacheKeyTraversal.visit_dml_values  s)      
 
 

 	
r.   c                    SU[         '   gr  r  r  s         r+   visit_dml_multi_values)_CacheKeyTraversal.visit_dml_multi_values  s     "r.   r'   N)ry   r   rz   r   r  r   r   r   rt   r   r1   r   )6r3   r4   r5   r6   rB   visit_has_cache_keyvisit_clauseelementr   rp   visit_clauseelement_listrl   visit_annotations_keyrq   visit_clauseelement_tuplerr   visit_memoized_select_entitiesrA   visit_stringvisit_booleanvisit_operatorvisit_plain_objvisit_statement_hint_listrC   
visit_typerE   visit_anon_namerD   visit_propagate_attrsr  r  r  r!  r'  r0  r5  r:  r>  rA  rF  rK  rN  rS  r\  rb  rg  rl  rq  rw  r  r  r  r  r  r7   r'   r.   r+   r0   r0   c  s    1CB-0FF-@@ 1 H H55 #
 	L = >O !/!JO+@@ @ 	@
 @ -@ 
@MM M 	M
 M -M 
M  	
  - 


 
 	

 
 -
 

"

 
 	

 
 -
 

(

 
 	

 
 -
 

*

 
 	

 
 -
 



 
 	

 
 -
 

&



 

 	


 

 -

 






 

 	


 

 -

 




 
 	

 
 -
 



 
 	

 
 -
 

($$ $ 	$
 $ -$ 
$

 
 	

 
 -
 

*

 
 	

 
 -
 

4

 
 	

 
 -
 

2KK K 	K
 K -K 
K

 
 	

 
 -
 

0

 
 	

 
 -
 

 

 
 	

 
 -
 

.

 
 	

 
 -
 

"		 	 		
 	 -	 
	

 
 	

 
 -
 

.

 
 	

 
 -
 

2

 
 	

 
 -
 

r.   r0   )r  r   r  z'Iterable[Tuple[str, InternalTraversal]]r  zIterable[Any]r1   r   )?
__future__r   enum	itertoolsr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   visitorsr   r   r   r   r   r   r   
inspectionr   r   util.typingr   r   TYPE_CHECKINGr}   r   r   r   r    engine.interfacesr!   r#   Enumr9   r;   rH   r=   rs   rA   rB   rC   rD   rE   r   r2   r/   r   r   MemoizedSlotsr   r   r  r0   rV   r'   r.   r+   <module>r     s   #  !        !       * * ' %     ! "	'''0<3X 3   gj&9&9:GDMI 
$))  

 (0	S%S/)*	
	
( $u- u-p		. 	5+{ 55{D,>,> 5T
z T
n"":" " 	"J{- {|  23 r.   