o
    V\iN                     @  s  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rZdd lm(Z( dd!lm)Z) dd"lm*Z* dd#lm+Z+ dd$lm,Z, dd%lm-Z- dd&lm.Z. dd'lm/Z/ dd(lm0Z0 dd)lm1Z1 dd*l2m3Z3 dd+l(m4Z4 dd,l(m5Z5 dd-l(m6Z6 dd.l(m7Z7 dd/l(m8Z8 dd0l(m9Z9 dd1l(m:Z: dd2l*m;Z; dd3l+m<Z< dd4l+m=Z= dd5l+m>Z> dd6l+m?Z? dd7l+m@Z@ dd8l+mAZA dd9lmBZB ed:ejCd;ZDed<e	d=ef d;ZEed>ejFd;ZGed?ed;ZHddDdEZIdFdG ZJddMdNZKddTdUZLeddYdZZMed=d[dd_dZZMeddbdZZMed	dedZZMed
dgdZZMeddjdZZMeddndZZMeddrdZZMeddudZZMeddydZZMedd|dZZMedddZZMedddZZMed=ddddZZMedddZZMedddZZMedddZZMddddddddZZMdddZNdddZOG dd dZPG dd dZQG dd dZRG dd dePZSG dd dePZTde#jUddfdddZVG dd dePZWG dd dePZXG dd dePZYG dd dePZZG dd dePZ[G dd dePZ\G dd deTePZ]G dd de]ePZ^G ddĄ dePZ_G ddƄ deTePZ`G ddȄ deXeTePZaG ddʄ deXePZbG dd̄ deWePZcG dd΄ deSePZdG ddЄ deXePZeG dd҄ deXeTePejfZgG ddԄ degePZhG ddք degePZiG dd؄ deSePZjG ddڄ dePZkG dd܄ deRePZlG ddބ deQeXePZmG dd deQeSePZnG dd denZoG dd dePZpG dd de]ZqG dd deZeXePZrG dd dePZsG dd deXePZtG dd deWePZuG dd desZvG dd dePZwG dd dePZxG dd deZeWePZyG dd deyZzG dd dezZ{G dd deZeWePZ|G dd deWePZ}G dd  d eWePZ~i ZeeD ](ZeeeZedreddZee v re e eZeee< qeseej ZeeeefD ]Zeeeje < qdS dS (      )annotationsN)Any)Callable)cast)Dict)Iterable)Iterator)List)NoReturn)Optional)overload)Sequence)Tuple)Type)TYPE_CHECKING)TypeVar)Union   )roles)visitors)is_from_clause)ExecutableOption)Options)HasCacheKey)	Visitable   )exc)
inspection)util)Literal)elements)lambdas)schema)
selectable)_ColumnExpressionArgument)_ColumnsClauseArgument)_DDLColumnArgument)_DMLTableArgument)_FromClauseArgument)_OnlyColumnArgument)_DMLTableElement)BindParameter)ClauseElement)ColumnClause)ColumnElement)NamedColumn)SQLCoreOperations)
TextClause)Column)_ColumnsClauseElement)_JoinTargetProtocol)
FromClause)HasCTE)
SelectBase)Subquery)_TraverseCallableType_SR)bound_F._StringOnlyR_Telementr   returnboolc                 C  s   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?    rF   y/var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sqlalchemy/sql/coercions.py_is_literalO   s   
rH   c                 C  sr   t | tjrt | ts| D ]	}t|s dS qdS t | ttjtt	t
jjf o8t| d o8t | t p8t| 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.

    FTrB   )rC   collections_abcr   str_deep_is_literalr   r"   rD   r   r   r   langhelperssymbolrE   type
issubclass)r?   elemrF   rF   rG   rK   [   s,   



rK   	paramnamerJ   meth_rst	param_rstCallable[[_F], _F]c                 C  s   t | d||f S )Nz.. warning:: The %s argument to %s 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   rF   rF   rG   _document_text_coercion   s   rV   attrnamefnnameargs+Union[Sequence[_T], Sequence[Sequence[_T]]]Sequence[_T]c                 C  sb   |r,t |d tttfr,t|dkr,t |d tr%t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[   )rC   listsetdictlenr   ArgumentErrorr   )rW   rX   rY   rF   rF   rG   !_expression_collection_was_a_list   s   $
ra   roleType[roles.TruncatedLabelRole]kwc                 K     d S NrF   rb   r?   rd   rF   rF   rG   expect      rh   as_keyType[roles.DMLColumnRole]rk   Literal[True]c                K  re   rf   rF   )rb   r?   rk   rd   rF   rF   rG   rh         Type[roles.LiteralValueRole]BindParameter[Any]c                 K  re   rf   rF   rg   rF   rF   rG   rh      ri   !Type[roles.DDLReferredColumnRole]Union[Column[Any], str]c                 K  re   rf   rF   rg   rF   rF   rG   rh      ri   #Type[roles.DDLConstraintColumnRole]c                 K  re   rf   rF   rg   rF   rF   rG   rh      ri   Type[roles.StatementOptionRole]%Union[ColumnElement[Any], TextClause]c                 K  re   rf   rF   rg   rF   rF   rG   rh      ri   &Type[roles.LabeledColumnExprRole[Any]]=Union[_ColumnExpressionArgument[_T], _OnlyColumnArgument[_T]]NamedColumn[_T]c                 K  re   rf   rF   rg   rF   rF   rG   rh      ri   gUnion[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole]]_ColumnExpressionArgument[_T]ColumnElement[_T]c                 K  re   rf   rF   rg   rF   rF   rG   rh      s   	Union[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole], Type[roles.OnClauseRole], Type[roles.ColumnArgumentRole]]ColumnElement[Any]c                 K  re   rf   rF   rg   rF   rF   rG   rh      s   Type[roles.DMLTableRole]r'   r*   c                 K  re   rf   rF   rg   rF   rF   rG   rh      ri   Type[roles.HasCTERole]r6   c                 K  re   rf   rF   rg   rF   rF   rG   rh      ri   Type[roles.SelectStatementRole]r7   c                 K  re   rf   rF   rg   rF   rF   rG   rh     ri   Type[roles.FromClauseRole]r(   r5   c                 K  re   rf   rF   rg   rF   rF   rG   rh     ri   )explicit_subqueryr   r8   c                K  re   rf   rF   )rb   r?   r   rd   rF   rF   rG   rh     rn   Type[roles.ColumnsClauseRole]_ColumnsClauseArgument[Any]r3   c                 K  re   rf   rF   rg   rF   rF   rG   rh   !  ri   Type[roles.JoinTargetRole]r4   c                 K  re   rf   rF   rg   rF   rF   rG   rh   )  ri   	Type[_SR]c                 K  re   rf   rF   rg   rF   rF   rG   rh   2  ri   F)apply_propagate_attrsargnamepost_inspectdisable_inspectionr   Optional[ClauseElement]r   Optional[str]r   r   c                K  s  | j rt|rt|drtj|| tjdi ||dS t|  }|}t|tj	t
jt
jtjfsd }	|jr=|j|fi |}	n}|}d}
|jrQt|| rQt|drQd}
nt|drid}
t|ddsc| }nnt|dsV|
s|jr|stj|dd}|d ur|r|j z| }	W n ty   ||| Y nw |	d u r|j|fd|i|}	n|}	nt|tjr|jdi |}	n|}	|d urtjrt|	ttfsJ |jst|	d	d r|	j|_|j|	j j!v r|j"r|j"|	f||d
|}	|	S |j#||	fd|i|S )N__code__)r   FrB   Tis_clause_element)raiseerrr   _propagate_attrs)r   original_elementrF   )$allows_lambdacallablerE   r!   LambdaElementLambdaOptions_impl_lookuprC   r    CompilerElementr"   
SchemaItemFetchedValue	PyWrapper_resolve_literal_only_literal_coercion$_skip_clauseelement_for_target_matchgetattrrB   _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)rb   r?   r   r   r   r   rd   implr   resolvedr   insprF   rF   rG   rh   :  s   			



c                 K  s"   | dd  t| |fddi|S )Nrk   T)poprh   rg   rF   rF   rG   expect_as_key  s   r   expressionsIterable[_DDLColumnArgument]wIterator[Tuple[Union[str, Column[Any]], Optional[ColumnClause[Any]], Optional[str], Optional[Union[Column[Any], str]]]]c           	      c  s    |D ]?}d }d }t | |}t|trt|tsJ | }}ng }|j}t|i d|i |r3|d }|d ur9|n|}||||fV  qd S )Ncolumnr   )rh   rC   rJ   appendr   traverse)	rb   r   exprstrnamer   r   cols
col_appendadd_elementrF   rF   rG    expect_col_expression_collection  s    


r   c                   @  s^   e Zd ZU dZdd ZdZded< dZdZdd	 Z		ddddZ
		ddddddddZdS )RoleImpl)r   namer   c                 K  s   t  rf   )NotImplementedErrorselfr?   rd   rF   rF   rG   r     s   zRoleImpl._literal_coercionNr   r   Fc                 C  s    || _ |j| _t|tj| _d S rf   )r   
_role_namer   rO   r   UsesInspectionr   )r   
role_classrF   rF   rG   __init__  s   zRoleImpl.__init__r?   r   r   r   rd   r@   c                 K  s   |  ||| d S rf   r   r   r?   r   r   rd   rF   rF   rG   r     s   zRoleImpl._implicit_coercionsadvicecodeerrOptional[Any]r   r   r   Optional[Exception]r
   c          
      K  sj   |d ur||urd||f }nt |}|rd| j||f }	nd| j|f }	|r-|	d| 7 }	tj|	|d|)Nz!%r object resolved from %r objectz$%s expected for argument %r; got %s.z%s expected, got %s. )r   )reprr   r   r`   )
r   r?   r   r   r   r   r   rd   gotmsgrF   rF   rG   r     s   zRoleImpl._raise_for_expectedrf   
r?   r   r   r   r   r   rd   r   r@   r   NNr?   r   r   r   r   r   r   r   r   r   r   r   rd   r   r@   r
   )__name__
__module____qualname__	__slots__r   r   __annotations__r   r   r   r   r   rF   rF   rF   rG   r     s    
 	r   c                   @     e Zd ZdZdd ZdS )_DeannotaterF   c                 K  s   ddl m} ||S )Nr   )_deep_deannotate)r   r   )r   r   rd   r   rF   rF   rG   r     s   z_Deannotate._post_coercionNr   r   r   r   r   rF   rF   rF   rG   r   
      r   c                   @  s   e Zd ZdZdZdS )_StringOnlyrF   TN)r   r   r   r   r   rF   rF   rF   rG   r     s    r   c                   @  s"   e Zd ZdZdddZdd ZdS )_ReturnsStringKeyrF   Nc                 K      t |tr|S | ||| d S rf   rC   rJ   r   r   rF   rF   rG   r     s   
z%_ReturnsStringKey._implicit_coercionsc                 K     |S rf   rF   r   rF   rF   rG   r   "     z#_ReturnsStringKey._literal_coercionrf   r   r   r   r   r   r   rF   rF   rF   rG   r     s    
r   c                   @  s"   e Zd ZdZdd ZdddZdS )_ColumnCoercionsrF   c                 C  s   t 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   rF   rF   rG   "_warn_for_scalar_subquery_coercion)  s   z3_ColumnCoercions._warn_for_scalar_subquery_coercionNc                 K  s   |}t |dds| ||| d S |jr|   | S |jr.t|tjr.|   |j	 S | j
jr7|jr7|S | ||| d S )Nr   F)r   r   _is_select_baser   scalar_subquery_is_from_clauserC   r#   r8   r?   r   r   _is_lambda_element)r   r?   r   r   rd   r   rF   rF   rG   r   0  s   
z$_ColumnCoercions._implicit_coercionsrf   )r   r   r   r   r   r   rF   rF   rF   rG   r   &  s    r   exc_clsType[exc.SQLAlchemyError]extrar   r   r
   c                 C  s6   |dt | |rd|f nd|rd| ndd |)Nzc%(extra)sTextual SQL expression %(expr)r %(argname)sshould be explicitly declared as text(%(expr)r)for argument %s z%s )r   r   r   )r   ellipses_string)r?   r   r   r   r   rF   rF   rG   _no_text_coercionB  s   r   c                   @     e Zd ZdZddddZdS )_NoTextCoercionrF   Nr   c                K  s6   t |trttj| jrt|| d S | || d S rf   )rC   rJ   rO   r    r1   r   r   r   r   r?   r   rd   rF   rF   rG   r   W  s
   z!_NoTextCoercion._literal_coercionr   r   r   r   r   rF   rF   rF   rG   r   T      r   c                   @  s4   e Zd ZdZdZdZdZd	ddZddddZdS )
_CoerceLiteralsrF   FNc                 C  
   t ||S rf   r   r   r?   r   rF   rF   rG   _text_coercionf     
z_CoerceLiterals._text_coercionr   c                K  s   t |tr| jr|dkrtjdddS | j||fi |S | jr8|d u r(t S |du r0t S |du r8t	 S | j
rJt |tjrJtjt|ddS | || d S )N*T)
is_literalF)rC   rJ   _coerce_starr    r-   r   _coerce_constsNullFalse_True__coerce_numericsnumbersNumberr   r   rF   rF   rG   r   i  s   
z!_CoerceLiterals._literal_coercionrf   )	r   r   r   r   r  r  r  r   r   rF   rF   rF   rG   r   `  s    
r   c                   @  s,   e Zd ZdZ	d	dddddZdd ZdS )
LiteralValueImplTNF)type_literal_executec                K  s4   t |s| j|f||d| tjd ||d|dS )N)r   r   T)r
  uniquer  )rH   r   r    r+   )r   r?   r   r   r
  r  rd   rF   rF   rG   r     s   
z$LiteralValueImpl._implicit_coercionsc                 K  r   rf   rF   r   rF   rF   rG   r     r   z"LiteralValueImpl._literal_coercionrf   )r   r   r   r   r   r   rF   rF   rF   rG   r	  ~  s    r	  c                      s2   e Zd ZdZ		dddddd fddZ  ZS )_SelectIsNotFromrF   Nr   r?   r   r   r   r   r   r   r   r   r   rd   r@   r
   c                  sb   |st |tjst |tjrd|d ur|jn|f }d}nd }t j|f|||||d| J )NzETo create a FROM clause from a %s object, use the .subquery() method.89ve)r   r   r   r   r   )rC   r   SelectStatementRoler   superr   )r   r?   r   r   r   r   r   rd   r   rF   rG   r     s0   


z$_SelectIsNotFrom._raise_for_expectedr   r   r   r   r   r   r   __classcell__rF   rF   r  rG   r    s    r  c                   @  &   e Zd ZdZ	ddd
dZdd ZdS )HasCacheKeyImplrF   Nr?   r   r   r   r   rd   r@   c                 K  r   rf   )rC   r   r   r   rF   rF   rG   r        
z#HasCacheKeyImpl._implicit_coercionsc                 K  r   rf   rF   r   rF   rF   rG   r     r   z!HasCacheKeyImpl._literal_coercionrf   r   r   rF   rF   rF   rG   r    
    r  c                   @  r  )ExecutableOptionImplrF   Nr?   r   r   r   r   rd   r@   c                 K  r   rf   )rC   r   r   r   rF   rF   rG   r     r  z(ExecutableOptionImpl._implicit_coercionsc                 K  r   rf   rF   r   rF   rF   rG   r     r   z&ExecutableOptionImpl._literal_coercionrf   r   r   rF   rF   rF   rG   r    r  r  c                      s4   e Zd ZdZddddddZd	 fdd	Z  ZS )
ExpressionElementImplrF   NF)r   r
  is_crudc             
   K  sp   |d u r|s|d u s|j st S ztj|||d|dW S  tjy7 } z| j||d W Y d }~d S d }~ww )NT)r  _is_crudr   )should_evaluate_noner    r  r+   r   r`   r   )r   r?   r   r
  r  rd   r   rF   rF   rG   r     s   
z'ExpressionElementImpl._literal_coercionc                   sD   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   )rC   r#   Valuesr   AnonymizedFromClauseRoler  r   r   r?   r   r   rd   r   r  rF   rG   r     s   z)ExpressionElementImpl._raise_for_expectedr   )r   r   r   r   r   r   r  rF   rF   r  rG   r    s
    r  c                   @  s.   e Zd ZdZdddddZddddZdS )	BinaryElementImplrF   N)bindparam_typer   c             
   K  sJ   z	|j |||dW S  tjy$ } z| j||d W Y d }~d S d }~ww )N)r
  r  )_bind_paramr   r`   r   )r   r?   r   operatorr#  r   rd   r   rF   rF   rG   r     s   
z#BinaryElementImpl._literal_coercion)r#  c                K  s,   |j jr|j js||d ur|n|j }|S rf   )rN   _isnull_with_binary_element_type)r   r   r   r#  rd   rF   rF   rG   r   (  s
   z BinaryElementImpl._post_coercion)r   r   r   r   r   r   rF   rF   rF   rG   r"    s    r"  c                   @  s@   e Zd ZdZ	ddd
dZdd Zeddd Zdd Z	dS )InElementImplrF   Nr?   r   r   r   r   rd   r@   c                 K  sj   |j r,t|tjr|jjr| | | j|jfi |S | | | j| fi |S | 	||| d S rf   )
r   rC   r#   Aliasr?   r   _warn_for_implicit_coercionr   selectr   r   rF   rF   rG   r   3  s   


z!InElementImpl._implicit_coercionsc                 C  s   t d|jj  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   rF   rF   rG   r*  G  s
   z)InElementImpl._warn_for_implicit_coercionzsqlalchemy.sql.elementsc                  s   t |rGi t|}|D ]!}t|s.t|t jjjs*t|ds*| j	|fi | q||< qr?t
j fdd|D  S  j|ddS | j	|fi | d S )NrB   c                   s(   g | ]}|v r| n  |qS rF   )r$  ).0or   non_literal_expressionsr%  rF   rG   
<listcomp>b  s    
z3InElementImpl._literal_coercion.<locals>.<listcomp>T)	expanding)r   is_non_string_iterabler\   rH   rC   	preloadedsql_elementsr.   rE   r   r    
ClauseListr$  )r   r?   r   r%  rd   r-  rF   r.  rG   r   N  s,   

zInElementImpl._literal_coercionc                K  sx   |j r| S t|tjrt|jdkrJ |j|dS t|tjr0|j	dd}d|_
||_|S t|tjr:| S |S )Nr   )againstT)maintain_key)r   r   rC   r    r5  r_   clauses
self_groupr+   _cloner1  	expand_opr#   r  scalar_values)r   r?   r   r%  rd   rF   rF   rG   r   q  s   zInElementImpl._post_coercionrf   r   )
r   r   r   r   r   r*  r   preload_moduler   r   rF   rF   rF   rG   r(  0  s    
"r(  c                   @  s*   e Zd ZdZdZdd ZddddZdS )	OnClauseImplrF   Tc                 K  s   |  | d S rf   r   r   rF   rF   rG   r     s   zOnClauseImpl._literal_coercionN)r   c                K  s   t |tjr|S |S rf   )rC   r   JoinTargetRole)r   r   r   rd   rF   rF   rG   r     s   zOnClauseImpl._post_coercion)r   r   r   r   r  r   r   rF   rF   rF   rG   r>    s
    r>  c                   @     e Zd ZdZdZdddZdS )WhereHavingImplrF   TNc                 C  r   rf   r   r   rF   rF   rG   r     r   zWhereHavingImpl._text_coercionrf   r   r   r   r   r  r   rF   rF   rF   rG   rA        rA  c                   @  r@  )StatementOptionImplrF   TNc                 C  
   t |S rf   r    r1   r   rF   rF   rG   r     r   z"StatementOptionImpl._text_coercionrf   rB  rF   rF   rF   rG   rD    rC  rD  c                   @     e Zd ZdZdS )ColumnArgumentImplrF   Nr   r   r   r   rF   rF   rF   rG   rH        rH  c                   @  rG  )ColumnArgumentOrKeyImplrF   NrI  rF   rF   rF   rG   rK    rJ  rK  c                   @  s   e Zd ZdZdddZdS )StrAsPlainColumnImplrF   Nc                 C  rE  rf   )r    r-   r   rF   rF   rG   r     r   z#StrAsPlainColumnImpl._text_coercionrf   )r   r   r   r   r   rF   rF   rF   rG   rL    s    rL  c                   @  r@  )ByOfImplrF   TNc                 C  rE  rf   )r    _textual_label_referencer   rF   rF   rG   r     r   zByOfImpl._text_coercionrf   rB  rF   rF   rF   rG   rM    rC  rM  c                   @  r   )OrderByImplrF   c                 K  s$   t || jr|jd urt|S |S rf   )rC   r   _order_by_label_elementr    _label_reference)r   r   rd   rF   rF   rG   r     s
   


zOrderByImpl._post_coercionNr   rF   rF   rF   rG   rO    r   rO  c                   @     e Zd ZdZ	ddd
dZdS )GroupByImplrF   Nr?   r   r   r   r   rd   r@   c                 K  s   t |r
tj|j S |S rf   )r   r    r5  cr   rF   rF   rG   r     s   zGroupByImpl._implicit_coercionsrf   r   r   r   r   r   r   rF   rF   rF   rG   rS        rS  c                   @  s   e Zd ZdZddddZdS )DMLColumnImplrF   Frj   c                K  s   |r|j S |S rf   )key)r   r?   rk   rd   rF   rF   rG   r     s   zDMLColumnImpl._post_coercionNr   rF   rF   rF   rG   rW    r   rW  c                   @  r   )ConstExprImplrF   Nr   c                K  s@   |d u rt  S |du rt  S |du rt  S | || d S )NFT)r    r  r  r  r   r   rF   rF   rG   r     s   zConstExprImpl._literal_coercionr   rF   rF   rF   rG   rY    r   rY  c                   @  r  )TruncatedLabelImplrF   Nr?   r   r   r   r   rd   r@   c                 K  s    t |tr|S | ||| d S rf   r   r   rF   rF   rG   r     r  z&TruncatedLabelImpl._implicit_coercionsc                 K  s   t |tjr|S t|S )zcoerce the given value to :class:`._truncated_label`.

        Existing :class:`._truncated_label` and
        :class:`._anonymous_label` objects are passed
        unchanged.
        )rC   r    _truncated_labelr   rF   rF   rG   r     s   
z$TruncatedLabelImpl._literal_coercionrf   r   r   rF   rF   rF   rG   rZ    r  rZ  c                   @  r@  )DDLExpressionImplrF   TNc                 C  rE  rf   rF  r   rF   rF   rG   r     s   
z DDLExpressionImpl._text_coercionrf   rB  rF   rF   rF   rG   r\    rC  r\  c                   @  rG  )DDLConstraintColumnImplrF   NrI  rF   rF   rF   rG   r]  "  rJ  r]  c                   @  rG  )DDLReferredColumnImplrF   NrI  rF   rF   rF   rG   r^  &  rJ  r^  c                   @  r  )LimitOffsetImplrF   Nr?   r   r   r   r   rd   r@   c                 K  s   |d u rd S |  ||| d S rf   r   r   rF   rF   rG   r   -  s   z#LimitOffsetImpl._implicit_coercionsc                K  s(   |d u rd S t |}tj|||ddS )NT)r
  r  )r   asintr#   _OffsetLimitParam)r   r?   r   r
  rd   valuerF   rF   rG   r   9  s   
z!LimitOffsetImpl._literal_coercionrf   r   r   rF   rF   rF   rG   r_  *  r  r_  c                      s&   e Zd ZdZ	dd fd
dZ  ZS )LabeledColumnExprImplrF   Nr?   r   r   r   r   rd   r@   c                   sX   t |tjr|d S t j||fd|i|}t |tjr#|d S | ||| d S Nr   )rC   r   ExpressionElementRolelabelr  r   r   )r   r?   r   r   rd   newr  rF   rG   r   H  s   

z)LabeledColumnExprImpl._implicit_coercionsrf   r   )r   r   r   r   r   r  rF   rF   r  rG   rc  E  s    rc  c                      sN   e Zd ZdZdZdZdZedej	Z
	d
dd fddZddd	Z  ZS )ColumnsClauseImplrF   Tz^\w\S*$N)r   c                  sF   |st |trdddd |D  d}t j|f|||d|S )NzDid you mean to say select(z, c                 s  s    | ]}t |V  qd S rf   )r   )r,  erF   rF   rG   	<genexpr>j  s    z8ColumnsClauseImpl._raise_for_expected.<locals>.<genexpr>z)?r  )rC   r\   joinr  r   )r   r?   r   r   r   rd   r  rF   rG   r   d  s   z%ColumnsClauseImpl._raise_for_expectedc                 C  sH   t |}| j| }tdt||rd|f nd|rdndd )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   rl  )rJ   _guess_straight_columnmatchr   r`   r   r   )r   r?   r   guess_is_literalrF   rF   rG   r   q  s   
z ColumnsClauseImpl._text_coercionr   rf   )r   r   r   r   r  r  r  recompileIrm  r   r   r  rF   rF   r  rG   rh  [  s    rh  c                   @  rG  )ReturnsRowsImplrF   NrI  rF   rF   rF   rG   rs    rJ  rs  c                      s4   e Zd ZdZddddZ	dd fddZ  ZS )StatementImplrF   Nr   c                K  sH   ||ur"t |ts"z|j W |S  ty!   td| d Y |S 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)rC   rJ   _execute_on_connectionr   r   warn_deprecated)r   r   r   r   rd   rF   rF   rG   r     s    
zStatementImpl._post_coercionr?   r   r   r   r   rd   r@   c                   s$   |j r|S t j||fd|i|S rd  )r   r  r   r   r  rF   rG   r     s   z!StatementImpl._implicit_coercionsrf   r   )r   r   r   r   r   r   r  rF   rF   r  rG   rt    s    rt  c                   @  rR  )SelectStatementImplrF   Nr?   r   r   r   r   rd   r@   c                 K  s    |j r| S | ||| d S rf   )_is_text_clausecolumnsr   r   rF   rF   rG   r     s   z'SelectStatementImpl._implicit_coercionsrf   r   rU  rF   rF   rF   rG   rx    rV  rx  c                   @  rG  )
HasCTEImplrF   NrI  rF   rF   rF   rG   r{    rJ  r{  c                   @  rG  )	IsCTEImplrF   NrI  rF   rF   rF   rG   r|    rJ  r|  c                   @  s6   e Zd ZdZdZddddZ	ddddddZdS )JoinTargetImplrF   TNr   c                K  s   |  || d S rf   r   r   rF   rF   rG   r     s   z JoinTargetImpl._literal_coercionF)legacyr?   r   r   r   r   r~  rA   rd   r@   c                K  s>   t |tjr|S |r|jrtjd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.ru  )version)rC   r   r?  r   r   rw  r   )r   r?   r   r   r~  rd   rF   rF   rG   r     s   	
z"JoinTargetImpl._implicit_coercionsrf   )r?   r   r   r   r   r   r~  rA   rd   r   r@   r   )r   r   r   r   r   r   r   rF   rF   rF   rG   r}    s    r}  c                   @  s4   e Zd ZdZ	dddddddZddddZdS )FromClauseImplrF   NFT)r   allow_selectr?   r   r   r   r   r   rA   r  rd   r@   c                K  sJ   |j r|r	| S |rtjddd |jS d S |jr|S | ||| d S r  )r   subqueryr   rw  _implicit_subqueryry  r   )r   r?   r   r   r   r  rd   rF   rF   rG   r     s   
	z"FromClauseImpl._implicit_coercions)
deannotatec                K  s   |r|  S |S rf   )_deannotate)r   r?   r  rd   rF   rF   rG   r     s   zFromClauseImpl._post_coercionrf   )r?   r   r   r   r   r   r   rA   r  rA   rd   r   r@   r   )r   r   r   r   r   r   rF   rF   rF   rG   r    s    r  c                   @  s$   e Zd ZdZ	ddddddZdS )StrictFromClauseImplrF   NF)r  r?   r   r   r   r   r  rA   rd   r@   c                K  s0   |j r|rtjddd |jS | ||| d S r  )r   r   rw  r  r   )r   r?   r   r   r  rd   rF   rF   rG   r     s   
	z(StrictFromClauseImpl._implicit_coercionsrf   )r?   r   r   r   r   r   r  rA   rd   r   r@   r   rU  rF   rF   rF   rG   r    s    r  c                   @  s    e Zd ZdZdddddZdS )AnonymizedFromClauseImplrF   FN)flatr   c                K  s   |d u sJ |j |dS )N)r  )_anonymous_fromclause)r   r?   r  r   rd   rF   rF   rG   r   2  s   z'AnonymizedFromClauseImpl._post_coercionr   rF   rF   rF   rG   r  /  s    r  c                   @  r   )DMLTableImplrF   c                 K  s   d|j v r
|j d S |S )N	dml_table)_annotationsr   rF   rF   rG   r   ;  s   

zDMLTableImpl._post_coercionNr   rF   rF   rF   rG   r  8  r   r  c                   @  rR  )DMLSelectImplrF   Nr?   r   r   r   r   rd   r@   c                 K  s:   |j rt|tjr|jjr|jS | S | ||| d S rf   )r   rC   r#   r)  r?   r   r+  r   r   rF   rF   rG   r   E  s   
z!DMLSelectImpl._implicit_coercionsrf   r   rU  rF   rF   rF   rG   r  B  rV  r  c                      s"   e Zd ZdZd fdd	Z  ZS )CompoundElementImplrF   Nc                   s>   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.r  )rC   r   FromClauseRole_is_subqueryr  r   r!  r  rF   rG   r   [  s   z'CompoundElementImpl._raise_for_expectedr   r  rF   rF   r  rG   r  X  s    r  RoleImpl)r?   r   r@   rA   )rQ   rJ   rR   rJ   rS   rJ   r@   rT   )rW   rJ   rX   rJ   rY   rZ   r@   r[   )rb   rc   r?   r   rd   r   r@   rJ   )
rb   rl   r?   r   rk   rm   rd   r   r@   rJ   )rb   ro   r?   r   rd   r   r@   rp   )rb   rq   r?   r   rd   r   r@   rr   )rb   rs   r?   r   rd   r   r@   rr   )rb   rt   r?   r   rd   r   r@   ru   )rb   rv   r?   rw   rd   r   r@   rx   )rb   ry   r?   rz   rd   r   r@   r{   )rb   r|   r?   r   rd   r   r@   r}   )rb   r~   r?   r'   rd   r   r@   r*   )rb   r   r?   r6   rd   r   r@   r6   )rb   r   r?   r7   rd   r   r@   r7   )rb   r   r?   r(   rd   r   r@   r5   )
rb   r   r?   r7   r   rm   rd   r   r@   r8   )rb   r   r?   r   rd   r   r@   r3   )rb   r   r?   r4   rd   r   r@   r4   )rb   r   r?   r   rd   r   r@   r   )rb   r   r?   r   r   r   r   r   r   rA   r   rA   rd   r   r@   r   )rb   rl   r?   r   rd   r   r@   rJ   )rb   rs   r   r   r@   r   )r?   r   r   r   r   r   r   r   r   r   r@   r
   )
__future__r   collections.abcabcrI   r  rp  r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   _typingr   baser   r   	cache_keyr   r   r   r   r   util.typingr   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   dmlr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   SQLRoler:   r<   
StringRoler=   r>   rH   rK   rV   ra   rh   r   r   r   r   r   r   r   r`   r   r   r   r	  r  r  r  r  r"  r(  r>  rA  rD  rH  rK  rL  ByOfRolerM  rO  rS  rW  rY  rZ  r\  r]  r^  r_  rc  rh  rs  rt  rx  r{  r|  r}  r  r  r  r  r  r  r   dirr   r   clsendswithreplaceglobalsr   re  ee_implintrA   rJ   floatpy_typerF   rF   rF   rG   <module>   s\  &		t7	)+V			
)*'%	


