a
    [g                     @  s  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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 ededZededdZG dd dZG dd dZG dd dZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZ G d+d, d,e eZ!G d-d. d.eeeZ"G d/d0 d0ee eZ#G d1d2 d2eZ$G d3d4 d4eZ%G d5d6 d6eee%Z&G d7d8 d8ee%Z'G d9d: d:eZ(G d;d< d<e(Z)G d=d> d>ee(Z*G d?d@ d@e*Z+G dAdB dBe#e Z,G dCdD dDe,e Z-G dEdF dFe,e Z.G dGdH dHe,e Z/G dIdJ dJeZ0G dKdL dLeee(Z1G dMdN dNe"e1Z2G dOdP dPe2Z3G dQdR dRe3Z4G dSdT dTeZ5G dUdV dVeZ6G dWdX dXe6e5Z7G dYdZ dZe5Z8G d[d\ d\eZ9G d]d^ d^eeZ:G d_d` d`e6Z;G dadb dbe2Z<G dcdd ddeZ=G dedf dfeZ>G dgdh dhe6Z?G didj dje(Z@G dkdl dleZAG dmdn dneAZBdoS )p    )annotations)Any)Generic)Optional)TYPE_CHECKING)TypeVar   )util)Literal   )_PropagateAttrsType)Label)_SelectIterable)
FromClause)Subquery_T)bound_T_coT)r   	covariantc                   @  s   e Zd ZdZdZdZdZdS )SQLRolezDefine a "role" within a SQL statement structure.

    Classes within SQL Core participate within SQLRole hierarchies in order
    to more accurately indicate where they may be used within SQL statements
    of all types.

    .. versionadded:: 1.4

     FN)__name__
__module____qualname____doc__	__slots__allows_lambdauses_inspectionr   r   r   b/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/sqlalchemy/sql/roles.pyr      s   
r   c                   @  s"   e Zd ZU dZdZded< dZdS )UsesInspectionr   NzLiteral[None]_post_inspectT)r   r   r   r   r    __annotations__r   r   r   r   r   r   -   s   
r   c                   @  s   e Zd ZdZdZdS )AllowsLambdaRoler   TN)r   r   r   r   r   r   r   r   r   r"   3   s   r"   c                   @  s   e Zd ZdZdZdS )HasCacheKeyRoler   zCacheable Core or ORM objectNr   r   r   r   
_role_namer   r   r   r   r#   8   s   r#   c                   @  s   e Zd ZdZdZdS )ExecutableOptionRoler   z"ExecutionOption Core or ORM objectNr$   r   r   r   r   r&   =   s   r&   c                   @  s   e Zd ZdZdZdS )LiteralValueRoler   zLiteral Python valueNr$   r   r   r   r   r'   B   s   r'   c                   @  s   e Zd ZdZdZdS )ColumnArgumentRoler   zColumn expressionNr$   r   r   r   r   r(   G   s   r(   c                   @  s   e Zd ZdZdZdS )ColumnArgumentOrKeyRoler   Column expression or string keyNr$   r   r   r   r   r)   L   s   r)   c                   @  s   e Zd ZdZdZdS )StrAsPlainColumnRoler   r*   Nr$   r   r   r   r   r+   Q   s   r+   c                   @  s   e Zd ZdZdZdS )ColumnListRolezCElements suitable for forming comma separated lists of expressions.r   Nr   r   r   r   r   r   r   r   r   r,   V   s   r,   c                   @  s   e Zd ZdZdZdS )
StringRolez/mixin indicating a role that results in stringsr   Nr-   r   r   r   r   r.   \   s   r.   c                   @  s   e Zd ZdZdZdS )TruncatedLabelRoler   zString SQL identifierNr$   r   r   r   r   r/   b   s   r/   c                   @  s&   e Zd ZdZdZeddddZdS )ColumnsClauseRoler   z?Column expression, FROM clause, or other columns clause elementr   returnc                 C  s
   t  d S NNotImplementedErrorselfr   r   r   _select_iterablem   s    z"ColumnsClauseRole._select_iterableN)r   r   r   r   r%   propertyr8   r   r   r   r   r0   g   s
   r0   c                   @  s   e Zd ZdZdZdS )TypedColumnsClauseRolez'element-typed form of ColumnsClauseRoler   Nr-   r   r   r   r   r:   r   s   r:   c                   @  s   e Zd ZdZdZdS )LimitOffsetRoler   zLIMIT / OFFSET expressionNr$   r   r   r   r   r;   x   s   r;   c                   @  s   e Zd ZdZdZdS )ByOfRoler   zGROUP BY / OF / etc. expressionNr$   r   r   r   r   r<   }   s   r<   c                   @  s   e Zd ZdZdZdS )GroupByRoler   zGROUP BY expressionNr$   r   r   r   r   r=      s   r=   c                   @  s   e Zd ZdZdZdS )OrderByRoler   zORDER BY expressionNr$   r   r   r   r   r>      s   r>   c                   @  s   e Zd ZdZdS )StructuralRoler   Nr   r   r   r   r   r   r   r   r?      s   r?   c                   @  s   e Zd ZdZdZdS )StatementOptionRoler   z statement sub-expression elementNr$   r   r   r   r   rA      s   rA   c                   @  s   e Zd ZdZdZdS )OnClauseRoler   zCON clause, typically a SQL expression or ORM relationship attributeNr$   r   r   r   r   rB      s   rB   c                   @  s   e Zd ZdZdZdS )WhereHavingRoler   z$SQL expression for WHERE/HAVING roleNr$   r   r   r   r   rC      s   rC   c                   @  s$   e Zd ZdZdZdddddZdS )	ExpressionElementRoler   zSQL expression elementOptional[str]z	Label[_T])namer2   c                 C  s
   t  d S r3   r4   )r7   rF   r   r   r   label   s    zExpressionElementRole.labelN)r   r   r   r   r%   rG   r   r   r   r   rD      s   rD   c                   @  s   e Zd ZdZdZdS )ConstExprRoler   z#Constant True/False/None expressionNr$   r   r   r   r   rH      s   rH   c                   @  s   e Zd ZdZdS )LabeledColumnExprRoler   Nr@   r   r   r   r   rI      s   rI   c                   @  s   e Zd ZdZdZdS )BinaryElementRoler   z'SQL expression element or literal valueNr$   r   r   r   r   rJ      s   rJ   c                   @  s   e Zd ZdZdZdS )InElementRoler   z?IN expression list, SELECT construct, or bound parameter objectNr$   r   r   r   r   rK      s   rK   c                   @  s   e Zd ZdZdZdS )JoinTargetRoler   zGJoin target, typically a FROM expression, or ORM relationship attributeNr$   r   r   r   r   rL      s   rL   c                   @  s"   e Zd ZU dZdZdZded< dS )FromClauseRoler   z2FROM expression, such as a Table or alias() objectFboolZnamed_with_columnN)r   r   r   r   r%   Z_is_subqueryr!   r   r   r   r   rM      s   
rM   c                   @  s   e Zd ZdZdS )StrictFromClauseRoler   Nr@   r   r   r   r   rO      s   rO   c                   @  s.   e Zd ZdZer*dddddddd	d
ZdS )AnonymizedFromClauseRoler   NF)rF   flatrE   rN   r   )rF   rQ   r2   c                C  s   d S r3   r   )r7   rF   rQ   r   r   r   _anonymous_fromclause   s    z.AnonymizedFromClauseRole._anonymous_fromclause)r   r   r   r   r   rR   r   r   r   r   rP      s   rP   c                   @  s   e Zd ZdZdZdS )ReturnsRowsRoler   zcRow returning expression such as a SELECT, a FROM clause, or an INSERT/UPDATE/DELETE with RETURNINGNr$   r   r   r   r   rS      s   rS   c                   @  s4   e Zd ZdZdZer*ejddddZnej	ZdS )StatementRoler   z"Executable SQL or text() constructr   r1   c                 C  s   d S r3   r   r6   r   r   r   _propagate_attrs   s    zStatementRole._propagate_attrsN)
r   r   r   r   r%   r   r	   Zmemoized_propertyrU   
EMPTY_DICTr   r   r   r   rT      s   rT   c                   @  s"   e Zd ZdZdZddddZdS )SelectStatementRoler   z/SELECT construct or equivalent text() constructr   r1   c                 C  s   t dd S )NzFAll SelectStatementRole objects should implement a .subquery() method.r4   r6   r   r   r   subquery  s    zSelectStatementRole.subqueryN)r   r   r   r   r%   rX   r   r   r   r   rW      s   rW   c                   @  s   e Zd ZdZdS )
HasCTERoler   Nr@   r   r   r   r   rY   	  s   rY   c                   @  s   e Zd ZdZdZdS )	IsCTERoler   z
CTE objectNr$   r   r   r   r   rZ     s   rZ   c                   @  s   e Zd ZdZdZdZdS )CompoundElementRolezDSELECT statements inside a CompoundSelect, e.g. UNION, EXTRACT, etc.r   z@SELECT construct for inclusion in a UNION or other set constructNr   r   r   r   r   r%   r   r   r   r   r[     s   r[   c                   @  s   e Zd ZdZdS )DMLRoler   Nr@   r   r   r   r   r]     s   r]   c                   @  s   e Zd ZdZdZdS )DMLTableRoler   z-subject table for an INSERT, UPDATE or DELETENr$   r   r   r   r   r^      s   r^   c                   @  s   e Zd ZdZdZdS )DMLColumnRoler   z*SET/VALUES column expression or string keyNr$   r   r   r   r   r_   %  s   r_   c                   @  s   e Zd ZdZdZdZdS )DMLSelectRolez@A SELECT statement embedded in DML, typically INSERT from SELECTr   z-SELECT statement or equivalent textual objectNr\   r   r   r   r   r`   *  s   r`   c                   @  s   e Zd ZdZdS )DDLRoler   Nr@   r   r   r   r   ra   1  s   ra   c                   @  s   e Zd ZdZdZdS )DDLExpressionRoler   z)SQL expression element for DDL constraintNr$   r   r   r   r   rb   5  s   rb   c                   @  s   e Zd ZdZdZdS )DDLConstraintColumnRoler   z:String column name or column expression for DDL constraintNr$   r   r   r   r   rc   :  s   rc   c                   @  s   e Zd ZdZdZdS )DDLReferredColumnRoler   zBString column name or Column object for DDL foreign key constraintNr$   r   r   r   r   rd   ?  s   rd   N)C
__future__r   typingr   r   r   r   r    r	   Zutil.typingr
   Z_typingr   elementsr   Z
selectabler   r   r   r   r   r   r   r"   r#   r&   r'   r(   r)   r+   r,   r.   r/   r0   r:   r;   r<   r=   r>   r?   rA   rB   rC   rD   rH   rI   rJ   rK   rL   rM   rO   rP   rS   rT   rW   rY   rZ   r[   r]   r^   r_   r`   ra   rb   rc   rd   r   r   r   r   <module>   sx   		

