
    XeIiN                       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)lm1Z1 dd*l2m3Z3 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 dd9lmBZB  ed:ejC        ;          ZD ed<e	d=ef         ;          ZE ed>ejF        ;          ZG ed?e;          ZHddDZIdE ZJddKZKddQZLeddU            ZMed=dVddZ            ZMed d]            ZMedd`            ZMeddb            ZMedde            ZMeddi            ZMeddm            ZMeddp            ZMeddt            ZMeddw            ZMed	dz            ZMed
d~            ZMed=ddd            ZMedd            ZMedd            ZMedd            ZMdddddddZMddZNddZO G d d          ZP G d d          ZQ G d d          ZR G d deP          ZS G d deP          ZTde#jU        ddfddZV G d deP          ZW G d deP          ZX G d deP          ZY G d deP          ZZ G d deP          Z[ G d deP          Z\ G d deTeP          Z] G d de]eP          Z^ G d deP          Z_ G d deTeP          Z` G d deXeTeP          Za G d deXeP          Zb G dÄ deWeP          Zc G dń deSeP          Zd G dǄ deXeP          Ze G dɄ deXeTePejf                  Zg G d˄ degeP          Zh G d̈́ degeP          Zi G dτ deSeP          Zj G dф deP          Zk G dӄ deReP          Zl G dՄ deQeXeP          Zm G dׄ deQeSeP          Zn G dل den          Zo G dۄ deP          Zp G d݄ de]          Zq G d߄ deZeXeP          Zr G d deP          Zs G d deXeP          Zt G d deWeP          Zu G d des          Zv G d deP          Zw G d deP          Zx G d deZeWeP          Zy G d dey          Zz G d dez          Z{ G d deZeWeP          Z| G d deWeP          Z} G d deWeP          Z~i Z ee          D ]cZ eee          Ze                    d          r@e                    dd          Ze e            v r  e            e         e          Zeee<   des&eej                 ZeeeefD ]Zeeej        e         <   dS dS (      )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)_OnlyColumnArgument)_DMLTableElement)BindParameter)ClauseElement)ColumnClause)ColumnElement)NamedColumn)SQLCoreOperations)
TextClause)Column)_ColumnsClauseElement)_JoinTargetProtocol)
FromClause)HasCTE)
SelectBase)Subquery)_TraverseCallableType_SR)bound_F._StringOnlyR_Telementr   returnboolc                h    t          | t          t          j        f           o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)r@   s    ]/var/www/html/MCyber-Diagnostic/venv/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py_is_literalrI   O   sA     	F,-   5 g344
45    c                   t          | t          j                  r.t          | t                    s| D ]}t	          |          s dS dS t          | t
          t          j        t          t          t          j        j        f           o<t          | d           o+t          | t                     p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.

    FTrD   )rE   collections_abcr   str_deep_is_literalr   r#   rF   r   r   r   langhelperssymbolrG   type
issubclass)r@   elems     rH   rN   rN   [   s     '?344 Z> >   	 	D#D)) uu 4 ( '	
 	
 		
 	
 !5666	
 7D))) 4g{333rJ   	paramnamerM   meth_rst	param_rstCallable[[_F], _F]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)rT   rU   rV   s      rH   _document_text_coercionrZ      s2     "	 99hhh	 
 
 
rJ   attrnamefnnameargs+Union[Sequence[_T], Sequence[Sequence[_T]]]Sequence[_T]c                4   |rt          |d         t          t          t          f          r_t	          |          dk    rLt          |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. r_   )rE   listsetdictlenr   ArgumentErrorr   )r[   r\   r]   s      rH   !_expression_collection_was_a_listrf      s    
  -
47T3$566 -3t99>>d1gt$$ 	#4 4 4 4 4 4   NDG,,,%%%rJ   roleType[roles.TruncatedLabelRole]kwc                    d S N rg   r@   ri   s      rH   expectrn      	    
 #rJ   as_keyType[roles.DMLColumnRole]rq   Literal[True]c                   d S rk   rl   )rg   r@   rq   ri   s       rH   rn   rn      s	     #rJ   Type[roles.LiteralValueRole]BindParameter[Any]c                    d S rk   rl   rm   s      rH   rn   rn      s	    
 rJ   !Type[roles.DDLReferredColumnRole]Union[Column[Any], str]c                    d S rk   rl   rm   s      rH   rn   rn      	    
 "crJ   #Type[roles.DDLConstraintColumnRole]c                    d S rk   rl   rm   s      rH   rn   rn      r{   rJ   Type[roles.StatementOptionRole]%Union[ColumnElement[Any], TextClause]c                    d S rk   rl   rm   s      rH   rn   rn      s	    
 -0CrJ   &Type[roles.LabeledColumnExprRole[Any]]=Union[_ColumnExpressionArgument[_T], _OnlyColumnArgument[_T]]NamedColumn[_T]c                    d S rk   rl   rm   s      rH   rn   rn      s	    
 crJ   gUnion[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole]]_ColumnExpressionArgument[_T]ColumnElement[_T]c                    d S rk   rl   rm   s      rH   rn   rn      s	     rJ   Union[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole], Type[roles.OnClauseRole], Type[roles.ColumnArgumentRole]]ColumnElement[Any]c                    d S rk   rl   rm   s      rH   rn   rn      s	     rJ   Type[roles.DMLTableRole]r(   r+   c                    d S rk   rl   rm   s      rH   rn   rn      s	    
 srJ   Type[roles.HasCTERole]r7   c                    d S rk   rl   rm   s      rH   rn   rn      s	    
 SrJ   Type[roles.SelectStatementRole]r8   c                    d S rk   rl   rm   s      rH   rn   rn     	    
 rJ   Type[roles.FromClauseRole]r)   r6   c                    d S rk   rl   rm   s      rH   rn   rn     r   rJ   )explicit_subqueryr   r9   c                   d S rk   rl   )rg   r@   r   ri   s       rH   rn   rn     s	     srJ   Type[roles.ColumnsClauseRole]_ColumnsClauseArgument[Any]r4   c                    d S rk   rl   rm   s      rH   rn   rn   !  s	    
  CrJ   Type[roles.JoinTargetRole]r5   c                    d S rk   rl   rm   s      rH   rn   rn   )  s	    
 #rJ   	Type[_SR]c                    d S rk   rl   rm   s      rH   rn   rn   2  ro   rJ   F)apply_propagate_attrsargnamepost_inspectdisable_inspectionr   Optional[ClauseElement]r   Optional[str]r   r   c          	        | j         rFt          |          r7t          |d          r't          j        || t          j        di ||          S t          |          }|}t          |t          j	        t          j        t          j        t          j        f          sd }	|j        r |j        |fi |}	n|}d}
|j        r#t          ||           rt          |d          rd}
nIt          |d          r9d}
t#          |dd          s|                                }nnt          |d          9|
sy|j        r_|s]t)          j        |d          }|E|r|j         	 |                                }	n&# t.          $ r |                    ||           Y nw xY w|	 |j        |fd|i|}	n-|}	n*t          |t          j                  r |j        di |}	n|}	|Nt4          j        rt          |	t8          t:          f          sJ |j        st#          |	d	d           r|	j        |_        |j        |	j         j!        v r|j"        r |j"        |	f||d
|}	|	S  |j#        ||	fd|i|S )N__code__)r   FrD   Tis_clause_element)raiseerrr   _propagate_attrs)r   original_elementrl   )$allows_lambdacallablerG   r"   LambdaElementLambdaOptions_impl_lookuprE   r!   CompilerElementr#   
SchemaItemFetchedValue	PyWrapper_resolve_literal_only_literal_coercion$_skip_clauseelement_for_target_matchgetattrrD   _use_inspectionr   inspect_post_inspectAttributeError_raise_for_expected_sa__py_wrapper_literaltypingr   r1   r-   r   _role_class	__class____mro___post_coercion_implicit_coercions)rg   r@   r   r   r   r   ri   implr   resolvedr   insps               rH   rn   rn   :  s    	
 W
 GZ((
 $!''B''"7	
 
 
 	
 D$		
  : % +	#-t-g<<<<HH& % 9w-- G%9::
 %)!!g';<< (,%"7,?GG ")"<"<">"> g';<<  % #' P0B P%-gFFFD'' / ..P'+'>'>'@'@HH- P P P 445EwOOOOOP #5t5   )0 46   H #	GW.	/	/ 27288R88( 	Lh):M(JKKKKK$5 	O'($;
 ;
 	O 6>5N!28-555 	*t*!1  	 H 't'h
 
07
;=
 
 	
s   E, , FFc                N    |                     dd            t          | |fddi|S )Nrq   T)poprn   rm   s      rH   expect_as_keyr     s5     FF8T$333333rJ   expressionsIterable[_DDLColumnArgument]wIterator[Tuple[Union[str, Column[Any]], Optional[ColumnClause[Any]], Optional[str], Optional[Union[Column[Any], str]]]]c              #    K   |D ]}d }d }t          | |          }t          |t                    rt          |t                    sJ |x}}n+g }|j        }t	          j        |i d|i           |r|d         }||n|}||||fV  d S )Ncolumnr   )rn   rE   rM   appendr   traverse)	rg   r   exprstrnamer   r   cols
col_appendadd_elements	            rH    expect_col_expression_collectionr     s        5 5,24,>,>h$$ 	!dC(((((!%%Ghh&(D=A[JhXz,BCCC !a & 2ff44444!5 5rJ   c                  Z    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dS )RoleImpl)r   namer   c                    t                      rk   )NotImplementedErrorselfr@   ri   s      rH   r   zRoleImpl._literal_coercion  s    !###rJ   Nr   r   Fc                j    || _         |j        | _        t          |t          j                  | _        d S rk   )r   
_role_namer   rR   r   UsesInspectionr   )r   
role_classs     rH   __init__zRoleImpl.__init__  s/    %)	)*e6JKKrJ   r@   r   r   r   ri   rA   c                4    |                      |||           d S rk   r   r   r@   r   r   ri   s        rH   r   zRoleImpl._implicit_coercions  s"     	  '8<<<<<rJ   advicecodeerrOptional[Any]r   r   r   Optional[Exception]r   c                   |||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   re   )
r   r@   r   r   r   r   r   ri   gotmsgs
             rH   r   zRoleImpl._raise_for_expected  s     HG$;$;9A777KCCw--C 	<			CC -1IIIsss;C 	 3<C$///S8rJ   rk   
r@   r   r   r   r   r   ri   r   rA   r   NNr@   r   r   r   r   r   r   r   r   r   r   r   ri   r   rA   r   )__name__
__module____qualname__	__slots__r   r   __annotations__r   r   r   r   r   rl   rJ   rH   r   r     s         :I$ $ $ N!+0(L L L "&	= = = = = "&"&	9 !%"#'9 9 9 9 9 9 9 9rJ   r   c                      e Zd ZdZd ZdS )_Deannotaterl   c                $    ddl m}  ||          S )Nr   )_deep_deannotate)r   r   )r   r   ri   r   s       rH   r   z_Deannotate._post_coercion  s%    ******)))rJ   Nr   r   r   r   r   rl   rJ   rH   r   r   
  s(        I* * * * *rJ   r   c                      e Zd ZdZdZdS )_StringOnlyrl   TN)r   r   r   r   r   rl   rJ   rH   r   r     s        I rJ   r   c                       e Zd ZdZddZd ZdS )_ReturnsStringKeyrl   Nc                b    t          |t                    r|S |                     |||           d S rk   rE   rM   r   r   s        rH   r   z%_ReturnsStringKey._implicit_coercions  s8    gs## 	AN$$Wgx@@@@@rJ   c                    |S rk   rl   r   s      rH   r   z#_ReturnsStringKey._literal_coercion"      rJ   rk   r   r   r   r   r   r   rl   rJ   rH   r  r    s@        IA A A A    rJ   r  c                       e Zd ZdZd ZddZdS )_ColumnCoercionsrl   c                .    t          j        d           d S )Nz|implicitly coercing SELECT object to scalar subquery; please use the .scalar_subquery() method to produce a scalar subquery.)r   warn)r   s    rH   "_warn_for_scalar_subquery_coercionz3_ColumnCoercions._warn_for_scalar_subquery_coercion)  s%    		
 	
 	
 	
 	
rJ   Nc                   |}t          |dd          s|                     |||           d S |j        r(|                                  |                                S |j        rGt          |t          j                  r-|                                  |j	                                        S | j
        j        r	|j        r|S |                     |||           d S )Nr   F)r   r   _is_select_baser  scalar_subquery_is_from_clauserE   r$   r9   r@   r   r   _is_lambda_element)r   r@   r   r   ri   r   s         rH   r   z$_ColumnCoercions._implicit_coercions0  s    "x!4e<< 	J$$%5wIIIII% 	J33555++---% 	J*j)+
 +
 	J 33555#33555+ 	J0K 	JO$$%5wIIIIIrJ   rk   )r   r   r   r   r  r   rl   rJ   rH   r  r  &  sB        I
 
 
J J J J J JrJ   r  exc_clsType[exc.SQLAlchemyError]extrar   r   r   c                h     |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   r  )r   ellipses_string)r@   r   r  r  r   s        rH   _no_text_coercionr  B  sf     '	0 (119@HHGG55b&+3UU]]
 
	
  rJ   c                      e Zd ZdZdddZdS )_NoTextCoercionrl   Nr   c                   t          |t                    r1t          t          j        | j                  rt          ||           d S |                     ||           d S rk   )rE   rM   rR   r!   r2   r   r  r   r   r@   r   ri   s       rH   r   z!_NoTextCoercion._literal_coercionW  sd    gs## 	7
!1)
 )
 	7 gw/////$$Wg66666rJ   r   r   r   r   r   rl   rJ   rH   r  r  T  s5        I48 7 7 7 7 7 7 7rJ   r  c                  2    e Zd ZdZdZdZdZddZdddZdS )_CoerceLiteralsrl   FNc                "    t          ||          S rk   r  r   r@   r   s      rH   _text_coercionz_CoerceLiterals._text_coercionf       '222rJ   r  c                  t          |t                    r2| j        r|dk    rt          j        dd          S  | j        ||fi |S | j        rC|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 |                     ||           d S )N*T)
is_literalF)rE   rM   _coerce_starr!   r.   r$  _coerce_constsNullFalse_True__coerce_numericsnumbersNumberr   r  s       rH   r   z!_CoerceLiterals._literal_coercioni  s    gs## 	C  CW^^,STBBBB*t*7GBBrBBB 	(}&E!!(((D~'''  	HZ'.%J%J 	H(W$GGGG  '22222rJ   rk   )	r   r   r   r   r*  r)  r.  r$  r   rl   rJ   rH   r   r   `  s[        INL3 3 3 3 59 3 3 3 3 3 3 3rJ   r   c                  *    e Zd ZdZ	 dddddZd ZdS )LiteralValueImplTNF)type_literal_executec               t    t          |          s | j        |f||d| t          j        d ||d|          S )N)r   r   T)r3  uniquer4  )rI   r   r!   r,   )r   r@   r   r   r3  r4  ri   s          rH   r   z$LiteralValueImpl._implicit_coercions  sp     8$$ 	$D$"*G ?A   %+
 
 
 	
rJ   c                    |S rk   rl   r   s      rH   r   z"LiteralValueImpl._literal_coercion  r  rJ   rk   )r   r   r   r   r   r   rl   rJ   rH   r2  r2  ~  sT          	
 
 
 
 
 
.    rJ   r2  c                  4     e Zd ZdZ	 	 dddddd fdZ xZS )_SelectIsNotFromrl   Nr   r@   r   r   r   r   r   r   r   r   r   ri   rA   r   c          	         |st          |t          j                  st          |t          j                  rd||j        n|d}d}nd } t	                      j        |f|||||d| J )NzTo create a FROM clause from a z$ object, use the .subquery() method.89ve)r   r   r   r   r   )rE   r   SelectStatementRoler   superr   )	r   r@   r   r   r   r   r   ri   r   s	           rH   r   z$_SelectIsNotFrom._raise_for_expected  s     	7E$=>>	 (E$=>>	 *2)=8%%7JJM 
 DDD##	
	
 	
 	
 	
 	
 	rJ   r   r   r   r   r   r   r   __classcell__r   s   @rH   r9  r9    sd        I
 "&"&	# !%"#'# # # # # # # # # # # #rJ   r9  c                  $    e Zd ZdZ	 ddd
Zd ZdS )HasCacheKeyImplrl   Nr@   r   r   r   r   ri   rA   c                b    t          |t                    r|S |                     |||           d S rk   )rE   r   r   r   s        rH   r   z#HasCacheKeyImpl._implicit_coercions  s:     g{++ 	AN$$Wgx@@@@@rJ   c                    |S rk   rl   r   s      rH   r   z!HasCacheKeyImpl._literal_coercion  r  rJ   rk   r   r  rl   rJ   rH   rB  rB    K        I "&	
A 
A 
A 
A 
A    rJ   rB  c                  $    e Zd ZdZ	 ddd
Zd ZdS )ExecutableOptionImplrl   Nr@   r   r   r   r   ri   rA   c                b    t          |t                    r|S |                     |||           d S rk   )rE   r   r   r   s        rH   r   z(ExecutableOptionImpl._implicit_coercions  s;     g/00 	AN$$Wgx@@@@@rJ   c                    |S rk   rl   r   s      rH   r   z&ExecutableOptionImpl._literal_coercion  r  rJ   rk   r   r  rl   rJ   rH   rG  rG    rE  rJ   rG  c                  4     e Zd ZdZdddddZd fd	Z xZS )ExpressionElementImplrl   NF)r   r3  is_crudc                   ||s||j         st          j                    S 	 t          j        |||d|          S # t          j        $ r"}|                     ||           Y d }~d S d }~ww xY w)NT)r6  _is_crudr   )should_evaluate_noner!   r+  r,   r   re   r   )r   r@   r   r3  rL  ri   r   s          rH   r   z'ExpressionElementImpl._literal_coercion  s     O e&@
 =??";-'5    $ ; ; ;((c(:::::::::;s   ; A,
A''A,c                    t          |t          j                  rd}nt          |t          j                  rd}nd } t                      j        |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   )rE   r$   Valuesr   AnonymizedFromClauseRoler=  r   r   r@   r   r   ri   r   r   s         rH   r   z)ExpressionElementImpl._raise_for_expected  s    gz011 	3 F !?@@ 	> F
 F*uww*
$x
 
JL
 
 	
rJ   r   )r   r   r   r   r   r   r?  r@  s   @rH   rK  rK    sd        I  $4; ; ; ; ;(
 
 
 
 
 
 
 
 
 
rJ   rK  c                  ,    e Zd ZdZddddZdddZdS )BinaryElementImplrl   N)bindparam_typer   c                   	 |                     |||          S # t          j        $ r"}|                     ||           Y d }~d S d }~ww xY w)N)r3  rO  )_bind_paramr   re   r   )r   r@   r   operatorrX  r   ri   r   s           rH   r   z#BinaryElementImpl._literal_coercion  so    	7##Hg^#LLL  	7 	7 	7$$W#$666666666	7s    AAA)rX  c               r    |j         j        r*|j         j        s|                    ||n|j                   }|S rk   )rQ   _isnull_with_binary_element_type)r   r   r   rX  ri   s        rH   r   z BinaryElementImpl._post_coercion(  sE    =  	): 	99"0"<$) H rJ   )r   r   r   r   r   r   rl   rJ   rH   rW  rW    sZ        I 7 7 7 7 7 @D       rJ   rW  c                  \    e Zd ZdZ	 ddd
Zd Z ej        d          d             Zd Z	dS )InElementImplrl   Nr@   r   r   r   r   ri   rA   c                H   |j         rt          |t          j                  r4|j        j        r(|                     |            | j        |j        fi |S |                     |            | j        |                                fi |S | 	                    |||           d S rk   )
r  rE   r$   Aliasr@   r  _warn_for_implicit_coercionr   selectr   r   s        rH   r   z!InElementImpl._implicit_coercions3  s     # 	A8Z%566D$4D 00:::*t*8+;BBrBBB00:::*t*8??+<+<CCCCC$$Wgx@@@@@rJ   c                H    t          j        d|j        j        z             d S )Nz_Coercing %s object into a select() for use in IN(); please pass a select() construct explicitly)r   r
  r   r   )r   rS   s     rH   rc  z)InElementImpl._warn_for_implicit_coercionG  s2    	:~&(	
 	
 	
 	
 	
rJ   zsqlalchemy.sql.elementsc                  t          j        |          ri t          |          }|D ]Y}t          |          sHt	          |t           j        j        j                  st          |d          s | j	        |fi | T||<   Zrt          j        fd|D              S                     |d          S  | j	        |fi | d S )NrD   c                T    g | ]$}|v r|         n                     |          %S rl   )rZ  ).0or   non_literal_expressionsr[  s     rH   
<listcomp>z3InElementImpl._literal_coercion.<locals>.<listcomp>b  sT          !$;;; 4A66!%!1!1(A!>!>	  rJ   T)	expanding)r   is_non_string_iterablera   rI   rE   	preloadedsql_elementsr/   rG   r   r!   
ClauseListrZ  )r   r@   r   r[  ri   ri  rj  s     ``  @rH   r   zInElementImpl._literal_coercionN  s7   &w// 	4  $ 7mmG 7 7"1~~ 7%4>6D  7%a)=>>7 10??B???? 67/2& K*      ")  	 	 '''T'JJJ %D$W3333333rJ   c                  |j         r|                                S t          |t          j                  r0t          |j                  dk    rJ |                    |          S t          |t          j                  r&|	                    d          }d|_
        ||_        |S t          |t          j                  r|                                S |S )Nr   )againstT)maintain_key)r  r  rE   r!   rp  rd   clauses
self_groupr,   _clonerl  	expand_opr$   rS  scalar_values)r   r@   r   r[  ri   s        rH   r   zInElementImpl._post_coercionq  s    " 	 **,,,!455 	7?++q0000%%h%777!788 		nn$n77G $G (GN!233 	((***NrJ   rk   r   )
r   r   r   r   r   rc  r   preload_moduler   r   rl   rJ   rH   r`  r`  0  s        I "&	A A A A A(
 
 
 T233 4  4 43 4D    rJ   r`  c                  (    e Zd ZdZdZd ZdddZdS )OnClauseImplrl   Tc                0    |                      |           d S rk   r   r   s      rH   r   zOnClauseImpl._literal_coercion  s      )))))rJ   N)r   c               >    t          |t          j                  r|S |S rk   )rE   r   JoinTargetRole)r   r   r   ri   s       rH   r   zOnClauseImpl._post_coercion  s%     &(<== 	$##rJ   )r   r   r   r   r*  r   r   rl   rJ   rH   r{  r{    sL        IN* * * <@       rJ   r{  c                      e Zd ZdZdZddZdS )WhereHavingImplrl   TNc                "    t          ||          S rk   r"  r#  s      rH   r$  zWhereHavingImpl._text_coercion  r%  rJ   rk   r   r   r   r   r*  r$  rl   rJ   rH   r  r    s2        IN3 3 3 3 3 3rJ   r  c                      e Zd ZdZdZddZdS )StatementOptionImplrl   TNc                *    t          j        |          S rk   r!   r2   r#  s      rH   r$  z"StatementOptionImpl._text_coercion  s    "7+++rJ   rk   r  rl   rJ   rH   r  r    s2        IN, , , , , ,rJ   r  c                      e Zd ZdZdS )ColumnArgumentImplrl   Nr   r   r   r   rl   rJ   rH   r  r            IIIrJ   r  c                      e Zd ZdZdS )ColumnArgumentOrKeyImplrl   Nr  rl   rJ   rH   r  r    r  rJ   r  c                      e Zd ZdZddZdS )StrAsPlainColumnImplrl   Nc                *    t          j        |          S rk   )r!   r.   r#  s      rH   r$  z#StrAsPlainColumnImpl._text_coercion  s    $W---rJ   rk   )r   r   r   r   r$  rl   rJ   rH   r  r    s-        I. . . . . .rJ   r  c                      e Zd ZdZdZddZdS )ByOfImplrl   TNc                *    t          j        |          S rk   )r!   _textual_label_referencer#  s      rH   r$  zByOfImpl._text_coercion  s    0999rJ   rk   r  rl   rJ   rH   r  r    s2        IN: : : : : :rJ   r  c                      e Zd ZdZd ZdS )OrderByImplrl   c                f    t          || j                  r|j        t          j        |          S |S rk   )rE   r   _order_by_label_elementr!   _label_reference)r   r   ri   s      rH   r   zOrderByImpl._post_coercion  s6    x!122	0<,X666OrJ   Nr   rl   rJ   rH   r  r    s(        I    rJ   r  c                      e Zd ZdZ	 ddd
ZdS )GroupByImplrl   Nr@   r   r   r   r   ri   rA   c                J    t          |          rt          j        |j         S |S rk   )r   r!   rp  cr   s        rH   r   zGroupByImpl._implicit_coercions  s)     (## 	&
33OrJ   rk   r   r   r   r   r   r   rl   rJ   rH   r  r    s7        I "&	
 
 
 
 
 
 
rJ   r  c                      e Zd ZdZdddZdS )DMLColumnImplrl   Frp   c                   |r|j         S |S rk   )key)r   r@   rq   ri   s       rH   r   zDMLColumnImpl._post_coercion  s     	;NrJ   Nr   rl   rJ   rH   r  r    s5        I05       rJ   r  c                      e Zd ZdZdddZdS )ConstExprImplrl   Nr  c                   |t          j                    S |du rt          j                    S |du rt          j                    S |                     ||           d S )NFT)r!   r+  r,  r-  r   r  s       rH   r   zConstExprImpl._literal_coercion  s_    ?=??"?$$$__>###$$Wg66666rJ   r  rl   rJ   rH   r  r    s5        I48 7 7 7 7 7 7 7rJ   r  c                  $    e Zd ZdZ	 ddd
Zd ZdS )TruncatedLabelImplrl   Nr@   r   r   r   r   ri   rA   c                b    t          |t                    r|S |                     |||           d S rk   r  r   s        rH   r   z&TruncatedLabelImpl._implicit_coercions  s:     gs## 	AO$$Wgx@@@@@rJ   c                b    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.
        )rE   r!   _truncated_labelr   s      rH   r   z$TruncatedLabelImpl._literal_coercion  s/     gx899 	6N,W555rJ   rk   r   r  rl   rJ   rH   r  r    sK        I "&	
A 
A 
A 
A 
A6 6 6 6 6rJ   r  c                      e Zd ZdZdZddZdS )DDLExpressionImplrl   TNc                *    t          j        |          S rk   r  r#  s      rH   r$  z DDLExpressionImpl._text_coercion  s    
 "7+++rJ   rk   r  rl   rJ   rH   r  r    s2        IN, , , , , ,rJ   r  c                      e Zd ZdZdS )DDLConstraintColumnImplrl   Nr  rl   rJ   rH   r  r  "  r  rJ   r  c                      e Zd ZdZdS )DDLReferredColumnImplrl   Nr  rl   rJ   rH   r  r  &  r  rJ   r  c                  $    e Zd ZdZ	 ddd
Zd ZdS )LimitOffsetImplrl   Nr@   r   r   r   r   ri   rA   c                <    |d S |                      |||           d S rk   r   r   s        rH   r   z#LimitOffsetImpl._implicit_coercions-  s-     4$$Wgx@@@@@rJ   c               b    |d S t          j        |          }t          j        |||d          S )NT)r3  r6  )r   asintr$   _OffsetLimitParam)r   r@   r   r3  ri   values         rH   r   z!LimitOffsetImpl._literal_coercion9  s@     ?4Jw''E/e5   rJ   rk   r   r  rl   rJ   rH   r  r  *  sK        I "&	
A 
A 
A 
A 
A	 	 	 	 	rJ   r  c                  (     e Zd ZdZ	 dd fd
Z xZS )LabeledColumnExprImplrl   Nr@   r   r   r   r   ri   rA   c                ,   t          |t          j                  r|                    d           S  t	                      j        ||fd|i|}t          |t          j                  r|                    d           S |                     |||           d S Nr   )rE   r   ExpressionElementRolelabelr=  r   r   )r   r@   r   r   ri   newr   s         rH   r   z)LabeledColumnExprImpl._implicit_coercionsH  s     h ;<< 		E>>$'''-%''- +268 C #u:;; Eyy&(('8DDDDDrJ   rk   r   )r   r   r   r   r   r?  r@  s   @rH   r  r  E  sW        I "&	E E E E E E E E E E ErJ   r  c                  l     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 )
ColumnsClauseImplrl   Tz^\w\S*$N)r   c                   |s8t          |t                    r#dd                    d |D                        d} t                      j        |f|||d|S )NzDid you mean to say select(z, c              3  4   K   | ]}t          |          V  d S rk   )r   )rh  es     rH   	<genexpr>z8ColumnsClauseImpl._raise_for_expected.<locals>.<genexpr>j  s(      66T!WW666666rJ   z)?rR  )rE   ra   joinr=  r   )r   r@   r   r   r   ri   r   s         rH   r   z%ColumnsClauseImpl._raise_for_expectedd  s      	*Wd33 	;9966g66666; ; ; 
 +uww*
$x
 
JL
 
 	
rJ   c                    t          |          }| 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  )rM   _guess_straight_columnmatchr   re   r   r  )r   r@   r   guess_is_literals       rH   r$  z ColumnsClauseImpl._text_coercionq  s    g,,#:@@III#
 .w77=DLL99"(8F$$h	 	

 
 	
rJ   r   rk   )r   r   r   r   r*  r.  r)  recompileIr  r   r$  r?  r@  s   @rH   r  r  [  s        INL'RZ
BD99 /3
>B
 
 
 
 
 
 

 
 
 
 
 
 
 
rJ   r  c                      e Zd ZdZdS )ReturnsRowsImplrl   Nr  rl   rJ   rH   r  r    r  rJ   r  c                  4     e Zd ZdZdddZ	 dd fdZ xZS )StatementImplrl   Nr  c                   ||urFt          |t                    s1	 |j         n(# t          $ r t	          j        d|z  d           Y nw xY w|S )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)rE   rM   _execute_on_connectionr   r   warn_deprecated)r   r   r   r   ri   s        rH   r   zStatementImpl._post_coercion  s     +++Jc5
 5
+
 777! 
 
 
$ "22 	 	 	 	 	
 s   # "AAr@   r   r   r   r   ri   rA   c                P    |j         r|S  t                      j        ||fd|i|S r  )r  r=  r   )r   r@   r   r   ri   r   s        rH   r   z!StatementImpl._implicit_coercions  sJ     & 	O.577. +268  rJ   rk   r   )r   r   r   r   r   r   r?  r@  s   @rH   r  r    sj        I 6:    8 "&	          rJ   r  c                      e Zd ZdZ	 ddd
ZdS )SelectStatementImplrl   Nr@   r   r   r   r   ri   rA   c                j    |j         r|                                S |                     |||           d S rk   )_is_text_clausecolumnsr   r   s        rH   r   z'SelectStatementImpl._implicit_coercions  s@     # 	A##%%%$$Wgx@@@@@rJ   rk   r   r  rl   rJ   rH   r  r    s>        I "&	
A 
A 
A 
A 
A 
A 
ArJ   r  c                      e Zd ZdZdS )
HasCTEImplrl   Nr  rl   rJ   rH   r  r    r  rJ   r  c                      e Zd ZdZdS )	IsCTEImplrl   Nr  rl   rJ   rH   r  r    r  rJ   r  c                  4    e Zd ZdZdZdddZ	 dddddZdS )JoinTargetImplrl   TNr  c               2    |                      ||           d S rk   r   r  s       rH   r   z JoinTargetImpl._literal_coercion  s      '22222rJ   F)legacyr@   r   r   r   r   r  rB   ri   rA   c                   t          |t          j                  r|S |r|j        rt	          j        dd           |S |                     |||           d S 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)rE   r   r~  r  r   r  r   )r   r@   r   r   r  ri   s         rH   r   z"JoinTargetImpl._implicit_coercions  s~     gu344 	A N 	A0 	A 6     O$$Wgx@@@@@rJ   rk   )r@   r   r   r   r   r   r  rB   ri   r   rA   r   )r   r   r   r   r   r   r   rl   rJ   rH   r  r    sq        I+/(48 3 3 3 3 3 "&	A A A A A A A A ArJ   r  c                  2    e Zd ZdZ	 ddddddZdddZdS )FromClauseImplrl   NFT)r   allow_selectr@   r   r   r   r   r   rB   r  ri   rA   c                   |j         r7|r|                                S |rt          j        dd           |j        S d S |j        r|S |                     |||           d S r  )r  subqueryr   r  _implicit_subqueryr  r   )r   r@   r   r   r   r  ri   s          rH   r   z"FromClauseImpl._implicit_coercions  s     # 	A  
3((*** 3$: "     223 3 % 	AO$$Wgx@@@@@rJ   )
deannotatec               2    |r|                                 S |S rk   )_deannotate)r   r@   r  ri   s       rH   r   zFromClauseImpl._post_coercion  s!     	&&(((NrJ   rk   )r@   r   r   r   r   r   r   rB   r  rB   ri   r   rA   r   )r   r   r   r   r   r   rl   rJ   rH   r  r    sn        I "&	A #(!A A A A A A6 5:       rJ   r  c                  $    e Zd ZdZ	 dddddZdS )StrictFromClauseImplrl   NF)r  r@   r   r   r   r   r  rB   ri   rA   c                   |j         r|rt          j        dd           |j        S |                     |||           d S r  )r  r   r  r  r   )r   r@   r   r   r  ri   s         rH   r   z(StrictFromClauseImpl._implicit_coercions  se     # 
	A 
	A #     ..$$Wgx@@@@@rJ   rk   )r@   r   r   r   r   r   r  rB   ri   r   rA   r   r  rl   rJ   rH   r  r    sO        I "&	A #A A A A A A A ArJ   r  c                       e Zd ZdZddddZdS )AnonymizedFromClauseImplrl   FN)flatr   c               6    |J |                     |          S )N)r  )_anonymous_fromclause)r   r@   r  r   ri   s        rH   r   z'AnonymizedFromClauseImpl._post_coercion2  s"    |||,,$,777rJ   r   rl   rJ   rH   r  r  /  s7        I.3$ 8 8 8 8 8 8 8rJ   r  c                      e Zd ZdZd ZdS )DMLTableImplrl   c                2    d|j         v r|j         d         S |S )N	dml_table)_annotationsr   s      rH   r   zDMLTableImpl._post_coercion;  s#    '...'44NrJ   Nr   rl   rJ   rH   r  r  8  s(        I    rJ   r  c                      e Zd ZdZ	 ddd
ZdS )DMLSelectImplrl   Nr@   r   r   r   r   ri   rA   c                    |j         rAt          |t          j                  r|j        j        r|j        S |                                S |                     |||           d S rk   )r  rE   r$   rb  r@   r  rd  r   r   s        rH   r   z!DMLSelectImpl._implicit_coercionsE  sl     # 		A8Z%566)$4)  ''((($$Wgx@@@@@rJ   rk   r   r  rl   rJ   rH   r  r  B  s>        I "&	A A A A A A ArJ   r  c                  $     e Zd ZdZd fd	Z xZS )CompoundElementImplrl   Nc                    t          |t          j                  r|j        rd}nd}nd } t	                      j        |f|||d|S )NzFUse the plain select() object without calling .subquery() or .alias().z9To SELECT from any FROM clause, use the .select() method.rR  )rE   r   FromClauseRole_is_subqueryr=  r   rU  s         rH   r   z'CompoundElementImpl._raise_for_expected[  sz    gu344 	# 7  P  F*uww*
$x
 
JL
 
 	
rJ   r   r>  r@  s   @rH   r  r  X  sB        I
 
 
 
 
 
 
 
 
 
rJ   r  RoleImpl)r@   r   rA   rB   )rT   rM   rU   rM   rV   rM   rA   rW   )r[   rM   r\   rM   r]   r^   rA   r_   )rg   rh   r@   r   ri   r   rA   rM   )
rg   rr   r@   r   rq   rs   ri   r   rA   rM   )rg   ru   r@   r   ri   r   rA   rv   )rg   rx   r@   r   ri   r   rA   ry   )rg   r|   r@   r   ri   r   rA   ry   )rg   r~   r@   r   ri   r   rA   r   )rg   r   r@   r   ri   r   rA   r   )rg   r   r@   r   ri   r   rA   r   )rg   r   r@   r   ri   r   rA   r   )rg   r   r@   r(   ri   r   rA   r+   )rg   r   r@   r7   ri   r   rA   r7   )rg   r   r@   r8   ri   r   rA   r8   )rg   r   r@   r)   ri   r   rA   r6   )
rg   r   r@   r8   r   rs   ri   r   rA   r9   )rg   r   r@   r   ri   r   rA   r4   )rg   r   r@   r5   ri   r   rA   r5   )rg   r   r@   r   ri   r   rA   r   )rg   r   r@   r   r   r   r   r   r   rB   r   rB   ri   r   rA   r   )rg   rr   r@   r   ri   r   rA   rM   )rg   r|   r   r   rA   r   )r@   r   r   r   r  r  r  r   r   r   rA   r   )
__future__r   collections.abcabcrL   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)   r*   dmlr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   SQLRoler;   r=   
StringRoler>   r?   rI   rN   rZ   rf   rn   r   r   r   r   r   r  r  re   r  r  r   r2  r9  rB  rG  rK  rW  r`  r{  r  r  r  r  r  ByOfRoler  r  r  r  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intrB   rM   floatpy_typerl   rJ   rH   <module>r     s    # " " " " " ) ) ) ) ) )  				                                                                                                                    # # # # # # " " " " " "       " " " " " "                         ! ! ! ! ! !	 0222222//////++++++******,,,,,,,,,,,,%%%%%%''''''''''''&&&&&&''''''%%%%%%++++++$$$$$$111111//////&&&&&&""""""&&&&&&$$$$$$//////ge5=)))WT#s(+,,,w~U-=>>>WT	5 	5 	5 	5# # #L    & & & &$ 
   
 

  	     
 
   
 
" " " 
" 
" " " 
" 
0 0 0 
0 
   
 
   
 

 
 
 

 
   
 
   
 
   
 
   
 

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