
    [hڞ                       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:          ZGddCZHdD ZIddJZJddPZKeddT            ZLed<dUddY            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)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    g/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/sql/coercions.py_is_literalrH   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.

    FTrC   )rD   collections_abcr   str_deep_is_literalr   r#   rE   r   r   r   langhelperssymbolrF   type
issubclass)r?   elems     rG   rM   rM   Z   s     '?344 Z> >   	 	D#D)) uu 4 ( '	
 	
 		
 	
 !5666	
 7D))) 4g{333rI   	paramnamerL   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)rS   rT   rU   s      rG   _document_text_coercionrY      s2     "	 99hhh	 
 
 
rI   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^   )rD   listsetdictlenr   ArgumentErrorr   )rZ   r[   r\   s      rG   !_expression_collection_was_a_listre      s    
  -
47T3$566 -3t99>>d1gt$$ 	#4 4 4 4 4 4   NDG,,,%%%rI   roleType[roles.TruncatedLabelRole]kwc                    d S N rf   r?   rh   s      rG   expectrm      	    
 #rI   as_keyType[roles.DMLColumnRole]rp   Literal[True]c                   d S rj   rk   )rf   r?   rp   rh   s       rG   rm   rm      s	     #rI   Type[roles.LiteralValueRole]BindParameter[Any]c                    d S rj   rk   rl   s      rG   rm   rm      s	    
 rI   !Type[roles.DDLReferredColumnRole]Union[Column[Any], str]c                    d S rj   rk   rl   s      rG   rm   rm      	    
 "crI   #Type[roles.DDLConstraintColumnRole]c                    d S rj   rk   rl   s      rG   rm   rm      rz   rI   Type[roles.StatementOptionRole]%Union[ColumnElement[Any], TextClause]c                    d S rj   rk   rl   s      rG   rm   rm      s	    
 -0CrI   &Type[roles.LabeledColumnExprRole[Any]]_ColumnExpressionArgument[_T]NamedColumn[_T]c                    d S rj   rk   rl   s      rG   rm   rm      s	    
 crI   gUnion[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole]]ColumnElement[_T]c                    d S rj   rk   rl   s      rG   rm   rm      s	     rI   Union[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole], Type[roles.OnClauseRole], Type[roles.ColumnArgumentRole]]ColumnElement[Any]c                    d S rj   rk   rl   s      rG   rm   rm      s	     rI   Type[roles.DMLTableRole]r(   r*   c                    d S rj   rk   rl   s      rG   rm   rm      s	    
 srI   Type[roles.HasCTERole]r6   c                    d S rj   rk   rl   s      rG   rm   rm      s	    
 SrI   Type[roles.SelectStatementRole]r7   c                    d S rj   rk   rl   s      rG   rm   rm     	    
 rI   Type[roles.FromClauseRole]r)   r5   c                    d S rj   rk   rl   s      rG   rm   rm     r   rI   )explicit_subqueryr   r8   c                   d S rj   rk   )rf   r?   r   rh   s       rG   rm   rm     s	     srI   Type[roles.ColumnsClauseRole]_ColumnsClauseArgument[Any]r3   c                    d S rj   rk   rl   s      rG   rm   rm      s	    
  CrI   Type[roles.JoinTargetRole]r4   c                    d S rj   rk   rl   s      rG   rm   rm   (  s	    
 #rI   	Type[_SR]c                    d S rj   rk   rl   s      rG   rm   rm   1  rn   rI   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   FrC   Tis_clause_element)raiseerrr   _propagate_attrs)r   original_elementrk   )$allows_lambdacallablerF   r"   LambdaElementLambdaOptions_impl_lookuprD   r!   CompilerElementr#   
SchemaItemFetchedValue	PyWrapper_resolve_literal_only_literal_coercion$_skip_clauseelement_for_target_matchgetattrrC   _use_inspectionr   inspect_post_inspectAttributeError_raise_for_expected_sa__py_wrapper_literaltypingr   r0   r,   r   _role_class	__class____mro___post_coercion_implicit_coercions)rf   r?   r   r   r   r   rh   implr   resolvedr   insps               rG   rm   rm   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 )Nrp   T)poprm   rl   s      rG   expect_as_keyr     s5     FF8T$333333rI   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   )rm   rD   rL   appendr   traverse)	rf   r   exprstrnamer   r   cols
col_appendadd_elements	            rG    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 5rI   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                      rj   )NotImplementedErrorselfr?   rh   s      rG   r   zRoleImpl._literal_coercion  s    !###rI   Nr   r   Fc                j    || _         |j        | _        t          |t          j                  | _        d S rj   )r   
_role_namer   rQ   r   UsesInspectionr   )r   
role_classs     rG   __init__zRoleImpl.__init__  s/    %)	)*e6JKKrI   r?   r   r   r   rh   r@   c                4    |                      |||           d S rj   r   r   r?   r   r   rh   s        rG   r   zRoleImpl._implicit_coercions  s"     	  '8<<<<<rI   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   rd   )
r   r?   r   r   r   r   r   rh   gotmsgs
             rG   r   zRoleImpl._raise_for_expected  s     HG$;$;9A777KCCw--C 	<			CC -1IIIsss;C 	 3<C$///S8rI   rj   
r?   r   r   r   r   r   rh   r   r@   r   NNr?   r   r   r   r   r   r   r   r   r   r   r   rh   r   r@   r   )__name__
__module____qualname__	__slots__r   r   __annotations__r   r   r   r   r   rk   rI   rG   r   r     s         :I$ $ $ N!+0(L L L "&	= = = = = "&"&	9 !%"#'9 9 9 9 9 9 9 9rI   r   c                      e Zd ZdZd ZdS )_Deannotaterk   c                $    ddl m}  ||          S )Nr   )_deep_deannotate)r   r   )r   r   rh   r   s       rG   r   z_Deannotate._post_coercion  s%    ******)))rI   Nr   r   r   r   r   rk   rI   rG   r   r   	  s(        I* * * * *rI   r   c                      e Zd ZdZdZdS )_StringOnlyrk   TN)r   r   r   r   r   rk   rI   rG   r   r     s        I rI   r   c                       e Zd ZdZddZd ZdS )_ReturnsStringKeyrk   Nc                b    t          |t                    r|S |                     |||           d S rj   rD   rL   r   r   s        rG   r   z%_ReturnsStringKey._implicit_coercions  s8    gs## 	AN$$Wgx@@@@@rI   c                    |S rj   rk   r   s      rG   r   z#_ReturnsStringKey._literal_coercion!      rI   rj   r   r   r   r   r   r   rk   rI   rG   r   r     s@        IA A A A    rI   r   c                       e Zd ZdZd ZddZdS )_ColumnCoercionsrk   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    rG   "_warn_for_scalar_subquery_coercionz3_ColumnCoercions._warn_for_scalar_subquery_coercion(  s%    		
 	
 	
 	
 	
rI   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_clauserD   r$   r8   r?   r   r   _is_lambda_element)r   r?   r   r   rh   r   s         rG   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IrI   rj   )r   r   r   r   r	  r   rk   rI   rG   r  r  %  sB        I
 
 
J J J J J JrI   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        rG   _no_text_coercionr  A  sf     '	0 (119@HHGG55b&+3UU]]
 
	
  rI   c                      e Zd ZdZdddZdS )_NoTextCoercionrk   Nr   c                   t          |t                    r1t          t          j        | j                  rt          ||           d S |                     ||           d S rj   )rD   rL   rQ   r!   r1   r   r  r   r   r?   r   rh   s       rG   r   z!_NoTextCoercion._literal_coercionV  sd    gs## 	7
!1)
 )
 	7 gw/////$$Wg66666rI   r   r   r   r   r   rk   rI   rG   r  r  S  s5        I48 7 7 7 7 7 7 7rI   r  c                  2    e Zd ZdZdZdZdZddZdddZdS )_CoerceLiteralsrk   FNc                "    t          ||          S rj   r  r   r?   r   s      rG   _text_coercionz_CoerceLiterals._text_coercione       '222rI   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)rD   rL   _coerce_starr!   r-   r"  _coerce_constsNullFalse_True__coerce_numericsnumbersNumberr   r  s       rG   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2rI   rj   )	r   r   r   r   r(  r'  r,  r"  r   rk   rI   rG   r  r  _  s[        INL3 3 3 3 59 3 3 3 3 3 3 3rI   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)r1  uniquer2  )rH   r   r!   r+   )r   r?   r   r   r1  r2  rh   s          rG   r   z$LiteralValueImpl._implicit_coercions  sp     8$$ 	$D$"*G ?A   %+
 
 
 	
rI   c                    |S rj   rk   r   s      rG   r   z"LiteralValueImpl._literal_coercion  r  rI   rj   )r   r   r   r   r   r   rk   rI   rG   r0  r0  }  sT          	
 
 
 
 
 
.    rI   r0  c                  4     e Zd ZdZ	 	 dddddd fdZ xZS )_SelectIsNotFromrk   Nr   r?   r   r   r   r   r   r   r   r   r   rh   r@   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   )rD   r   SelectStatementRoler   superr   )	r   r?   r   r   r   r   r   rh   r   s	           rG   r   z$_SelectIsNotFrom._raise_for_expected  s     	7E$=>>	 (E$=>>	 *2)=8%%7JJM 
 DDD##	
	
 	
 	
 	
 	
 	rI   r   r   r   r   r   r   r   __classcell__r   s   @rG   r7  r7    sd        I
 "&"&	# !%"#'# # # # # # # # # # # #rI   r7  c                  $    e Zd ZdZ	 ddd
Zd ZdS )HasCacheKeyImplrk   Nr?   r   r   r   r   rh   r@   c                b    t          |t                    r|S |                     |||           d S rj   )rD   r   r   r   s        rG   r   z#HasCacheKeyImpl._implicit_coercions  s:     g{++ 	AN$$Wgx@@@@@rI   c                    |S rj   rk   r   s      rG   r   z!HasCacheKeyImpl._literal_coercion  r  rI   rj   r   r  rk   rI   rG   r@  r@    K        I "&	
A 
A 
A 
A 
A    rI   r@  c                  $    e Zd ZdZ	 ddd
Zd ZdS )ExecutableOptionImplrk   Nr?   r   r   r   r   rh   r@   c                b    t          |t                    r|S |                     |||           d S rj   )rD   r   r   r   s        rG   r   z(ExecutableOptionImpl._implicit_coercions  s;     g/00 	AN$$Wgx@@@@@rI   c                    |S rj   rk   r   s      rG   r   z&ExecutableOptionImpl._literal_coercion  r  rI   rj   r   r  rk   rI   rG   rE  rE    rC  rI   rE  c                  4     e Zd ZdZdddddZd fd	Z xZS )ExpressionElementImplrk   NF)r   r1  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)r4  _is_crudr   )should_evaluate_noner!   r)  r+   r   rd   r   )r   r?   r   r1  rJ  rh   r   s          rG   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   )rD   r$   Valuesr   AnonymizedFromClauseRoler;  r   r   r?   r   r   rh   r   r   s         rG   r   z)ExpressionElementImpl._raise_for_expected  s    gz011 	3 F !?@@ 	> F
 F*uww*
$x
 
JL
 
 	
rI   r   )r   r   r   r   r   r   r=  r>  s   @rG   rI  rI    sd        I  $4; ; ; ; ;(
 
 
 
 
 
 
 
 
 
rI   rI  c                  ,    e Zd ZdZddddZdddZdS )BinaryElementImplrk   N)bindparam_typer   c                   	 |                     |||          S # t          j        $ r"}|                     ||           Y d }~d S d }~ww xY w)N)r1  rM  )_bind_paramr   rd   r   )r   r?   r   operatorrV  r   rh   r   s           rG   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)rV  c               r    |j         j        r*|j         j        s|                    ||n|j                   }|S rj   )rP   _isnull_with_binary_element_type)r   r   r   rV  rh   s        rG   r   z BinaryElementImpl._post_coercion'  sE    =  	): 	99"0"<$) H rI   )r   r   r   r   r   r   rk   rI   rG   rU  rU    sZ        I 7 7 7 7 7 @D       rI   rU  c                  \    e Zd ZdZ	 ddd
Zd Z ej        d          d             Zd Z	dS )InElementImplrk   Nr?   r   r   r   r   rh   r@   c                H   |j         rt          |t          j                  r4|j        j        r(|                     |            | j        |j        fi |S |                     |            | j        |                                fi |S | 	                    |||           d S rj   )
r  rD   r$   Aliasr?   r  _warn_for_implicit_coercionr   selectr   r   s        rG   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@@@@@rI   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   rR   s     rG   ra  z)InElementImpl._warn_for_implicit_coercionF  s2    	:~&(	
 	
 	
 	
 	
rI   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 )NrC   c                T    g | ]$}|v r|         n                     |          %S rk   )rX  ).0or   non_literal_expressionsrY  s     rG   
<listcomp>z3InElementImpl._literal_coercion.<locals>.<listcomp>a  sT          !$;;; 4A66!%!1!1(A!>!>	  rI   T)	expanding)r   is_non_string_iterabler`   rH   rD   	preloadedsql_elementsr.   rF   r   r!   
ClauseListrX  )r   r?   r   rY  rh   rg  rh  s     ``  @rG   r   zInElementImpl._literal_coercionM  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3rI   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  rD   r!   rn  rc   clauses
self_groupr+   _clonerj  	expand_opr$   rQ  scalar_values)r   r?   r   rY  rh   s        rG   r   zInElementImpl._post_coercionp  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 	((***NrI   rj   r   )
r   r   r   r   r   ra  r   preload_moduler   r   rk   rI   rG   r^  r^  /  s        I "&	A A A A A(
 
 
 T233 4  4 43 4D    rI   r^  c                  (    e Zd ZdZdZd ZdddZdS )OnClauseImplrk   Tc                0    |                      |           d S rj   r   r   s      rG   r   zOnClauseImpl._literal_coercion  s      )))))rI   N)r   c               >    t          |t          j                  r|S |S rj   )rD   r   JoinTargetRole)r   r   r   rh   s       rG   r   zOnClauseImpl._post_coercion  s%     &(<== 	$##rI   )r   r   r   r   r(  r   r   rk   rI   rG   ry  ry    sL        IN* * * <@       rI   ry  c                      e Zd ZdZdZddZdS )WhereHavingImplrk   TNc                "    t          ||          S rj   r   r!  s      rG   r"  zWhereHavingImpl._text_coercion  r#  rI   rj   r   r   r   r   r(  r"  rk   rI   rG   r~  r~    s2        IN3 3 3 3 3 3rI   r~  c                      e Zd ZdZdZddZdS )StatementOptionImplrk   TNc                *    t          j        |          S rj   r!   r1   r!  s      rG   r"  z"StatementOptionImpl._text_coercion  s    "7+++rI   rj   r  rk   rI   rG   r  r    s2        IN, , , , , ,rI   r  c                      e Zd ZdZdS )ColumnArgumentImplrk   Nr   r   r   r   rk   rI   rG   r  r            IIIrI   r  c                      e Zd ZdZdS )ColumnArgumentOrKeyImplrk   Nr  rk   rI   rG   r  r    r  rI   r  c                      e Zd ZdZddZdS )StrAsPlainColumnImplrk   Nc                *    t          j        |          S rj   )r!   r-   r!  s      rG   r"  z#StrAsPlainColumnImpl._text_coercion  s    $W---rI   rj   )r   r   r   r   r"  rk   rI   rG   r  r    s-        I. . . . . .rI   r  c                      e Zd ZdZdZddZdS )ByOfImplrk   TNc                *    t          j        |          S rj   )r!   _textual_label_referencer!  s      rG   r"  zByOfImpl._text_coercion  s    0999rI   rj   r  rk   rI   rG   r  r    s2        IN: : : : : :rI   r  c                      e Zd ZdZd ZdS )OrderByImplrk   c                f    t          || j                  r|j        t          j        |          S |S rj   )rD   r   _order_by_label_elementr!   _label_reference)r   r   rh   s      rG   r   zOrderByImpl._post_coercion  s6    x!122	0<,X666OrI   Nr   rk   rI   rG   r  r    s(        I    rI   r  c                      e Zd ZdZ	 ddd
ZdS )GroupByImplrk   Nr?   r   r   r   r   rh   r@   c                J    t          |          rt          j        |j         S |S rj   )r   r!   rn  cr   s        rG   r   zGroupByImpl._implicit_coercions  s)     (## 	&
33OrI   rj   r   r   r   r   r   r   rk   rI   rG   r  r    s7        I "&	
 
 
 
 
 
 
rI   r  c                      e Zd ZdZdddZdS )DMLColumnImplrk   Fro   c                   |r|j         S |S rj   )key)r   r?   rp   rh   s       rG   r   zDMLColumnImpl._post_coercion  s     	;NrI   Nr   rk   rI   rG   r  r    s5        I05       rI   r  c                      e Zd ZdZdddZdS )ConstExprImplrk   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       rG   r   zConstExprImpl._literal_coercion  s_    ?=??"?$$$__>###$$Wg66666rI   r  rk   rI   rG   r  r    s5        I48 7 7 7 7 7 7 7rI   r  c                  $    e Zd ZdZ	 ddd
Zd ZdS )TruncatedLabelImplrk   Nr?   r   r   r   r   rh   r@   c                b    t          |t                    r|S |                     |||           d S rj   r  r   s        rG   r   z&TruncatedLabelImpl._implicit_coercions  s:     gs## 	AO$$Wgx@@@@@rI   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.
        )rD   r!   _truncated_labelr   s      rG   r   z$TruncatedLabelImpl._literal_coercion  s/     gx899 	6N,W555rI   rj   r   r  rk   rI   rG   r  r    sK        I "&	
A 
A 
A 
A 
A6 6 6 6 6rI   r  c                      e Zd ZdZdZddZdS )DDLExpressionImplrk   TNc                *    t          j        |          S rj   r  r!  s      rG   r"  z DDLExpressionImpl._text_coercion  s    
 "7+++rI   rj   r  rk   rI   rG   r  r    s2        IN, , , , , ,rI   r  c                      e Zd ZdZdS )DDLConstraintColumnImplrk   Nr  rk   rI   rG   r  r  !  r  rI   r  c                      e Zd ZdZdS )DDLReferredColumnImplrk   Nr  rk   rI   rG   r  r  %  r  rI   r  c                  $    e Zd ZdZ	 ddd
Zd ZdS )LimitOffsetImplrk   Nr?   r   r   r   r   rh   r@   c                <    |d S |                      |||           d S rj   r   r   s        rG   r   z#LimitOffsetImpl._implicit_coercions,  s-     4$$Wgx@@@@@rI   c               b    |d S t          j        |          }t          j        |||d          S )NT)r1  r4  )r   asintr$   _OffsetLimitParam)r   r?   r   r1  rh   values         rG   r   z!LimitOffsetImpl._literal_coercion8  s@     ?4Jw''E/e5   rI   rj   r   r  rk   rI   rG   r  r  )  sK        I "&	
A 
A 
A 
A 
A	 	 	 	 	rI   r  c                  (     e Zd ZdZ	 dd fd
Z xZS )LabeledColumnExprImplrk   Nr?   r   r   r   r   rh   r@   c                ,   t          |t          j                  r|                    d           S  t	                      j        ||fd|i|}t          |t          j                  r|                    d           S |                     |||           d S Nr   )rD   r   ExpressionElementRolelabelr;  r   r   )r   r?   r   r   rh   newr   s         rG   r   z)LabeledColumnExprImpl._implicit_coercionsG  s     h ;<< 		E>>$'''-%''- +268 C #u:;; Eyy&(('8DDDDDrI   rj   r   )r   r   r   r   r   r=  r>  s   @rG   r  r  D  sW        I "&	E E E E E E E E E E ErI   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 )
ColumnsClauseImplrk   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 rj   )r   )rf  es     rG   	<genexpr>z8ColumnsClauseImpl._raise_for_expected.<locals>.<genexpr>i  s(      66T!WW666666rI   z)?rP  )rD   r`   joinr;  r   )r   r?   r   r   r   rh   r   s         rG   r   z%ColumnsClauseImpl._raise_for_expectedc  s      	*Wd33 	;9966g66666; ; ; 
 +uww*
$x
 
JL
 
 	
rI   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  )rL   _guess_straight_columnmatchr   rd   r   r  )r   r?   r   guess_is_literals       rG   r"  z ColumnsClauseImpl._text_coercionp  s    g,,#:@@III#
 .w77=DLL99"(8F$$h	 	

 
 	
rI   r   rj   )r   r   r   r   r(  r,  r'  recompileIr  r   r"  r=  r>  s   @rG   r  r  Z  s        INL'RZ
BD99 /3
>B
 
 
 
 
 
 

 
 
 
 
 
 
 
rI   r  c                      e Zd ZdZdS )ReturnsRowsImplrk   Nr  rk   rI   rG   r  r    r  rI   r  c                  4     e Zd ZdZdddZ	 dd fdZ xZS )StatementImplrk   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)rD   rL   _execute_on_connectionr   r   warn_deprecated)r   r   r   r   rh   s        rG   r   zStatementImpl._post_coercion  s     +++Jc5
 5
+
 777! 
 
 
$ "22 	 	 	 	 	
 s   # "AAr?   r   r   r   r   rh   r@   c                P    |j         r|S  t                      j        ||fd|i|S r  )r  r;  r   )r   r?   r   r   rh   r   s        rG   r   z!StatementImpl._implicit_coercions  sJ     & 	O.577. +268  rI   rj   r   )r   r   r   r   r   r   r=  r>  s   @rG   r  r    sj        I 6:    8 "&	          rI   r  c                      e Zd ZdZ	 ddd
ZdS )SelectStatementImplrk   Nr?   r   r   r   r   rh   r@   c                j    |j         r|                                S |                     |||           d S rj   )_is_text_clausecolumnsr   r   s        rG   r   z'SelectStatementImpl._implicit_coercions  s@     # 	A##%%%$$Wgx@@@@@rI   rj   r   r  rk   rI   rG   r  r    s>        I "&	
A 
A 
A 
A 
A 
A 
ArI   r  c                      e Zd ZdZdS )
HasCTEImplrk   Nr  rk   rI   rG   r  r    r  rI   r  c                      e Zd ZdZdS )	IsCTEImplrk   Nr  rk   rI   rG   r  r    r  rI   r  c                  4    e Zd ZdZdZdddZ	 dddddZdS )JoinTargetImplrk   TNr  c               2    |                      ||           d S rj   r   r  s       rG   r   z JoinTargetImpl._literal_coercion  s      '22222rI   F)legacyr?   r   r   r   r   r  rA   rh   r@   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)rD   r   r|  r  r   r  r   )r   r?   r   r   r  rh   s         rG   r   z"JoinTargetImpl._implicit_coercions  s~     gu344 	A N 	A0 	A 6     O$$Wgx@@@@@rI   rj   )r?   r   r   r   r   r   r  rA   rh   r   r@   r   )r   r   r   r   r   r   r   rk   rI   rG   r  r    sq        I+/(48 3 3 3 3 3 "&	A A A A A A A A ArI   r  c                  2    e Zd ZdZ	 ddddddZdddZdS )FromClauseImplrk   NFT)r   allow_selectr?   r   r   r   r   r   rA   r  rh   r@   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  rh   s          rG   r   z"FromClauseImpl._implicit_coercions  s     # 	A  
3((*** 3$: "     223 3 % 	AO$$Wgx@@@@@rI   )
deannotatec               2    |r|                                 S |S rj   )_deannotate)r   r?   r  rh   s       rG   r   zFromClauseImpl._post_coercion  s!     	&&(((NrI   rj   )r?   r   r   r   r   r   r   rA   r  rA   rh   r   r@   r   )r   r   r   r   r   r   rk   rI   rG   r  r    sn        I "&	A #(!A A A A A A6 5:       rI   r  c                  $    e Zd ZdZ	 dddddZdS )StrictFromClauseImplrk   NF)r  r?   r   r   r   r   r  rA   rh   r@   c                   |j         r|rt          j        dd           |j        S |                     |||           d S r  )r  r   r  r  r   )r   r?   r   r   r  rh   s         rG   r   z(StrictFromClauseImpl._implicit_coercions  se     # 
	A 
	A #     ..$$Wgx@@@@@rI   rj   )r?   r   r   r   r   r   r  rA   rh   r   r@   r   r  rk   rI   rG   r  r    sO        I "&	A #A A A A A A A ArI   r  c                       e Zd ZdZddddZdS )AnonymizedFromClauseImplrk   FN)flatr   c               6    |J |                     |          S )N)r  )_anonymous_fromclause)r   r?   r  r   rh   s        rG   r   z'AnonymizedFromClauseImpl._post_coercion1  s"    |||,,$,777rI   r   rk   rI   rG   r  r  .  s7        I.3$ 8 8 8 8 8 8 8rI   r  c                      e Zd ZdZd ZdS )DMLTableImplrk   c                2    d|j         v r|j         d         S |S )N	dml_table)_annotationsr   s      rG   r   zDMLTableImpl._post_coercion:  s#    '...'44NrI   Nr   rk   rI   rG   r  r  7  s(        I    rI   r  c                      e Zd ZdZ	 ddd
ZdS )DMLSelectImplrk   Nr?   r   r   r   r   rh   r@   c                    |j         rAt          |t          j                  r|j        j        r|j        S |                                S |                     |||           d S rj   )r  rD   r$   r`  r?   r  rb  r   r   s        rG   r   z!DMLSelectImpl._implicit_coercionsD  sl     # 		A8Z%566)$4)  ''((($$Wgx@@@@@rI   rj   r   r  rk   rI   rG   r  r  A  s>        I "&	A A A A A A ArI   r  c                  $     e Zd ZdZd fd	Z xZS )CompoundElementImplrk   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.rP  )rD   r   FromClauseRole_is_subqueryr;  r   rS  s         rG   r   z'CompoundElementImpl._raise_for_expectedZ  sz    gu344 	# 7  P  F*uww*
$x
 
JL
 
 	
rI   r   r<  r>  s   @rG   r  r  W  sB        I
 
 
 
 
 
 
 
 
 
rI   r  RoleImpl)r?   r   r@   rA   )rS   rL   rT   rL   rU   rL   r@   rV   )rZ   rL   r[   rL   r\   r]   r@   r^   )rf   rg   r?   r   rh   r   r@   rL   )
rf   rq   r?   r   rp   rr   rh   r   r@   rL   )rf   rt   r?   r   rh   r   r@   ru   )rf   rw   r?   r   rh   r   r@   rx   )rf   r{   r?   r   rh   r   r@   rx   )rf   r}   r?   r   rh   r   r@   r~   )rf   r   r?   r   rh   r   r@   r   )rf   r   r?   r   rh   r   r@   r   )rf   r   r?   r   rh   r   r@   r   )rf   r   r?   r(   rh   r   r@   r*   )rf   r   r?   r6   rh   r   r@   r6   )rf   r   r?   r7   rh   r   r@   r7   )rf   r   r?   r)   rh   r   r@   r5   )
rf   r   r?   r7   r   rr   rh   r   r@   r8   )rf   r   r?   r   rh   r   r@   r3   )rf   r   r?   r4   rh   r   r@   r4   )rf   r   r?   r   rh   r   r@   r   )rf   r   r?   r   r   r   r   r   r   rA   r   rA   rh   r   r@   r   )rf   rq   r?   r   rh   r   r@   rL   )rf   r{   r   r   r@   r   )r?   r   r   r   r  r  r  r   r   r   r@   r   )
__future__r   collections.abcabcrK   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>   rH   rM   rY   re   rm   r   r   r   r   r   r   r  rd   r  r  r  r0  r7  r@  rE  rI  rU  r^  ry  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intrA   rL   floatpy_typerk   rI   rG   <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rI   