o
    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rPd
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   V/var/www/html/ecg_monitoring/venv/lib/python3.10/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                   @     e Zd ZdZdZdS )AllowsLambdaRoler   TN)r   r   r   r   r   r   r   r   r   r#   3       r#   c                   @  r"   )HasCacheKeyRoler   zCacheable Core or ORM objectNr   r   r   r   
_role_namer   r   r   r   r%   8   r$   r%   c                   @  r"   )ExecutableOptionRoler   z"ExecutionOption Core or ORM objectNr&   r   r   r   r   r(   =   r$   r(   c                   @  r"   )LiteralValueRoler   zLiteral Python valueNr&   r   r   r   r   r)   B   r$   r)   c                   @  r"   )ColumnArgumentRoler   zColumn expressionNr&   r   r   r   r   r*   G   r$   r*   c                   @  r"   )ColumnArgumentOrKeyRoler   Column expression or string keyNr&   r   r   r   r   r+   L   r$   r+   c                   @  r"   )StrAsPlainColumnRoler   r,   Nr&   r   r   r   r   r-   Q   r$   r-   c                   @  r"   )ColumnListRolezCElements suitable for forming comma separated lists of expressions.r   Nr   r   r   r   r   r   r   r   r   r.   V       r.   c                   @  r"   )
StringRolez/mixin indicating a role that results in stringsr   Nr/   r   r   r   r   r1   \   r0   r1   c                   @  r"   )TruncatedLabelRoler   zString SQL identifierNr&   r   r   r   r   r2   b   r$   r2   c                   @  s"   e Zd ZdZdZedddZdS )	ColumnsClauseRoler   z?Column expression, FROM clause, or other columns clause elementreturnr   c                 C     t  NNotImplementedErrorselfr   r   r   _select_iterablem   s   z"ColumnsClauseRole._select_iterableN)r4   r   )r   r   r   r   r'   propertyr;   r   r   r   r   r3   g   s    r3   c                   @  r"   )TypedColumnsClauseRolez'element-typed form of ColumnsClauseRoler   Nr/   r   r   r   r   r=   r   r0   r=   c                   @  r"   )LimitOffsetRoler   zLIMIT / OFFSET expressionNr&   r   r   r   r   r>   x   r$   r>   c                   @  r"   )ByOfRoler   zGROUP BY / OF / etc. expressionNr&   r   r   r   r   r?   }   r$   r?   c                   @  r"   )GroupByRoler   zGROUP BY expressionNr&   r   r   r   r   r@      s    r@   c                   @  r"   )OrderByRoler   zORDER BY expressionNr&   r   r   r   r   rA      r$   rA   c                   @     e Zd ZdZdS )StructuralRoler   Nr   r   r   r   r   r   r   r   rC          rC   c                   @  r"   )StatementOptionRoler   z statement sub-expression elementNr&   r   r   r   r   rF      r$   rF   c                   @  r"   )OnClauseRoler   zCON clause, typically a SQL expression or ORM relationship attributeNr&   r   r   r   r   rG          rG   c                   @  r"   )WhereHavingRoler   z$SQL expression for WHERE/HAVING roleNr&   r   r   r   r   rI      r$   rI   c                   @  s   e Zd ZdZdZd
ddZd	S )ExpressionElementRoler   zSQL expression elementnameOptional[str]r4   	Label[_T]c                 C  r5   r6   r7   )r:   rK   r   r   r   label   s   zExpressionElementRole.labelN)rK   rL   r4   rM   )r   r   r   r   r'   rN   r   r   r   r   rJ      s    rJ   c                   @  r"   )ConstExprRoler   z#Constant True/False/None expressionNr&   r   r   r   r   rO      r$   rO   c                   @  rB   )LabeledColumnExprRoler   NrD   r   r   r   r   rP      rE   rP   c                   @  r"   )BinaryElementRoler   z'SQL expression element or literal valueNr&   r   r   r   r   rQ      r$   rQ   c                   @  r"   )InElementRoler   z?IN expression list, SELECT construct, or bound parameter objectNr&   r   r   r   r   rR      rH   rR   c                   @  r"   )JoinTargetRoler   zGJoin target, typically a FROM expression, or ORM relationship attributeNr&   r   r   r   r   rS      rH   rS   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boolnamed_with_columnN)r   r   r   r   r'   _is_subqueryr!   r   r   r   r   rT      s
   
 rT   c                   @  rB   )StrictFromClauseRoler   NrD   r   r   r   r   rX      rE   rX   c                   @  s*   e Zd ZdZerddddddZdS dS )AnonymizedFromClauseRoler   NF)rK   flatrK   rL   rZ   rU   r4   r   c                C     d S r6   r   )r:   rK   rZ   r   r   r   _anonymous_fromclause   s   z.AnonymizedFromClauseRole._anonymous_fromclause)rK   rL   rZ   rU   r4   r   )r   r   r   r   r   r\   r   r   r   r   rY      s    rY   c                   @  r"   )ReturnsRowsRoler   zcRow returning expression such as a SELECT, a FROM clause, or an INSERT/UPDATE/DELETE with RETURNINGNr&   r   r   r   r   r]      rH   r]   c                   @  s2   e Zd ZdZdZerejdddZdS ej	ZdS )	StatementRoler   z"Executable SQL or text() constructr4   r   c                 C  r[   r6   r   r9   r   r   r   _propagate_attrs   s   zStatementRole._propagate_attrsN)r4   r   )
r   r   r   r   r'   r   r	   memoized_propertyr_   
EMPTY_DICTr   r   r   r   r^      s    
r^   c                   @  s   e Zd ZdZdZdddZdS )	SelectStatementRoler   z/SELECT construct or equivalent text() constructr4   r   c                 C  s   t d)NzFAll SelectStatementRole objects should implement a .subquery() method.r7   r9   r   r   r   subquery  s   zSelectStatementRole.subqueryN)r4   r   )r   r   r   r   r'   rc   r   r   r   r   rb      s    rb   c                   @  rB   )
HasCTERoler   NrD   r   r   r   r   rd   	  rE   rd   c                   @  r"   )	IsCTERoler   z
CTE objectNr&   r   r   r   r   re     r$   re   c                   @     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   rg     s
    rg   c                   @  rB   )DMLRoler   NrD   r   r   r   r   ri     rE   ri   c                   @  r"   )DMLTableRoler   z-subject table for an INSERT, UPDATE or DELETENr&   r   r   r   r   rj      r$   rj   c                   @  r"   )DMLColumnRoler   z*SET/VALUES column expression or string keyNr&   r   r   r   r   rk   %  r$   rk   c                   @  rf   )DMLSelectRolez@A SELECT statement embedded in DML, typically INSERT from SELECTr   z-SELECT statement or equivalent textual objectNrh   r   r   r   r   rl   *  s    rl   c                   @  rB   )DDLRoler   NrD   r   r   r   r   rm   1  rE   rm   c                   @  r"   )DDLExpressionRoler   z)SQL expression element for DDL constraintNr&   r   r   r   r   rn   5  r$   rn   c                   @  r"   )DDLConstraintColumnRoler   z:String column name or column expression for DDL constraintNr&   r   r   r   r   ro   :  r$   ro   c                   @  r"   )DDLReferredColumnRoler   zBString column name or Column object for DDL foreign key constraintNr&   r   r   r   r   rp   ?  rH   rp   N)C
__future__r   typingr   r   r   r   r    r	   util.typingr
   _typingr   elementsr   
selectabler   r   r   r   r   r   r   r#   r%   r(   r)   r*   r+   r-   r.   r1   r2   r3   r=   r>   r?   r@   rA   rC   rF   rG   rI   rJ   rO   rP   rQ   rR   rS   rT   rX   rY   r]   r^   rb   rd   re   rg   ri   rj   rk   rl   rm   rn   ro   rp   r   r   r   r   <module>   sz   		

