
    hU                       d dl mZ d dlmZ d dlZd dlZd dlZd dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddlm%Z% ddl&m'Z' ej*                  rdd lm(Z( dd!lm)Z) dd"lm*Z* dd#lm+Z+ dd$lm,Z, dd%lm-Z- dd&lm.Z. dd'lm/Z/ dd(lm0Z0 dd)l1m2Z2 dd*l(m3Z3 dd+l(m4Z4 dd,l(m5Z5 dd-l(m6Z6 dd.l(m7Z7 dd/l(m8Z8 dd0l(m9Z9 dd1l*m:Z: dd2l+m;Z; dd3l+m<Z< dd4l+m=Z= dd5l+m>Z> dd6l+m?Z? dd7l+m@Z@ dd8lmAZA  ed9ej                  :      ZC ed;e	d<ef   :      ZD ed=ej                  :      ZF ed>e:      ZGdd?ZHd@ ZI	 	 	 	 	 	 	 	 ddAZJ	 	 	 	 	 	 	 	 ddBZKe	 	 	 	 	 	 	 	 ddC       ZLed<dD	 	 	 	 	 	 	 	 	 ddE       ZLe	 	 	 	 	 	 	 	 ddF       ZLe	 	 	 	 	 	 	 	 ddG       ZLe	 	 	 	 	 	 	 	 ddH       ZLe	 	 	 	 	 	 	 	 ddI       ZLe	 	 	 	 	 	 	 	 ddJ       ZLe	 	 	 	 	 	 	 	 ddK       ZLe	 	 	 	 	 	 	 	 ddL       ZLe	 	 	 	 	 	 	 	 ddM       ZLe	 	 	 	 	 	 	 	 ddN       ZLe	 	 	 	 	 	 	 	 ddO       ZLe	 	 	 	 	 	 	 	 ddP       ZLed<dQ	 	 	 	 	 	 	 	 	 ddR       ZLe	 	 	 	 	 	 	 	 ddS       ZLe	 	 	 	 	 	 	 	 ddT       ZLe	 	 	 	 	 	 	 	 ddU       ZLdddVdVdW	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddXZL	 	 	 	 	 	 	 	 ddYZM	 	 	 	 	 	 ddZZN G d[ d\      ZO G d] d^      ZP G d_ d`      ZQ G da dbeO      ZR G dc ddeO      ZSde#j                  ddf	 	 	 	 	 	 	 	 	 	 	 ddeZU G df dgeO      ZV G dh dieO      ZW G dj dkeO      ZX G dl dmeO      ZY G dn doeO      ZZ G dp dqeO      Z[ G dr dseSeO      Z\ G dt due\eO      Z] G dv dweO      Z^ G dx dyeSeO      Z_ G dz d{eWeSeO      Z` G d| d}eWeO      Za G d~ deVeO      Zb G d deReO      Zc G d deWeO      Zd G d deWeSeOej                        Zf G d defeO      Zg G d defeO      Zh G d deReO      Zi G d deO      Zj G d deQeO      Zk G d dePeWeO      Zl G d dePeReO      Zm G d dem      Zn G d deO      Zo G d de\      Zp G d deYeWeO      Zq G d deO      Zr G d deWeO      Zs G d deVeO      Zt G d der      Zu G d deO      Zv G d deO      Zw G d deYeVeO      Zx G d dex      Zy G d dey      Zz G d deYeVeO      Z{ G d deVeO      Z| G d deVeO      Z}i Z~ ee      D ]P  Z eee      Zej                  d      sej	                  dd      Ze e       v s<  e       e   e      Zee~e<   R es/e~ej                     ZeeeefD ]  Zee~ej                  e   <    yy)    )annotationsN)Any)Callable)cast)Dict)Iterable)Iterator)List)NoReturn)Optional)overload)Sequence)Tuple)Type)TYPE_CHECKING)TypeVar)Union   )roles)visitors)is_from_clause)ExecutableOption)Options)HasCacheKey)	Visitable   )exc)
inspection)util)Literal)elements)lambdas)schema)
selectable)_ColumnExpressionArgument)_ColumnsClauseArgument)_DDLColumnArgument)_DMLTableArgument)_FromClauseArgument)_DMLTableElement)BindParameter)ClauseElement)ColumnClause)ColumnElement)NamedColumn)SQLCoreOperations)
TextClause)Column)_ColumnsClauseElement)_JoinTargetProtocol)
FromClause)HasCTE)
SelectBase)Subquery)_TraverseCallableType_SR)bound_F._StringOnlyR_Tc                b    t        | t        t        j                  f       xr t	        | d       S )zhReturn whether or not the element is a "literal" in the context
    of a SQL expression construct.

    __clause_element__)
isinstancer   r#   SchemaEventTargethasattr)elements    AD:\EasyAligner\venv\Lib\site-packages\sqlalchemy/sql/coercions.py_is_literalrF   N   s<     	F,,-  5 g34
45    c                r   t        | t        j                        r%t        | t              s| D ]  }t	        |      r y yt        | t
        t        j                  t        t        t        j                  j                  f       xr3 t        | d       xr$ t        | t               xs t        | t               S )a  Return whether or not the element is a "literal" in the context
    of a SQL expression construct.

    does a deeper more esoteric check than _is_literal.   is used
    for lambda elements that have to distinguish values that would
    be bound vs. not without any context.

    FTr@   )rA   collections_abcr   str_deep_is_literalr   r#   rB   r   r   r   langhelperssymbolrC   type
issubclass)rD   elems     rE   rK   rK   Z   s     '?334Z> D#D)   ((  ''	
 		
 	
 !566	
 7D)) 4g{33rG   c                <    t        j                  | d|d|d      S )Nz.. warning:: The z argument to z can be passed as a Python string argument, which will be treated as **trusted SQL text** and rendered as given.  **DO NOT PASS UNTRUSTED INPUT TO THIS PARAMETER**.)r   add_parameter_text)	paramnamemeth_rst	param_rsts      rE   _document_text_coercionrV      s&     "" h	 
 
rG   c                    |rjt        |d   t        t        t        f      rLt	        |      dk(  r>t        |d   t              rt        j                  d|  d| d      t        d|d         S t        d|      S )Nr   r   zThe "z" argument to zt(), when referring to a sequence of items, is now passed as a series of positional elements, rather than as a list. Sequence[_T])rA   listsetdictlenr   ArgumentErrorr   )attrnamefnnameargss      rE   !_expression_collection_was_a_listra      s}    
 
47T3$563t9>d1gt$##zx 84 4  NDG,,%%rG   c                     y N rolerD   kws      rE   expectrh          
 rG   as_keyc                    y rc   rd   )rf   rD   rk   rg   s       rE   rh   rh      s     rG   c                     y rc   rd   re   s      rE   rh   rh      s    
 rG   c                     y rc   rd   re   s      rE   rh   rh          
 "rG   c                     y rc   rd   re   s      rE   rh   rh      ro   rG   c                     y rc   rd   re   s      rE   rh   rh      s    
 -0rG   c                     y rc   rd   re   s      rE   rh   rh      s    
 rG   c                     y rc   rd   re   s      rE   rh   rh      s     rG   c                     y rc   rd   re   s      rE   rh   rh      s     rG   c                     y rc   rd   re   s      rE   rh   rh      s    
 rG   c                     y rc   rd   re   s      rE   rh   rh      s    
 rG   c                     y rc   rd   re   s      rE   rh   rh         
 rG   c                     y rc   rd   re   s      rE   rh   rh     rx   rG   )explicit_subqueryc                    y rc   rd   )rf   rD   rz   rg   s       rE   rh   rh     s     rG   c                     y rc   rd   re   s      rE   rh   rh      s    
  rG   c                     y rc   rd   re   s      rE   rh   rh   (  s    
 rG   c                     y rc   rd   re   s      rE   rh   rh   1  ri   rG   F)apply_propagate_attrsargnamepost_inspectdisable_inspectionc          	        | j                   rCt        |      r8t        |d      r,t        j                  || t        j
                  di ||      S t        |    }|}t        |t        j                  t        j                  t        j                  t        j                  f      sd }	|j                  r |j                  |fi |}	n|}d}
|j                   rt        ||       rt        |d      rd}
n:t        |d      r.d}
t#        |dd      s|j%                         }nnt        |d      r.|
s^|j&                  r:|s8t)        j*                  |d      }||r|j,                   	 |j%                         }	|	H |j                  |fd|i|}	n2|}	n/t        |t        j                        r |j2                  di |}	n|}	|Rt4        j6                  rt        |	t8        t:        f      sJ |j<                  st#        |	d	d       r|	j<                  |_        |j>                  |	j@                  jB                  v r$|jD                  r |jD                  |	f||d
|}	|	S  |jF                  ||	fd|i|S # t.        $ r |j1                  ||       Y w xY w)N__code__)r   Fr@   Tis_clause_element)raiseerrr   _propagate_attrs)r   original_elementrd   )$allows_lambdacallablerC   r"   LambdaElementLambdaOptions_impl_lookuprA   r!   CompilerElementr#   
SchemaItemFetchedValue	PyWrapper_resolve_literal_only_literal_coercion$_skip_clauseelement_for_target_matchgetattrr@   _use_inspectionr   inspect_post_inspectAttributeError_raise_for_expected_sa__py_wrapper_literaltypingr   r0   r,   r   _role_class	__class____mro___post_coercion_implicit_coercions)rf   rD   r   r   r   r   rg   implr   resolvedr   insps               rE   rh   rh   9  s    	
 WGZ($$!!'B'"7	
 	
 D$$		
 %%-t--g<<H& % 99w-G%9:$(!g';<(,%"7,?G")"<"<"> g';< %''0B%--gFD'' ..P'+'>'>'@H #5t55 )0 46 H #	GW..	/27228R8(h):M(JKKK$55'($;
 6>5N5N!28--555*t**!1 	H 't''h
07
;=
 	
C  . P 445EwOPs   "I, ,J
Jc                D    |j                  dd        t        | |fddi|S )Nrk   T)poprh   re   s      rE   expect_as_keyr     s)     FF8T$3333rG   c              #     K   |D ]u  }d }d }t        | |      }t        |t              rt        |t              sJ |x}}n.g }|j                  }t	        j
                  |i d|i       |r|d   }||n|}||||f w y w)Ncolumnr   )rh   rA   rJ   appendr   traverse)	rf   expressionsexprstrnamer   r   cols
col_appendadd_elements	            rE    expect_col_expression_collectionr     s      ,24,>h$dC(((!%%Gh&(D=A[[JhXz,BCa & 2f44! s   A<A>c                      e Zd ZU dZd ZdZded<   dZdZd Z		 d	 	 	 	 	 	 	 	 	 ddZ
	 	 ddddd		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd
Zy)RoleImpl)r   namer   c                    t               rc   )NotImplementedErrorselfrD   rg   s      rE   r   zRoleImpl._literal_coercion  s    !##rG   Nr   r   Fc                r    || _         |j                  | _        t        |t        j
                        | _        y rc   )r   
_role_namer   rO   r   UsesInspectionr   )r   
role_classs     rE   __init__zRoleImpl.__init__  s,    %))	)*e6J6JKrG   c                *    | j                  |||       y rc   r   r   rD   r   r   rg   s        rE   r   zRoleImpl._implicit_coercions  s     	  '8<rG   advicecodeerrc                   |||ur	|d|d}nt        |      }|r| j                  d|d|d}	n| j                  d|d}	|r|	d|z   z  }	t        j                  |	|      |)	Nz object resolved from z objectz expected for argument z; got .z expected, got  )r   )reprr   r   r]   )
r   rD   r   r   r   r   r   rg   gotmsgs
             rE   r   zRoleImpl._raise_for_expected  sq     HG$;9A7KCw-C		C -1IIs;C3<C$/S8rG   rc   
rD   r   r   r   r   Optional[str]rg   r   returnr   NNrD   r   r   r   r   zOptional[Any]r   r   r   r   r   Optional[Exception]rg   r   r   r   )__name__
__module____qualname__	__slots__r   r   __annotations__r   r   r   r   r   rd   rG   rE   r   r     s    :I$ NC!+0(L "&	== = 	=
 = 
= "&"&	9 !%"#'99 9  	9 9 9 !9 9 
9rG   r   c                      e Zd ZdZd Zy)_Deannotaterd   c                    ddl m}  ||      S )Nr   )_deep_deannotate)r   r   )r   r   rg   r   s       rE   r   z_Deannotate._post_coercion  s    *))rG   Nr   r   r   r   r   rd   rG   rE   r   r   	  s    I*rG   r   c                      e Zd ZdZdZy)_StringOnlyrd   TN)r   r   r   r   r   rd   rG   rE   r   r     s    I rG   r   c                      e Zd ZdZddZd Zy)_ReturnsStringKeyrd   Nc                N    t        |t              r|S | j                  |||       y rc   rA   rJ   r   r   s        rE   r   z%_ReturnsStringKey._implicit_coercions  s#    gs#N$$Wgx@rG   c                    |S rc   rd   r   s      rE   r   z#_ReturnsStringKey._literal_coercion!      rG   rc   r   r   r   r   r   r   rd   rG   rE   r   r     s    IArG   r   c                      e Zd ZdZd ZddZy)_ColumnCoercionsrd   c                .    t        j                  d       y )Nz|implicitly coercing SELECT object to scalar subquery; please use the .scalar_subquery() method to produce a scalar subquery.)r   warn)r   s    rE   "_warn_for_scalar_subquery_coercionz3_ColumnCoercions._warn_for_scalar_subquery_coercion(  s    			
rG   Nc                   |}t        |dd      s| j                  |||       y |j                  r | j                          |j	                         S |j
                  rDt        |t        j                        r*| j                          |j                  j	                         S | j                  j                  r|j                  r|S | j                  |||       y )Nr   F)r   r   _is_select_baser   scalar_subquery_is_from_clauserA   r$   r8   rD   r   r   _is_lambda_element)r   rD   r   r   rg   r   s         rE   r   z$_ColumnCoercions._implicit_coercions/  s    "x!4e<$$%5wI%%335++--%%*j))+
 335##3355++0K0KO$$%5wIrG   rc   )r   r   r   r   r   r   rd   rG   rE   r   r   %  s    I
JrG   r   c                d     |dt        j                  |       |rd|nd|rd|z  nddz        |)Nzc%(extra)sTextual SQL expression %(expr)r %(argname)sshould be explicitly declared as text(%(expr)r)for argument  z%s )r   r   extra)r   ellipses_string)rD   r   exc_clsr   r   s        rE   _no_text_coercionr   A  sJ     	0 ((19@G5b&+UU]
	
 rG   c                      e Zd ZdZdddZy)_NoTextCoercionrd   Nr   c                   t        |t              r1t        t        j                  | j
                        rt        ||       y | j                  ||       y rc   )rA   rJ   rO   r!   r1   r   r   r   r   rD   r   rg   s       rE   r   z!_NoTextCoercion._literal_coercionV  s@    gs#
!1!1)
 gw/$$Wg6rG   r   r   r   r   r   rd   rG   rE   r   r   S  s    I48 7rG   r   c                  0    e Zd ZdZdZdZdZddZdddZy)_CoerceLiteralsrd   FNc                    t        ||      S rc   r   r   rD   r   s      rE   _text_coercionz_CoerceLiterals._text_coercione       '22rG   r   c                  t        |t              r<| j                  r|dk(  rt        j                  dd      S  | j
                  ||fi |S | j                  rF|t        j                         S |du rt        j                         S |du rt        j                         S | j                  r:t        |t        j                        r t        j                  t        |      d      S | j                  ||       y )N*T)
is_literalF)rA   rJ   _coerce_starr!   r-   r  _coerce_constsNullFalse_True__coerce_numericsnumbersNumberr   r   s       rE   r   z!_CoerceLiterals._literal_coercionh  s    gs#  W^,,STBB*t**7GBrBB}}&E!((D~~''  Z'..%J((W$GG  '2rG   rc   )	r   r   r   r   r  r  r  r  r   rd   rG   rE   r   r   _  s&    INL3 59 3rG   r   c                  (    e Zd ZdZ	 dddddZd Zy)LiteralValueImplTNF)type_literal_executec               x    t        |      s | j                  |f||d| t        j                  d ||d|      S )N)r   r   T)r  uniquer  )rF   r   r!   r+   )r   rD   r   r   r  r  rg   s          rE   r   z$LiteralValueImpl._implicit_coercions  sU     8$$D$$"*G?A %%+
 	
rG   c                    |S rc   rd   r   s      rE   r   z"LiteralValueImpl._literal_coercion  r   rG   rc   )r   r   r   r   r   r   rd   rG   rE   r  r  }  s$      	
 
.rG   r  c                  R     e Zd ZdZ	 	 ddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d fdZ xZS )_SelectIsNotFromrd   Nr   c          	         |st        |t        j                        st        |t        j                        rd||j                  n|d}d}nd }t	        |   |f|||||d| J )NzTo create a FROM clause from a z$ object, use the .subquery() method.89ve)r   r   r   r   r   )rA   r   SelectStatementRoler   superr   )	r   rD   r   r   r   r   r   rg   r   s	           rE   r   z$_SelectIsNotFrom._raise_for_expected  s     7E$=$=>(E$=$=>
 *2)=8%%7JM 
 DD#	
	
 	
 	urG   r   r   r   r   r   r   r   __classcell__r   s   @rE   r  r    sx    I
 "&"&	# !%"#'## #  	# # # !# # 
# #rG   r  c                  4    e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 ddZd Zy)HasCacheKeyImplrd   Nc                N    t        |t              r|S | j                  |||       y rc   )rA   r   r   r   s        rE   r   z#HasCacheKeyImpl._implicit_coercions  s%     g{+N$$Wgx@rG   c                    |S rc   rd   r   s      rE   r   z!HasCacheKeyImpl._literal_coercion  r   rG   rc   r   r   rd   rG   rE   r  r    L    I "&	
A
A 
A 	
A
 
A 

ArG   r  c                  4    e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 ddZd Zy)ExecutableOptionImplrd   Nc                N    t        |t              r|S | j                  |||       y rc   )rA   r   r   r   s        rE   r   z(ExecutableOptionImpl._implicit_coercions  s&     g/0N$$Wgx@rG   c                    |S rc   rd   r   s      rE   r   z&ExecutableOptionImpl._literal_coercion  r   rG   rc   r   r   rd   rG   rE   r$  r$    r"  rG   r$  c                  4     e Zd ZdZdddddZd fd	Z xZS )ExpressionElementImplrd   NF)r   r  is_crudc                   |$|s"||j                   st        j                         S 	 t        j                  |||d|      S # t        j
                  $ r}| j                  ||       Y d }~y d }~ww xY w)NT)r  _is_crudr   )should_evaluate_noner!   r  r+   r   r]   r   )r   rD   r   r  r)  rg   r   s          rE   r   z'ExpressionElementImpl._literal_coercion  sx     Oe&@&@
 ==?";--'5  $$ ;((c(::;s   A A2A--A2c                    t        |t        j                        rd}nt        |t        j                        rd}nd }t        |   |f|||d|S )NzTTo create a column expression from a VALUES clause, use the .scalar_values() method.z`To create a column expression from a FROM clause row as a whole, use the .table_valued() method.r   r   r   )rA   r$   Valuesr   AnonymizedFromClauseRoler  r   r   rD   r   r   rg   r   r   s         rE   r   z)ExpressionElementImpl._raise_for_expected  si    gz0013  !?!?@> 
 Fw*
$x
JL
 	
rG   r   )r   r   r   r   r   r   r  r  s   @rE   r(  r(    s     I  $4;(
 
rG   r(  c                  *    e Zd ZdZddddZdddZy)BinaryElementImplrd   N)bindparam_typer   c                   	 |j                  |||      S # t        j                  $ r}| j                  ||       Y d }~y d }~ww xY w)N)r  r,  )_bind_paramr   r]   r   )r   rD   r   operatorr5  r   rg   r   s           rE   r   z#BinaryElementImpl._literal_coercion  sK    	7##Hg^#LL   	7$$W#$66	7s    AAA)r5  c                   |j                   j                  r5|j                   j                  s|j                  ||n|j                         }|S rc   )rN   _isnull_with_binary_element_type)r   r   r   r5  rg   s        rE   r   z BinaryElementImpl._post_coercion'  s@    ==  ):):99"0"<$))H rG   )r   r   r   r   r   r   rd   rG   rE   r4  r4    s     I 7 @D rG   r4  c                  j    e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 d	dZd Z ej                  d      d        Zd Z	y)
InElementImplrd   Nc                b   |j                   rt        |t        j                        rD|j                  j
                  r.| j                  |        | j                  |j                  fi |S | j                  |        | j                  |j                         fi |S | j                  |||       y rc   )
r   rA   r$   AliasrD   r   _warn_for_implicit_coercionr   selectr   r   s        rE   r   z!InElementImpl._implicit_coercions2  s     ##8Z%5%56$$4400:*t**8+;+;BrBB00:*t**8??+<CCC$$Wgx@rG   c                \    t        j                  d|j                  j                  z         y )Nz_Coercing %s object into a select() for use in IN(); please pass a select() construct explicitly)r   r   r   r   )r   rP   s     rE   r@  z)InElementImpl._warn_for_implicit_coercionF  s%    		:~~&&(	
rG   zsqlalchemy.sql.elementsc          	        t        j                  |      ri }t        |      }|D ]a  }t        |      rt	        |t         j
                  j                  j                        s t        |d      s | j                  |fi | ]|||<   c |r9t        j                  |D cg c]  }||v r||   n|j                  ||       c} S |j                  ||d      S  | j                  |fi | y c c}w )Nr@   T)	expanding)r   is_non_string_iterablerY   rF   rA   	preloadedsql_elementsr.   rC   r   r!   
ClauseListr7  )r   rD   r   r8  rg   non_literal_expressionsos          rE   r   zInElementImpl._literal_coercionM  s   &&w/  $ 7mG"1~%4>>66DD%a)=>000?B? 67/2  '** ") ")A  !$;; 4A6!%!1!1(A!>? ")	 	 '''T'JJ %D$$W33s   "C,c                  |j                   r|j                         S t        |t        j                        r,t        |j                        dk(  rJ |j                  |      S t        |t        j                        r"|j                  d      }d|_
        ||_        |S t        |t        j                        r|j                         S |S )Nr   )againstT)maintain_key)r   r   rA   r!   rH  r\   clauses
self_groupr+   _clonerD  	expand_opr$   r0  scalar_values)r   rD   r   r8  rg   s        rE   r   zInElementImpl._post_coercionp  s    "" **,,!4!457??+q000%%h%77!7!78nn$n7G $G (GN!2!23((**NrG   rc   r   )
r   r   r   r   r   r@  r   preload_moduler   r   rd   rG   rE   r=  r=  /  st    I "&	AA A 	A
 A 
A(
 T23 4 4 4DrG   r=  c                  &    e Zd ZdZdZd ZdddZy)OnClauseImplrd   Tc                &    | j                  |       y rc   r   r   s      rE   r   zOnClauseImpl._literal_coercion  s      )rG   N)r   c               >    t        |t        j                        r|S |S rc   )rA   r   JoinTargetRole)r   r   r   rg   s       rE   r   zOnClauseImpl._post_coercion  s      &(<(<=##rG   )r   r   r   r   r  r   r   rd   rG   rE   rU  rU    s    IN* <@ rG   rU  c                      e Zd ZdZdZddZy)WhereHavingImplrd   TNc                    t        ||      S rc   r   r   s      rE   r  zWhereHavingImpl._text_coercion  r  rG   rc   r   r   r   r   r  r  rd   rG   rE   rZ  rZ    s    IN3rG   rZ  c                      e Zd ZdZdZddZy)StatementOptionImplrd   TNc                ,    t        j                  |      S rc   r!   r1   r   s      rE   r  z"StatementOptionImpl._text_coercion  s    ""7++rG   rc   r\  rd   rG   rE   r^  r^    s    IN,rG   r^  c                      e Zd ZdZy)ColumnArgumentImplrd   Nr   r   r   r   rd   rG   rE   rb  rb        IrG   rb  c                      e Zd ZdZy)ColumnArgumentOrKeyImplrd   Nrc  rd   rG   rE   rf  rf    rd  rG   rf  c                      e Zd ZdZddZy)StrAsPlainColumnImplrd   Nc                ,    t        j                  |      S rc   )r!   r-   r   s      rE   r  z#StrAsPlainColumnImpl._text_coercion  s    $$W--rG   rc   )r   r   r   r   r  rd   rG   rE   rh  rh    s    I.rG   rh  c                      e Zd ZdZdZddZy)ByOfImplrd   TNc                ,    t        j                  |      S rc   )r!   _textual_label_referencer   s      rE   r  zByOfImpl._text_coercion  s    0099rG   rc   r\  rd   rG   rE   rk  rk    s    IN:rG   rk  c                      e Zd ZdZd Zy)OrderByImplrd   c                t    t        || j                        r!|j                  t        j                  |      S |S rc   )rA   r   _order_by_label_elementr!   _label_reference)r   r   rg   s      rE   r   zOrderByImpl._post_coercion  s4    x!1!1200<,,X66OrG   Nr   rd   rG   rE   ro  ro    s    IrG   ro  c                  .    e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 ddZy)GroupByImplrd   Nc                T    t        |      rt        j                  |j                   S |S rc   )r   r!   rH  cr   s        rE   r   zGroupByImpl._implicit_coercions  s&     (#&&

33OrG   rc   r   r   r   r   r   r   rd   rG   rE   rt  rt    sA    I "&	

 
 	

 
 

rG   rt  c                      e Zd ZdZdddZy)DMLColumnImplrd   Frj   c               "    |r|j                   S |S rc   )key)r   rD   rk   rg   s       rE   r   zDMLColumnImpl._post_coercion  s    ;;NrG   Nr   rd   rG   rE   ry  ry    s    I05 rG   ry  c                      e Zd ZdZdddZy)ConstExprImplrd   Nr   c                   |t        j                         S |du rt        j                         S |du rt        j                         S | j	                  ||       y )NFT)r!   r  r	  r
  r   r   s       rE   r   zConstExprImpl._literal_coercion  sL    ?==?"??$$_>>##$$Wg6rG   r   rd   rG   rE   r}  r}    s    I48 7rG   r}  c                  4    e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 ddZd Zy)TruncatedLabelImplrd   Nc                N    t        |t              r|S | j                  |||       y rc   r   r   s        rE   r   z&TruncatedLabelImpl._implicit_coercions  s%     gs#O$$Wgx@rG   c                d    t        |t        j                        r|S t        j                  |      S )zcoerce the given value to :class:`._truncated_label`.

        Existing :class:`._truncated_label` and
        :class:`._anonymous_label` objects are passed
        unchanged.
        )rA   r!   _truncated_labelr   s      rE   r   z$TruncatedLabelImpl._literal_coercion  s*     gx889N,,W55rG   rc   r   r   rd   rG   rE   r  r    sL    I "&	
A
A 
A 	
A
 
A 

A6rG   r  c                      e Zd ZdZdZddZy)DDLExpressionImplrd   TNc                ,    t        j                  |      S rc   r`  r   s      rE   r  z DDLExpressionImpl._text_coercion  s    
 ""7++rG   rc   r\  rd   rG   rE   r  r    s    IN,rG   r  c                      e Zd ZdZy)DDLConstraintColumnImplrd   Nrc  rd   rG   rE   r  r  !  rd  rG   r  c                      e Zd ZdZy)DDLReferredColumnImplrd   Nrc  rd   rG   rE   r  r  %  rd  rG   r  c                  4    e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 ddZd Zy)LimitOffsetImplrd   Nc                0    |y | j                  |||       y rc   r   r   s        rE   r   z#LimitOffsetImpl._implicit_coercions,  s     $$Wgx@rG   c               d    |y t        j                  |      }t        j                  |||d      S )NT)r  r  )r   asintr$   _OffsetLimitParam)r   rD   r   r  rg   values         rE   r   z!LimitOffsetImpl._literal_coercion8  s6     ?JJw'E//e5 rG   rc   r   r   rd   rG   rE   r  r  )  sL    I "&	
A
A 
A 	
A
 
A 

A	rG   r  c                  :     e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 d fdZ xZS )LabeledColumnExprImplrd   c                    t        |t        j                        r|j                  d       S t	        |   ||fd|i|}t        |t        j                        r|j                  d       S | j                  |||       y Nr   )rA   r   ExpressionElementRolelabelr  r   r   )r   rD   r   r   rg   newr   s         rE   r   z)LabeledColumnExprImpl._implicit_coercionsG  sz     h ; ;<>>$'''-+268C #u::;yy&(('8DrG   rc   r   )r   r   r   r   r   r  r  s   @rE   r  r  D  sN    I "&	EE E 	E
 E 
E ErG   r  c                  z     e Zd ZdZdZdZdZ ej                  dej                        Z
	 ddd fdZd	dZ xZS )
ColumnsClauseImplrd   Tz^\w\S*$N)r   c                   |s,t        |t              rddj                  d |D               d}t        |   |f|||d|S )NzDid you mean to say select(z, c              3  2   K   | ]  }t        |        y wrc   )r   ).0es     rE   	<genexpr>z8ColumnsClauseImpl._raise_for_expected.<locals>.<genexpr>i  s     6gT!Wgs   z)?r/  )rA   rY   joinr  r   )r   rD   r   r   r   rg   r   s         rE   r   z%ColumnsClauseImpl._raise_for_expectedc  s`     *Wd3-996g667r; 
 w*
$x
JL
 	
rG   c                    t        |      }| j                  j                  |       }t        j                  dt        j                  |      |rd|nd|rdnddz        )NzTextual column expression %(column)r %(argname)sshould be explicitly declared with text(%(column)r), or use %(literal_column)s(%(column)r) for more specificityr   r   literal_columnr   )r   r   r  )rJ   _guess_straight_columnmatchr   r]   r   r   )r   rD   r   guess_is_literals       rE   r  z ColumnsClauseImpl._text_coercionp  si    g,#::@@II#
 ..w7=D9"(8$h		

 	
rG   r   rc   )r   r   r   r   r  r  r  recompileIr  r   r  r  r  s   @rE   r  r  Z  sF    INL'RZZ
BDD9 /3
>B

rG   r  c                      e Zd ZdZy)ReturnsRowsImplrd   Nrc  rd   rG   rE   r  r    rd  rG   r  c                  F     e Zd ZdZdddZ	 d	 	 	 	 	 	 	 	 	 d fdZ xZS )StatementImplrd   Nr   c                   ||urt        |t              s	 |j                   |S |S # t        $ r t	        j
                  d|z  d       Y |S w xY w)Na  Object %r should not be used directly in a SQL statement context, such as passing to methods such as session.execute().  This usage will be disallowed in a future release.  Please use Core select() / update() / delete() etc. with Session.execute() and other statement execution methods.1.4)rA   rJ   _execute_on_connectionr   r   warn_deprecated)r   r   r   r   rg   s        rE   r   zStatementImpl._post_coercion  sl     ++Jc5

 77 x " 
$$ "22 	 
s   & "AAc                F    |j                   r|S t        |   ||fd|i|S r  )r   r  r   )r   rD   r   r   rg   r   s        rE   r   z!StatementImpl._implicit_coercions  s:     &&O7.+268 rG   rc   r   )r   r   r   r   r   r   r  r  s   @rE   r  r    sQ    I 6:8 "&	  	
  
 rG   r  c                  .    e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 ddZy)SelectStatementImplrd   Nc                b    |j                   r|j                         S | j                  |||       y rc   )_is_text_clausecolumnsr   r   s        rE   r   z'SelectStatementImpl._implicit_coercions  s.     ####%%$$Wgx@rG   rc   r   rw  rd   rG   rE   r  r    sG    I "&	
A
A 
A 	
A
 
A 

ArG   r  c                      e Zd ZdZy)
HasCTEImplrd   Nrc  rd   rG   rE   r  r    rd  rG   r  c                      e Zd ZdZy)	IsCTEImplrd   Nrc  rd   rG   rE   r  r    rd  rG   r  c                  H    e Zd ZdZdZdddZ	 d	dd	 	 	 	 	 	 	 	 	 	 	 d
dZy)JoinTargetImplrd   TNr   c               (    | j                  ||       y rc   r   r   s       rE   r   z JoinTargetImpl._literal_coercion  s      '2rG   F)legacyc                   t        |t        j                        r|S |r%|j                  rt	        j
                  dd       |S | j                  |||       y NzImplicit coercion of SELECT and textual SELECT constructs into FROM clauses is deprecated; please call .subquery() on any Core select or ORM Query object in order to produce a subquery object.r  )version)rA   r   rX  r   r   r  r   )r   rD   r   r   r  rg   s         rE   r   z"JoinTargetImpl._implicit_coercions  sW     gu334 N00  6  O$$Wgx@rG   rc   )rD   r   r   r   r   r   r  boolrg   r   r   r   )r   r   r   r   r   r   r   rd   rG   rE   r  r    sk    I+/(48 3 "&	A AA A 	A A A 
ArG   r  c                  J    e Zd ZdZ	 d	ddd	 	 	 	 	 	 	 	 	 	 	 	 	 d
dZdddZy)FromClauseImplrd   NFT)rz   allow_selectc                   |j                   r8|r|j                         S |r#t        j                  dd       |j                  S y |j
                  r|S | j                  |||       y r  )r   subqueryr   r  _implicit_subqueryr  r   )r   rD   r   r   rz   r  rg   s          rE   r   z"FromClauseImpl._implicit_coercions  so     ## ((**$$: "  222  %%O$$Wgx@rG   )
deannotatec               *    |r|j                         S |S rc   )_deannotate)r   rD   r  rg   s       rE   r   zFromClauseImpl._post_coercion  s    &&((NrG   rc   )rD   r   r   r   r   r   rz   r  r  r  rg   r   r   r   )r   r   r   r   r   r   rd   rG   rE   r  r    su    I "&	A #(!AA A 	A  A A A 
A6 5: rG   r  c                  8    e Zd ZdZ	 ddd	 	 	 	 	 	 	 	 	 	 	 ddZy)StrictFromClauseImplrd   NF)r  c                   |j                   r%|r#t        j                  dd       |j                  S | j	                  |||       y r  )r   r   r  r  r   )r   rD   r   r   r  rg   s         rE   r   z(StrictFromClauseImpl._implicit_coercions  sG     ##  #  ...$$Wgx@rG   rc   )rD   r   r   r   r   r   r  r  rg   r   r   r   rw  rd   rG   rE   r  r    s]    I "&	A #AA A 	A A A 
ArG   r  c                      e Zd ZdZddddZy)AnonymizedFromClauseImplrd   FN)flatr   c               .    |J |j                  |      S )N)r  )_anonymous_fromclause)r   rD   r  r   rg   s        rE   r   z'AnonymizedFromClauseImpl._post_coercion1  s     ||,,$,77rG   r   rd   rG   rE   r  r  .  s    I.3$ 8rG   r  c                      e Zd ZdZd Zy)DMLTableImplrd   c                @    d|j                   v r|j                   d   S |S )N	dml_table)_annotationsr   s      rE   r   zDMLTableImpl._post_coercion:  s&    '...''44NrG   Nr   rd   rG   rE   r  r  7  s    IrG   r  c                  .    e Zd ZdZ	 d	 	 	 	 	 	 	 	 	 ddZy)DMLSelectImplrd   Nc                    |j                   rLt        |t        j                        r"|j                  j
                  r|j                  S |j                         S | j                  |||       y rc   )r   rA   r$   r?  rD   r   rA  r   r   s        rE   r   z!DMLSelectImpl._implicit_coercionsD  sW     ##8Z%5%56$$44'''(($$Wgx@rG   rc   r   rw  rd   rG   rE   r  r  A  sG    I "&	AA A 	A
 A 
ArG   r  c                  $     e Zd ZdZd fd	Z xZS )CompoundElementImplrd   c                    t        |t        j                        r|j                  rd}nd}nd }t	        |   |f|||d|S )NzFUse the plain select() object without calling .subquery() or .alias().z9To SELECT from any FROM clause, use the .select() method.r/  )rA   r   FromClauseRole_is_subqueryr  r   r2  s         rE   r   z'CompoundElementImpl._raise_for_expectedZ  sa    gu334##7  P  Fw*
$x
JL
 	
rG   r   r  r  s   @rE   r  r  W  s    I
 
rG   r  RoleImpl)rD   r   r   r  )rS   rJ   rT   rJ   rU   rJ   r   zCallable[[_F], _F])r^   rJ   r_   rJ   r`   z+Union[Sequence[_T], Sequence[Sequence[_T]]]r   rX   )rf   zType[roles.TruncatedLabelRole]rD   r   rg   r   r   rJ   )
rf   Type[roles.DMLColumnRole]rD   r   rk   Literal[True]rg   r   r   rJ   )rf   zType[roles.LiteralValueRole]rD   r   rg   r   r   zBindParameter[Any])rf   z!Type[roles.DDLReferredColumnRole]rD   r   rg   r   r   Union[Column[Any], str])rf   #Type[roles.DDLConstraintColumnRole]rD   r   rg   r   r   r  )rf   zType[roles.StatementOptionRole]rD   r   rg   r   r   z%Union[ColumnElement[Any], TextClause])rf   z&Type[roles.LabeledColumnExprRole[Any]]rD   _ColumnExpressionArgument[_T]rg   r   r   zNamedColumn[_T])rf   zgUnion[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole]]rD   r  rg   r   r   zColumnElement[_T])rf   zUnion[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole], Type[roles.OnClauseRole], Type[roles.ColumnArgumentRole]]rD   r   rg   r   r   zColumnElement[Any])rf   zType[roles.DMLTableRole]rD   r(   rg   r   r   r*   )rf   zType[roles.HasCTERole]rD   r6   rg   r   r   r6   )rf   zType[roles.SelectStatementRole]rD   r7   rg   r   r   r7   )rf   Type[roles.FromClauseRole]rD   r)   rg   r   r   r5   )
rf   r  rD   r7   rz   r  rg   r   r   r8   )rf   zType[roles.ColumnsClauseRole]rD   z_ColumnsClauseArgument[Any]rg   r   r   r3   )rf   zType[roles.JoinTargetRole]rD   r4   rg   r   r   r4   )rf   	Type[_SR]rD   r   rg   r   r   r   )rf   r  rD   r   r   zOptional[ClauseElement]r   r   r   r  r   r  rg   r   r   r   )rf   r  rD   r   rg   r   r   rJ   )rf   r  r   zIterable[_DDLColumnArgument]r   zwIterator[Tuple[Union[str, Column[Any]], Optional[ColumnClause[Any]], Optional[str], Optional[Union[Column[Any], str]]]])rD   r   r   r   r   zType[exc.SQLAlchemyError]r   r   r   r   r   r   )
__future__r   collections.abcabcrI   r  r  r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   _typingr   baser   r   	cache_keyr   r   r   r   r   util.typingr    r!   r"   r#   r$   r%   r&   r'   r(   r)   dmlr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   SQLRoler:   r<   
StringRoler=   r>   rF   rK   rV   ra   rh   r   r   r   r   r   r   r   r]   r   r   r   r  r  r  r$  r(  r4  r=  rU  rZ  r^  rb  rf  rh  ByOfRolerk  ro  rt  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   dirr   r   clsendswithreplaceglobalsr   r  ee_implintr  rJ   floatpy_typerd   rG   rE   <module>r     sH	   # )  	                     # "  "     !	2/+*,%''&'%+$1/&"&$/e5==)T#s(+,~U-=-=>T	5#L!.1 &&& 6& 	&$ 

(  		 
 

  	
# 	
  	 
 

&  	 
 
"
+"" " 	" 
" 
"
-"" " 	" 
" 
0
)00 0 +	0 
0 

0*  	 
 
 +   
 


 
 
 
 

 

"  	 
 

   	 
 

)  	 
 

$   	 
 

 (+	
$ %	
   
 
 
' (    	  
  

$   	 
 

  		 
 6:!$q

q
q
 3	q

 q
 q
 q
 q
 	q
h4
#4.149<445
-5-55<49 49n* *! !
 
Jx J< "),):):# ' 	
 
 $	7h 	73h 3<x <&x &Rh &8 &(
,h (
V-x 4SH Sl#X &3o'7 3,/8 ,( / .?H .: 0(ENN :
(H 
(H  %x 7H 76h 6:
,_h 
,k+<h 3 h 6E1 E,&
(/8 &
Rh 'OX 'TA/8 A   $AX $AN"% "JA> A283 8#_h AOX A,
/8 
*  JD
%
C}}V||FF+79"79T?3'D $L  5667GsE*=DU009: + rG   