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 )ÚSQLRolezþDefine 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   úP/var/www/html/flaskapp/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   		

