
    +h                        d dl mZ  G d de      Z G d de      Z G d de      Z G d d	e      Z G d
 de      Z G d de      Z G d de      Z	 G d de	      Z
 G d de	      Z G d de      Z G d de      Z G d deee      Z G d de      Z G d de      Z G d deee      Z G d  d!ee      Z G d" d#e      Z G d$ d%e      Z G d& d'ee      Z G d( d)e      Z G d* d+e      Z G d, d-e      Z G d. d/e      Z G d0 d1e      Z G d2 d3e      Z G d4 d5eee      Z G d6 d7ee      Z G d8 d9e      Z G d: d;e      Z G d< d=e      Z  G d> d?e      Z! G d@ dAe!e       Z" G dB dCe       Z# G dD dEe      Z$ G dF dGee      Z% G dH dIe!      Z& G dJ dKe      Z' G dL dMe      Z( G dN dOe      Z) G dP dQe!      Z* G dR dSe      Z+ G dT dUe      Z, G dV dWe,      Z-yX)Y   )utilc                       e Zd ZdZdZdZy)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__allows_lambdauses_inspection     G/var/www/html/venv/lib/python3.12/site-packages/sqlalchemy/sql/roles.pyr   r      s     MOr   r   c                       e Zd ZdZdZy)UsesInspectionNT)r   r   r   _post_inspectr   r   r   r   r   r      s    MOr   r   c                       e Zd ZdZy)AllowsLambdaRoleTN)r   r   r   r
   r   r   r   r   r      s    Mr   r   c                       e Zd ZdZy)HasCacheKeyRolezCacheable Core or ORM objectNr   r   r   
_role_namer   r   r   r   r   #       /Jr   r   c                       e Zd ZdZdZy)ExecutableOptionRoler   z"ExecutionOption Core or ORM objectN)r   r   r   	__slots__r   r   r   r   r   r   '   s    I5Jr   r   c                       e Zd ZdZy)LiteralValueRolezLiteral Python valueNr   r   r   r   r   r   ,   s    'Jr   r   c                       e Zd ZdZy)ColumnArgumentRolezColumn expressionNr   r   r   r   r   r   0   s    $Jr   r   c                       e Zd ZdZy)ColumnArgumentOrKeyRoleColumn expression or string keyNr   r   r   r   r!   r!   4       2Jr   r!   c                       e Zd ZdZy)StrAsPlainColumnRoler"   Nr   r   r   r   r%   r%   8   r#   r   r%   c                       e Zd ZdZy)ColumnListRolezCElements suitable for forming comma separated lists of expressions.N)r   r   r   r	   r   r   r   r'   r'   <   s    Mr   r'   c                       e Zd ZdZy)TruncatedLabelRolezString SQL identifierNr   r   r   r   r)   r)   @   s    (Jr   r)   c                        e Zd ZdZed        Zy)ColumnsClauseRolez Column expression or FROM clausec                     t               NNotImplementedErrorselfs    r   _select_iterablez"ColumnsClauseRole._select_iterableG       !##r   N)r   r   r   r   propertyr2   r   r   r   r+   r+   D   s    3J$ $r   r+   c                       e Zd ZdZy)LimitOffsetRolezLIMIT / OFFSET expressionNr   r   r   r   r6   r6   L   s    ,Jr   r6   c                       e Zd ZdZy)ByOfRolezGROUP BY / OF / etc. expressionNr   r   r   r   r8   r8   P   r#   r   r8   c                       e Zd ZdZy)GroupByRolezGROUP BY expressionNr   r   r   r   r:   r:   T   s	    
 'Jr   r:   c                       e Zd ZdZy)OrderByRolezORDER BY expressionNr   r   r   r   r<   r<   \   s    &Jr   r<   c                       e Zd Zy)StructuralRoleNr   r   r   r   r   r   r>   r>   `       r   r>   c                       e Zd ZdZy)StatementOptionRolez statement sub-expression elementNr   r   r   r   rB   rB   d   s    3Jr   rB   c                       e Zd ZdZy)OnClauseRolezSQL expression for ON clauseNr   r   r   r   rD   rD   h   r   r   rD   c                       e Zd ZdZy)WhereHavingRolez$SQL expression for WHERE/HAVING roleNr   r   r   r   rF   rF   l   s    7Jr   rF   c                       e Zd ZdZy)ExpressionElementRolezSQL expression elementNr   r   r   r   rH   rH   p   s    )Jr   rH   c                       e Zd ZdZy)ConstExprRolez#Constant True/False/None expressionNr   r   r   r   rJ   rJ   t   s    6Jr   rJ   c                       e Zd Zy)LabeledColumnExprRoleNr?   r   r   r   rL   rL   x   r@   r   rL   c                       e Zd ZdZy)BinaryElementRolez'SQL expression element or literal valueNr   r   r   r   rN   rN   |   s    :Jr   rN   c                       e Zd ZdZy)InElementRolez?IN expression list, SELECT construct, or bound parameter objectNr   r   r   r   rP   rP      s
    I r   rP   c                       e Zd ZdZy)JoinTargetRolezGJoin target, typically a FROM expression, or ORM relationship attributeNr   r   r   r   rR   rR      s    	! r   rR   c                   $    e Zd ZdZdZed        Zy)FromClauseRolez2FROM expression, such as a Table or alias() objectFc                     t               r-   r.   r0   s    r   _hide_fromszFromClauseRole._hide_froms   r3   r   N)r   r   r   r   _is_subqueryr4   rV   r   r   r   rT   rT      s    EJL$ $r   rT   c                       e Zd Zed        Zy)StrictFromClauseRolec                     t               r-   r.   r0   s    r   descriptionz StrictFromClauseRole.description   r3   r   N)r   r   r   r4   r[   r   r   r   rY   rY      s     $ $r   rY   c                       e Zd ZddZy)AnonymizedFromClauseRoleNc                     t               r-   r.   )r1   nameflats      r   _anonymous_fromclausez.AnonymizedFromClauseRole._anonymous_fromclause   s    !##r   )NF)r   r   r   ra   r   r   r   r]   r]      s    $r   r]   c                       e Zd ZdZy)ReturnsRowsRolezcRow returning expression such as a SELECT, a FROM clause, or an INSERT/UPDATE/DELETE with RETURNINGNr   r   r   r   rc   rc      s    	. r   rc   c                   2    e Zd ZdZ ej
                         Zy)StatementRolez"Executable SQL or text() constructN)r   r   r   r   r   immutabledict_propagate_attrsr   r   r   re   re      s    5J)t))+r   re   c                       e Zd ZdZd Zy)SelectStatementRolez/SELECT construct or equivalent text() constructc                     t        d      )NzFAll SelectStatementRole objects should implement a .subquery() method.r.   r0   s    r   subqueryzSelectStatementRole.subquery   s    !"
 	
r   N)r   r   r   r   rk   r   r   r   ri   ri      s    BJ
r   ri   c                       e Zd Zy)
HasCTERoleNr?   r   r   r   rm   rm      r@   r   rm   c                       e Zd ZdZy)	IsCTERolez
CTE objectNr   r   r   r   ro   ro      s    Jr   ro   c                       e Zd ZdZdZy)CompoundElementRolezDSELECT statements inside a CompoundSelect, e.g. UNION, EXTRACT, etc.z@SELECT construct for inclusion in a UNION or other set constructNr   r   r   r	   r   r   r   r   rq   rq      s    N 	K r   rq   c                       e Zd Zy)DMLRoleNr?   r   r   r   rt   rt      r@   r   rt   c                       e Zd ZdZy)DMLTableRolez-subject table for an INSERT, UPDATE or DELETENr   r   r   r   rv   rv      s    @Jr   rv   c                       e Zd ZdZy)DMLColumnRolez*SET/VALUES column expression or string keyNr   r   r   r   rx   rx      s    =Jr   rx   c                       e Zd ZdZdZy)DMLSelectRolez@A SELECT statement embedded in DML, typically INSERT from SELECTz-SELECT statement or equivalent textual objectNrr   r   r   r   rz   rz      s
    J@Jr   rz   c                       e Zd Zy)DDLRoleNr?   r   r   r   r|   r|      r@   r   r|   c                       e Zd ZdZy)DDLExpressionRolez)SQL expression element for DDL constraintNr   r   r   r   r~   r~      s    <Jr   r~   c                       e Zd ZdZy)DDLConstraintColumnRolez:String column name or column expression for DDL constraintNr   r   r   r   r   r      s    MJr   r   c                       e Zd ZdZy)DDLReferredColumnRolezBString column name or Column object for DDL foreign key constraintNr   r   r   r   r   r      s
    L r   r   N). r   objectr   r   r   r   r   r   r   r!   r%   r'   r)   r+   r6   r8   r:   r<   r>   rB   rD   rF   rH   rJ   rL   rN   rP   rR   rT   rY   r]   rc   re   ri   rm   ro   rq   rt   rv   rx   rz   r|   r~   r   r   r   r   r   <module>r      s:   f V 
v 0g 067 6
(w (% %30 33- 3NW N) )$(.. $-g -3~ 3'"NH ''"H '	W 	4. 40#^ 08l 8*G *7) 7	1 	;- ;G %~~ $& $$> $$3 $g ,G ,
- 
	 	 *G 	m 	A> A>G >AG A	m 	= =Ng N3 r   