
    Ng؞                       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jB        :          ZC ed;e	d<ef         :          ZD ed=ejE        :          ZF ed>e:          ZGd? ZHd@ ZIddGZJddMZKeddS            ZLed<dTddX            ZLedd[            ZLedd^            ZLed da            ZLeddd            ZLeddh            ZLeddk            ZLeddn            ZLeddr            ZLeddu            ZLeddx            ZLedd|            ZLed<d}d	d            ZLed
d            ZLedd            ZLedd            ZLdddddddZLddZMddZN G d d          ZO G d d          ZP G d d          ZQ G d deO          ZR G d deO          ZSde#jT        ddfddZU G d deO          ZV G d deO          ZW G d deO          ZX G d deO          ZY G d deO          ZZ G d deO          Z[ G d deSeO          Z\ G d de\eO          Z] G d deO          Z^ G d deSeO          Z_ G d deWeSeO          Z` G d deWeO          Za G d deVeO          Zb G dĄ deReO          Zc G dƄ deWeO          Zd G dȄ deWeSeOeje                  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 ]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)_DMLTableElement)BindParameter)ClauseElement)ColumnClause)ColumnElement)DQLDMLClauseElement)NamedColumn)SQLCoreOperations)Column)_ColumnsClauseElement)_JoinTargetProtocol)
FromClause)HasCTE)
SelectBase)Subquery)_TraverseCallableType_SR)bound_F._StringOnlyR_Tc                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)elements    T/var/www/html/ai-engine/env/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py_is_literalrF   N   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.

    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44 Z> >   	 	D#D)) uu 4 ( '	
 	
 		
 	
 !5666	
 7D))) 4g{333rG   	paramnamerJ   meth_rst	param_rstreturn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)rQ   rR   rS   s      rE   _document_text_coercionrX      s2     "	 99hhh	 
 
 
rG   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]   )rA   listsetdictlenr   ArgumentErrorr   )rY   rZ   r[   s      rE   !_expression_collection_was_a_listrd      s    
  -
47T3$566 -3t99>>d1gt$$ 	#4 4 4 4 4 4   NDG,,,%%%rG   roleType[roles.TruncatedLabelRole]rD   r   kwc                    d S N re   rD   rg   s      rE   expectrl      	    
 #rG   as_keyType[roles.DMLColumnRole]ro   Literal[True]c                   d S ri   rj   )re   rD   ro   rg   s       rE   rl   rl      s	     #rG   Type[roles.LiteralValueRole]BindParameter[Any]c                    d S ri   rj   rk   s      rE   rl   rl      s	    
 rG   !Type[roles.DDLReferredColumnRole]Column[Any]c                    d S ri   rj   rk   s      rE   rl   rl      s	    
 #rG   #Type[roles.DDLConstraintColumnRole]Union[Column[Any], str]c                    d S ri   rj   rk   s      rE   rl   rl      s	    
 "crG   Type[roles.StatementOptionRole]r/   c                    d S ri   rj   rk   s      rE   rl   rl      	    
 #rG   &Type[roles.LabeledColumnExprRole[Any]]_ColumnExpressionArgument[_T]NamedColumn[_T]c                    d S ri   rj   rk   s      rE   rl   rl      s	    
 crG   gUnion[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole]]ColumnElement[_T]c                    d S ri   rj   rk   s      rE   rl   rl      s	     rG   Union[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole], Type[roles.OnClauseRole], Type[roles.ColumnArgumentRole]]ColumnElement[Any]c                    d S ri   rj   rk   s      rE   rl   rl      s	     rG   Type[roles.DMLTableRole]r(   r*   c                    d S ri   rj   rk   s      rE   rl   rl      s	    
 srG   Type[roles.HasCTERole]r6   c                    d S ri   rj   rk   s      rE   rl   rl      s	    
 SrG   Type[roles.SelectStatementRole]r7   c                    d S ri   rj   rk   s      rE   rl   rl     	    
 rG   Type[roles.FromClauseRole]r)   r5   c                    d S ri   rj   rk   s      rE   rl   rl     r   rG   )explicit_subqueryr   r8   c                   d S ri   rj   )re   rD   r   rg   s       rE   rl   rl     s	     srG   Type[roles.ColumnsClauseRole]_ColumnsClauseArgument[Any]r3   c                    d S ri   rj   rk   s      rE   rl   rl      s	    
  CrG   Type[roles.JoinTargetRole]r4   c                    d S ri   rj   rk   s      rE   rl   rl   (  r~   rG   	Type[_SR]c                    d S ri   rj   rk   s      rE   rl   rl   1  rm   rG   F)apply_propagate_attrsargnamepost_inspectdisable_inspectionr   Optional[ClauseElement]r   Optional[str]r   boolr   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   Fr@   Tis_clause_element)raiseerrr   _propagate_attrs)r   original_elementrj   )$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   r1   r,   r   _role_class	__class____mro___post_coercion_implicit_coercions)re   rD   r   r   r   r   rg   implr   resolvedr   insps               rE   rl   rl   9  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 )Nro   T)poprl   rk   s      rE   expect_as_keyr     s5     FF8T$333333rG   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   )rl   rA   rJ   appendr   traverse)	re   r   exprstrnamer   r   cols
col_appendadd_elements	            rE    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 5rG   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                      ri   )NotImplementedErrorselfrD   rg   s      rE   r   zRoleImpl._literal_coercion  s    !###rG   Nr   r   Fc                j    || _         |j        | _        t          |t          j                  | _        d S ri   )r   
_role_namer   rO   r   UsesInspectionr   )r   
role_classs     rE   __init__zRoleImpl.__init__  s/    %)	)*e6JKKrG   rD   r   r   r   rg   rT   c                4    |                      |||           d S ri   r   r   rD   r   r   rg   s        rE   r   zRoleImpl._implicit_coercions  s"     	  '8<<<<<rG   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   rc   )
r   rD   r   r   r   r   r   rg   gotmsgs
             rE   r   zRoleImpl._raise_for_expected  s     HG$;$;9A777KCCw--C 	<			CC -1IIIsss;C 	 3<C$///S8rG   ri   
rD   r   r   r   r   r   rg   r   rT   r   NNrD   r   r   r   r   r   r   r   r   r   r   r   rg   r   rT   r   )__name__
__module____qualname__	__slots__r   r   __annotations__r   r   r   r   r   rj   rG   rE   r   r     s         :I$ $ $ N!+0(L L L "&	= = = = = "&"&	9 !%"#'9 9 9 9 9 9 9 9rG   r   c                      e Zd ZdZd ZdS )_Deannotaterj   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   rj   rG   rE   r   r   	  s(        I* * * * *rG   r   c                      e Zd ZdZdZdS )_StringOnlyrj   TN)r   r   r   r   r   rj   rG   rE   r   r     s        I rG   r   c                       e Zd ZdZddZd ZdS )_ReturnsStringKeyrj   Nc                b    t          |t                    r|S |                     |||           d S ri   rA   rJ   r   r   s        rE   r   z%_ReturnsStringKey._implicit_coercions  s8    gs## 	AN$$Wgx@@@@@rG   c                    |S ri   rj   r   s      rE   r   z#_ReturnsStringKey._literal_coercion!      rG   ri   r   r   r   r   r   r   rj   rG   rE   r   r     s@        IA A A A    rG   r   c                       e Zd ZdZd ZddZdS )_ColumnCoercionsrj   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    rE   "_warn_for_scalar_subquery_coercionz3_ColumnCoercions._warn_for_scalar_subquery_coercion(  s%    		
 	
 	
 	
 	
rG   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_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<< 	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IrG   ri   )r   r   r   r   r	  r   rj   rG   rE   r  r  %  sB        I
 
 
J J J J J JrG   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)rD   r   r  r  r   s        rE   _no_text_coercionr  A  sf     '	0 (119@HHGG55b&+3UU]]
 
	
  rG   c                      e Zd ZdZdddZdS )_NoTextCoercionrj   Nr   c                   t          |t                    r1t          t          j        | j                  rt          ||           d S |                     ||           d S ri   )rA   rJ   rO   r!   
TextClauser   r  r   r   rD   r   rg   s       rE   r   z!_NoTextCoercion._literal_coercionV  sd    gs## 	7
!1)
 )
 	7 gw/////$$Wg66666rG   r   r   r   r   r   rj   rG   rE   r  r  S  s5        I48 7 7 7 7 7 7 7rG   r  c                  2    e Zd ZdZdZdZdZddZdddZdS )_CoerceLiteralsrj   FNc                "    t          ||          S ri   r  r   rD   r   s      rE   _text_coercionz_CoerceLiterals._text_coercione       '222rG   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)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## 	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2rG   ri   )	r   r   r   r   r)  r(  r-  r#  r   rj   rG   rE   r  r  _  s[        INL3 3 3 3 59 3 3 3 3 3 3 3rG   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)r2  uniquer3  )rF   r   r!   r+   )r   rD   r   r   r2  r3  rg   s          rE   r   z$LiteralValueImpl._implicit_coercions  sp     8$$ 	$D$"*G ?A   %+
 
 
 	
rG   c                    |S ri   rj   r   s      rE   r   z"LiteralValueImpl._literal_coercion  r  rG   ri   )r   r   r   r   r   r   rj   rG   rE   r1  r1  }  sT          	
 
 
 
 
 
.    rG   r1  c                  4     e Zd ZdZ	 	 dddddd fdZ xZS )_SelectIsNotFromrj   Nr   rD   r   r   r   r   r   r   r   r   r   rg   rT   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   )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JM 
 DDD##	
	
 	
 	
 	
 	
 	rG   r   r   r   r   r   r   r   __classcell__r   s   @rE   r8  r8    sd        I
 "&"&	# !%"#'# # # # # # # # # # # #rG   r8  c                  $    e Zd ZdZ	 ddd
Zd ZdS )HasCacheKeyImplrj   NrD   r   r   r   r   rg   rT   c                b    t          |t                    r|S |                     |||           d S ri   )rA   r   r   r   s        rE   r   z#HasCacheKeyImpl._implicit_coercions  s:     g{++ 	AN$$Wgx@@@@@rG   c                    |S ri   rj   r   s      rE   r   z!HasCacheKeyImpl._literal_coercion  r  rG   ri   r   r  rj   rG   rE   rA  rA    K        I "&	
A 
A 
A 
A 
A    rG   rA  c                  $    e Zd ZdZ	 ddd
Zd ZdS )ExecutableOptionImplrj   NrD   r   r   r   r   rg   rT   c                b    t          |t                    r|S |                     |||           d S ri   )rA   r   r   r   s        rE   r   z(ExecutableOptionImpl._implicit_coercions  s;     g/00 	AN$$Wgx@@@@@rG   c                    |S ri   rj   r   s      rE   r   z&ExecutableOptionImpl._literal_coercion  r  rG   ri   r   r  rj   rG   rE   rF  rF    rD  rG   rF  c                  4     e Zd ZdZdddddZd fd	Z xZS )ExpressionElementImplrj   NF)r   r2  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)r5  _is_crudr   )should_evaluate_noner!   r*  r+   r   rc   r   )r   rD   r   r2  rK  rg   r   s          rE   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   )rA   r$   Valuesr   AnonymizedFromClauseRoler<  r   r   rD   r   r   rg   r   r   s         rE   r   z)ExpressionElementImpl._raise_for_expected  s    gz011 	3 F !?@@ 	> F
 F*uww*
$x
 
JL
 
 	
rG   r   )r   r   r   r   r   r   r>  r?  s   @rE   rJ  rJ    sd        I  $4; ; ; ; ;(
 
 
 
 
 
 
 
 
 
rG   rJ  c                  ,    e Zd ZdZddddZdddZdS )BinaryElementImplrj   N)bindparam_typer   c                   	 |                     |||          S # t          j        $ r"}|                     ||           Y d }~d S d }~ww xY w)N)r2  rN  )_bind_paramr   rc   r   )r   rD   r   operatorrW  r   rg   r   s           rE   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)rW  c               r    |j         j        r*|j         j        s|                    ||n|j                   }|S ri   )rN   _isnull_with_binary_element_type)r   r   r   rW  rg   s        rE   r   z BinaryElementImpl._post_coercion'  sE    =  	): 	99"0"<$) H rG   )r   r   r   r   r   r   rj   rG   rE   rV  rV    sZ        I 7 7 7 7 7 @D       rG   rV  c                  \    e Zd ZdZ	 ddd
Zd Z ej        d          d             Zd Z	dS )InElementImplrj   NrD   r   r   r   r   rg   rT   c                H   |j         rt          |t          j                  r4|j        j        r(|                     |            | j        |j        fi |S |                     |            | j        |                                fi |S | 	                    |||           d S ri   )
r  rA   r$   AliasrD   r  _warn_for_implicit_coercionr   selectr   r   s        rE   r   z!InElementImpl._implicit_coercions2  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@@@@@rG   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   rP   s     rE   rb  z)InElementImpl._warn_for_implicit_coercionF  s2    	:~&(	
 	
 	
 	
 	
rG   zsqlalchemy.sql.elementsc                  t          j        |          ri t          |          }|D ]b}t          |          s9t	          |t           j        j        j                  s | j        |fi | D||<   J|t          j
                    |<   crt          j        fd|D              S                     |d          S  | j        |fi | d S )Nc                T    g | ]$}|v r|         n                     |          %S rj   )rY  ).0or   non_literal_expressionsrZ  s     rE   
<listcomp>z3InElementImpl._literal_coercion.<locals>.<listcomp>c  sT          !$;;; 4A66!%!1!1(A!>!>	  rG   T)	expanding)r   is_non_string_iterabler_   rF   rA   	preloadedsql_elementsr.   r   r!   r*  
ClauseListrY  )r   rD   r   rZ  rg   rh  ri  s     ``  @rE   r   zInElementImpl._literal_coercionM  s@   &w// !	4  $ 7mmG 
A 
A"1~~ 	A%4>6D  7 10??B???? 67/22Y19+A.& K*      ")  	 	 '''T'JJJ %D$W3333333rG   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  rA   r!   ro  rb   clauses
self_groupr+   _clonerk  	expand_opr$   rR  scalar_values)r   rD   r   rZ  rg   s        rE   r   zInElementImpl._post_coercionr  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 	((***NrG   ri   r   )
r   r   r   r   r   rb  r   preload_moduler   r   rj   rG   rE   r_  r_  /  s        I "&	A A A A A(
 
 
 T233"4 "4 43"4H    rG   r_  c                  (    e Zd ZdZdZd ZdddZdS )OnClauseImplrj   Tc                0    |                      |           d S ri   r   r   s      rE   r   zOnClauseImpl._literal_coercion  s      )))))rG   N)r   c               >    t          |t          j                  r|S |S ri   )rA   r   JoinTargetRole)r   r   r   rg   s       rE   r   zOnClauseImpl._post_coercion  s%     &(<== 	$##rG   )r   r   r   r   r)  r   r   rj   rG   rE   rz  rz    sL        IN* * * <@       rG   rz  c                      e Zd ZdZdZddZdS )WhereHavingImplrj   TNc                "    t          ||          S ri   r!  r"  s      rE   r#  zWhereHavingImpl._text_coercion  r$  rG   ri   r   r   r   r   r)  r#  rj   rG   rE   r  r    s2        IN3 3 3 3 3 3rG   r  c                      e Zd ZdZdZddZdS )StatementOptionImplrj   TNc                *    t          j        |          S ri   r!   r  r"  s      rE   r#  z"StatementOptionImpl._text_coercion  s    "7+++rG   ri   r  rj   rG   rE   r  r    s2        IN, , , , , ,rG   r  c                      e Zd ZdZdS )ColumnArgumentImplrj   Nr   r   r   r   rj   rG   rE   r  r            IIIrG   r  c                      e Zd ZdZdS )ColumnArgumentOrKeyImplrj   Nr  rj   rG   rE   r  r    r  rG   r  c                      e Zd ZdZddZdS )StrAsPlainColumnImplrj   Nc                *    t          j        |          S ri   )r!   r-   r"  s      rE   r#  z#StrAsPlainColumnImpl._text_coercion  s    $W---rG   ri   )r   r   r   r   r#  rj   rG   rE   r  r    s-        I. . . . . .rG   r  c                      e Zd ZdZdZddZdS )ByOfImplrj   TNc                *    t          j        |          S ri   )r!   _textual_label_referencer"  s      rE   r#  zByOfImpl._text_coercion  s    0999rG   ri   r  rj   rG   rE   r  r    s2        IN: : : : : :rG   r  c                      e Zd ZdZd ZdS )OrderByImplrj   c                f    t          || j                  r|j        t          j        |          S |S ri   )rA   r   _order_by_label_elementr!   _label_reference)r   r   rg   s      rE   r   zOrderByImpl._post_coercion  s6    x!122	0<,X666OrG   Nr   rj   rG   rE   r  r    s(        I    rG   r  c                      e Zd ZdZ	 ddd
ZdS )GroupByImplrj   NrD   r   r   r   r   rg   rT   c                J    t          |          rt          j        |j         S |S ri   )r   r!   ro  cr   s        rE   r   zGroupByImpl._implicit_coercions  s)     (## 	&
33OrG   ri   r   r   r   r   r   r   rj   rG   rE   r  r    s7        I "&	
 
 
 
 
 
 
rG   r  c                      e Zd ZdZdddZdS )DMLColumnImplrj   Frn   c                   |r|j         S |S ri   )key)r   rD   ro   rg   s       rE   r   zDMLColumnImpl._post_coercion  s     	;NrG   Nr   rj   rG   rE   r  r    s5        I05       rG   r  c                      e Zd ZdZdddZdS )ConstExprImplrj   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       rE   r   zConstExprImpl._literal_coercion  s_    ?=??"?$$$__>###$$Wg66666rG   r  rj   rG   rE   r  r    s5        I48 7 7 7 7 7 7 7rG   r  c                  $    e Zd ZdZ	 ddd
Zd ZdS )TruncatedLabelImplrj   NrD   r   r   r   r   rg   rT   c                b    t          |t                    r|S |                     |||           d S ri   r  r   s        rE   r   z&TruncatedLabelImpl._implicit_coercions  s:     gs## 	AO$$Wgx@@@@@rG   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.
        )rA   r!   _truncated_labelr   s      rE   r   z$TruncatedLabelImpl._literal_coercion  s/     gx899 	6N,W555rG   ri   r   r  rj   rG   rE   r  r    sK        I "&	
A 
A 
A 
A 
A6 6 6 6 6rG   r  c                      e Zd ZdZdZddZdS )DDLExpressionImplrj   TNc                *    t          j        |          S ri   r  r"  s      rE   r#  z DDLExpressionImpl._text_coercion  s    
 "7+++rG   ri   r  rj   rG   rE   r  r    s2        IN, , , , , ,rG   r  c                      e Zd ZdZdS )DDLConstraintColumnImplrj   Nr  rj   rG   rE   r  r  #  r  rG   r  c                      e Zd ZdZdS )DDLReferredColumnImplrj   Nr  rj   rG   rE   r  r  '  r  rG   r  c                  $    e Zd ZdZ	 ddd
Zd ZdS )LimitOffsetImplrj   NrD   r   r   r   r   rg   rT   c                <    |d S |                      |||           d S ri   r   r   s        rE   r   z#LimitOffsetImpl._implicit_coercions.  s-     4$$Wgx@@@@@rG   c               b    |d S t          j        |          }t          j        |||d          S )NT)r2  r5  )r   asintr$   _OffsetLimitParam)r   rD   r   r2  rg   values         rE   r   z!LimitOffsetImpl._literal_coercion:  s@     ?4Jw''E/e5   rG   ri   r   r  rj   rG   rE   r  r  +  sK        I "&	
A 
A 
A 
A 
A	 	 	 	 	rG   r  c                  (     e Zd ZdZ	 dd fd
Z xZS )LabeledColumnExprImplrj   NrD   r   r   r   r   rg   rT   c                ,   t          |t          j                  r|                    d           S  t	                      j        ||fd|i|}t          |t          j                  r|                    d           S |                     |||           d S Nr   )rA   r   ExpressionElementRolelabelr<  r   r   )r   rD   r   r   rg   newr   s         rE   r   z)LabeledColumnExprImpl._implicit_coercionsI  s     h ;<< 		E>>$'''-%''- +268 C #u:;; Eyy&(('8DDDDDrG   ri   r   )r   r   r   r   r   r>  r?  s   @rE   r  r  F  sW        I "&	E E E E E E E E E E ErG   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 )
ColumnsClauseImplrj   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 ri   )r   )rg  es     rE   	<genexpr>z8ColumnsClauseImpl._raise_for_expected.<locals>.<genexpr>k  s(      66T!WW666666rG   z)?rQ  )rA   r_   joinr<  r   )r   rD   r   r   r   rg   r   s         rE   r   z%ColumnsClauseImpl._raise_for_expectede  s      	*Wd33 	;9966g66666; ; ; 
 +uww*
$x
 
JL
 
 	
rG   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  )rJ   _guess_straight_columnmatchr   rc   r   r  )r   rD   r   guess_is_literals       rE   r#  z ColumnsClauseImpl._text_coercionr  s    g,,#:@@III#
 .w77=DLL99"(8F$$h	 	

 
 	
rG   r   ri   )r   r   r   r   r)  r-  r(  recompileIr  r   r#  r>  r?  s   @rE   r  r  \  s        INL'RZ
BD99 /3
>B
 
 
 
 
 
 

 
 
 
 
 
 
 
rG   r  c                      e Zd ZdZdS )ReturnsRowsImplrj   Nr  rj   rG   rE   r  r    r  rG   r  c                  4     e Zd ZdZdddZ	 dd fdZ xZS )StatementImplrj   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)rA   rJ   _execute_on_connectionr   r   warn_deprecated)r   r   r   r   rg   s        rE   r   zStatementImpl._post_coercion  s     +++Jc5
 5
+
 777! 
 
 
$ "22 	 	 	 	 	
 s   # "AArD   r   r   r   r   rg   rT   c                P    |j         r|S  t                      j        ||fd|i|S r  )r  r<  r   )r   rD   r   r   rg   r   s        rE   r   z!StatementImpl._implicit_coercions  sJ     & 	O.577. +268  rG   ri   r   )r   r   r   r   r   r   r>  r?  s   @rE   r  r    sj        I 6:    8 "&	          rG   r  c                      e Zd ZdZ	 ddd
ZdS )SelectStatementImplrj   NrD   r   r   r   r   rg   rT   c                j    |j         r|                                S |                     |||           d S ri   )_is_text_clausecolumnsr   r   s        rE   r   z'SelectStatementImpl._implicit_coercions  s@     # 	A##%%%$$Wgx@@@@@rG   ri   r   r  rj   rG   rE   r  r    s>        I "&	
A 
A 
A 
A 
A 
A 
ArG   r  c                      e Zd ZdZdS )
HasCTEImplrj   Nr  rj   rG   rE   r  r    r  rG   r  c                      e Zd ZdZdS )	IsCTEImplrj   Nr  rj   rG   rE   r  r    r  rG   r  c                  4    e Zd ZdZdZdddZ	 dddddZdS )JoinTargetImplrj   TNr  c               2    |                      ||           d S ri   r   r  s       rE   r   z JoinTargetImpl._literal_coercion  s      '22222rG   F)legacyrD   r   r   r   r   r  r   rg   rT   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)rA   r   r}  r  r   r  r   )r   rD   r   r   r  rg   s         rE   r   z"JoinTargetImpl._implicit_coercions  s~     gu344 	A N 	A0 	A 6     O$$Wgx@@@@@rG   ri   )rD   r   r   r   r   r   r  r   rg   r   rT   r   )r   r   r   r   r   r   r   rj   rG   rE   r  r    sq        I+/(48 3 3 3 3 3 "&	A A A A A A A A ArG   r  c                  2    e Zd ZdZ	 ddddddZdddZdS )FromClauseImplrj   NFT)r   allow_selectrD   r   r   r   r   r   r   r  rg   rT   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   rD   r   r   r   r  rg   s          rE   r   z"FromClauseImpl._implicit_coercions  s     # 	A  
3((*** 3$: "     223 3 % 	AO$$Wgx@@@@@rG   )
deannotatec               2    |r|                                 S |S ri   )_deannotate)r   rD   r  rg   s       rE   r   zFromClauseImpl._post_coercion  s!     	&&(((NrG   ri   )rD   r   r   r   r   r   r   r   r  r   rg   r   rT   r   )r   r   r   r   r   r   rj   rG   rE   r  r    sn        I "&	A #(!A A A A A A6 5:       rG   r  c                  $    e Zd ZdZ	 dddddZdS )StrictFromClauseImplrj   NF)r  rD   r   r   r   r   r  r   rg   rT   c                   |j         r|rt          j        dd           |j        S |                     |||           d S r  )r  r   r  r  r   )r   rD   r   r   r  rg   s         rE   r   z(StrictFromClauseImpl._implicit_coercions  se     # 
	A 
	A #     ..$$Wgx@@@@@rG   ri   )rD   r   r   r   r   r   r  r   rg   r   rT   r   r  rj   rG   rE   r  r    sO        I "&	A #A A A A A A A ArG   r  c                       e Zd ZdZddddZdS )AnonymizedFromClauseImplrj   FN)flatr   c               6    |J |                     |          S )N)r  )_anonymous_fromclause)r   rD   r  r   rg   s        rE   r   z'AnonymizedFromClauseImpl._post_coercion3  s"    |||,,$,777rG   r   rj   rG   rE   r  r  0  s7        I.3$ 8 8 8 8 8 8 8rG   r  c                      e Zd ZdZd ZdS )DMLTableImplrj   c                2    d|j         v r|j         d         S |S )N	dml_table)_annotationsr   s      rE   r   zDMLTableImpl._post_coercion<  s#    '...'44NrG   Nr   rj   rG   rE   r  r  9  s(        I    rG   r  c                      e Zd ZdZ	 ddd
ZdS )DMLSelectImplrj   NrD   r   r   r   r   rg   rT   c                    |j         rAt          |t          j                  r|j        j        r|j        S |                                S |                     |||           d S ri   )r  rA   r$   ra  rD   r  rc  r   r   s        rE   r   z!DMLSelectImpl._implicit_coercionsF  sl     # 		A8Z%566)$4)  ''((($$Wgx@@@@@rG   ri   r   r  rj   rG   rE   r  r  C  s>        I "&	A A A A A A ArG   r  c                  $     e Zd ZdZd fd	Z xZS )CompoundElementImplrj   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.rQ  )rA   r   FromClauseRole_is_subqueryr<  r   rT  s         rE   r   z'CompoundElementImpl._raise_for_expected\  sz    gu344 	# 7  P  F*uww*
$x
 
JL
 
 	
rG   r   r=  r?  s   @rE   r   r   Y  sB        I
 
 
 
 
 
 
 
 
 
rG   r   RoleImpl)rQ   rJ   rR   rJ   rS   rJ   rT   rU   )rY   rJ   rZ   rJ   r[   r\   rT   r]   )re   rf   rD   r   rg   r   rT   rJ   )
re   rp   rD   r   ro   rq   rg   r   rT   rJ   )re   rs   rD   r   rg   r   rT   rt   )re   rv   rD   r   rg   r   rT   rw   )re   ry   rD   r   rg   r   rT   rz   )re   r|   rD   r   rg   r   rT   r/   )re   r   rD   r   rg   r   rT   r   )re   r   rD   r   rg   r   rT   r   )re   r   rD   r   rg   r   rT   r   )re   r   rD   r(   rg   r   rT   r*   )re   r   rD   r6   rg   r   rT   r6   )re   r   rD   r7   rg   r   rT   r7   )re   r   rD   r)   rg   r   rT   r5   )
re   r   rD   r7   r   rq   rg   r   rT   r8   )re   r   rD   r   rg   r   rT   r3   )re   r   rD   r4   rg   r   rT   r4   )re   r   rD   r   rg   r   rT   r   )re   r   rD   r   r   r   r   r   r   r   r   r   rg   r   rT   r   )re   rp   rD   r   rg   r   rT   rJ   )re   ry   r   r   rT   r   )rD   r   r   r   r  r  r  r   r   r   rT   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   rX   rd   rl   r   r   r   r   r   r   r  rc   r  r  r  r1  r8  rA  rF  rJ  rV  r_  rz  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intr   rJ   floatpy_typerj   rG   rE   <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# # #L    & & & &$ 
   
 

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

 (+	     
 
      
  
   
 
   
 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   4U U U U UH U U Up    #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rG   