U
    [¢h  ã                   @   sÖ  d dl m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	ƒZG dd„ deƒZG dd„ deƒZG dd„ deeeƒZG dd„ deƒZG dd„ deƒZG dd„ deeeƒZG d d!„ d!e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ƒZG d*d+„ d+eƒZG d,d-„ d-eƒZG d.d/„ d/eƒZG d0d1„ d1eƒZG d2d3„ d3eƒZG d4d5„ d5eeeƒZG d6d7„ d7eeƒZG d8d9„ d9eƒZG d:d;„ d;eƒZG d<d=„ d=eƒZ G d>d?„ d?eƒZ!G d@dA„ dAe!e ƒZ"G dBdC„ dCe ƒZ#G dDdE„ dEeƒZ$G dFdG„ dGeeƒZ%G dHdI„ dIe!ƒZ&G dJdK„ dKeƒZ'G dLdM„ dMeƒZ(G dNdO„ dOeƒZ)G dPdQ„ dQe!ƒZ*G dRdS„ dSeƒZ+G dTdU„ dUeƒZ,G dVdW„ dWe,ƒZ-dXS )Yé   )Úutilc                   @   s   e 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__Úallows_lambdaÚuses_inspection© r
   r
   ú8/tmp/pip-unpacked-wheel-joqu7d3y/sqlalchemy/sql/roles.pyr      s   
r   c                   @   s   e Zd ZdZdZdS )ÚUsesInspectionNT)r   r   r   Z_post_inspectr	   r
   r
   r
   r   r      s   r   c                   @   s   e Zd ZdZdS )ÚAllowsLambdaRoleTN)r   r   r   r   r
   r
   r
   r   r      s   r   c                   @   s   e Zd ZdZdS )ÚHasCacheKeyRolezCacheable Core or ORM objectN©r   r   r   Ú
_role_namer
   r
   r
   r   r   #   s   r   c                   @   s   e Zd ZdZdZdS )ÚExecutableOptionRoler
   z"ExecutionOption Core or ORM objectN)r   r   r   Ú	__slots__r   r
   r
   r
   r   r   '   s   r   c                   @   s   e Zd ZdZdS )ÚLiteralValueRolezLiteral Python valueNr   r
   r
   r
   r   r   ,   s   r   c                   @   s   e Zd ZdZdS )ÚColumnArgumentRolezColumn expressionNr   r
   r
   r
   r   r   0   s   r   c                   @   s   e Zd ZdZdS )ÚColumnArgumentOrKeyRoleúColumn expression or string keyNr   r
   r
   r
   r   r   4   s   r   c                   @   s   e Zd ZdZdS )ÚStrAsPlainColumnRoler   Nr   r
   r
   r
   r   r   8   s   r   c                   @   s   e Zd ZdZdS )ÚColumnListRolezCElements suitable for forming comma separated lists of expressions.N)r   r   r   r   r
   r
   r
   r   r   <   s   r   c                   @   s   e Zd ZdZdS )ÚTruncatedLabelRolezString SQL identifierNr   r
   r
   r
   r   r   @   s   r   c                   @   s   e Zd ZdZedd„ ƒZdS )ÚColumnsClauseRolez Column expression or FROM clausec                 C   s
   t ƒ ‚d S ©N©ÚNotImplementedError©Úselfr
   r
   r   Ú_select_iterableG   s    z"ColumnsClauseRole._select_iterableN)r   r   r   r   Úpropertyr    r
   r
   r
   r   r   D   s   r   c                   @   s   e Zd ZdZdS )ÚLimitOffsetRolezLIMIT / OFFSET expressionNr   r
   r
   r
   r   r"   L   s   r"   c                   @   s   e Zd ZdZdS )ÚByOfRolezGROUP BY / OF / etc. expressionNr   r
   r
   r
   r   r#   P   s   r#   c                   @   s   e Zd ZdZdS )ÚGroupByRolezGROUP BY expressionNr   r
   r
   r
   r   r$   T   s   r$   c                   @   s   e Zd ZdZdS )ÚOrderByRolezORDER BY expressionNr   r
   r
   r
   r   r%   \   s   r%   c                   @   s   e Zd ZdS )ÚStructuralRoleN©r   r   r   r
   r
   r
   r   r&   `   s   r&   c                   @   s   e Zd ZdZdS )ÚStatementOptionRolez statement sub-expression elementNr   r
   r
   r
   r   r(   d   s   r(   c                   @   s   e Zd ZdZdS )ÚOnClauseRolezSQL expression for ON clauseNr   r
   r
   r
   r   r)   h   s   r)   c                   @   s   e Zd ZdZdS )ÚWhereHavingRolez$SQL expression for WHERE/HAVING roleNr   r
   r
   r
   r   r*   l   s   r*   c                   @   s   e Zd ZdZdS )ÚExpressionElementRolezSQL expression elementNr   r
   r
   r
   r   r+   p   s   r+   c                   @   s   e Zd ZdZdS )ÚConstExprRolez#Constant True/False/None expressionNr   r
   r
   r
   r   r,   t   s   r,   c                   @   s   e Zd ZdS )ÚLabeledColumnExprRoleNr'   r
   r
   r
   r   r-   x   s   r-   c                   @   s   e Zd ZdZdS )ÚBinaryElementRolez'SQL expression element or literal valueNr   r
   r
   r
   r   r.   |   s   r.   c                   @   s   e Zd ZdZdS )ÚInElementRolez?IN expression list, SELECT construct, or bound parameter objectNr   r
   r
   r
   r   r/   €   s   ÿr/   c                   @   s   e Zd ZdZdS )ÚJoinTargetRolezGJoin target, typically a FROM expression, or ORM relationship attributeNr   r
   r
   r
   r   r0   †   s   ÿr0   c                   @   s    e Zd ZdZdZedd„ ƒZdS )ÚFromClauseRolez2FROM expression, such as a Table or alias() objectFc                 C   s
   t ƒ ‚d S r   r   r   r
   r
   r   Ú_hide_froms’   s    zFromClauseRole._hide_fromsN)r   r   r   r   Z_is_subqueryr!   r2   r
   r
   r
   r   r1      s   r1   c                   @   s   e Zd Zedd„ ƒZdS )ÚStrictFromClauseRolec                 C   s
   t ƒ ‚d S r   r   r   r
   r
   r   Údescriptionš   s    z StrictFromClauseRole.descriptionN)r   r   r   r!   r4   r
   r
   r
   r   r3   —   s   r3   c                   @   s   e Zd Zddd„ZdS )ÚAnonymizedFromClauseRoleNFc                 C   s
   t ƒ ‚d S r   r   )r   ÚnameZflatr
   r
   r   Ú_anonymous_fromclause¢   s    z.AnonymizedFromClauseRole._anonymous_fromclause)NF)r   r   r   r7   r
   r
   r
   r   r5   Ÿ   s   r5   c                   @   s   e Zd ZdZdS )ÚReturnsRowsRolezcRow returning expression such as a SELECT, a FROM clause, or an INSERT/UPDATE/DELETE with RETURNINGNr   r
   r
   r
   r   r8   ¦   s   ÿr8   c                   @   s   e Zd ZdZe ¡ ZdS )ÚStatementRolez"Executable SQL or text() constructN)r   r   r   r   r   ZimmutabledictZ_propagate_attrsr
   r
   r
   r   r9   ­   s   r9   c                   @   s   e Zd ZdZdd„ ZdS )ÚSelectStatementRolez/SELECT construct or equivalent text() constructc                 C   s   t dƒ‚d S )NzFAll SelectStatementRole objects should implement a .subquery() method.r   r   r
   r
   r   Úsubquery¶   s    ÿzSelectStatementRole.subqueryN)r   r   r   r   r;   r
   r
   r
   r   r:   ³   s   r:   c                   @   s   e Zd ZdS )Ú
HasCTERoleNr'   r
   r
   r
   r   r<   ½   s   r<   c                   @   s   e Zd ZdZdS )Ú	IsCTERolez
CTE objectNr   r
   r
   r
   r   r=   Á   s   r=   c                   @   s   e Zd ZdZdZdS )Ú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
   r   r>   Å   s   ÿr>   c                   @   s   e Zd ZdS )ÚDMLRoleNr'   r
   r
   r
   r   r@   Î   s   r@   c                   @   s   e Zd ZdZdS )ÚDMLTableRolez-subject table for an INSERT, UPDATE or DELETENr   r
   r
   r
   r   rA   Ò   s   rA   c                   @   s   e Zd ZdZdS )ÚDMLColumnRolez*SET/VALUES column expression or string keyNr   r
   r
   r
   r   rB   Ö   s   rB   c                   @   s   e Zd ZdZdZdS )ÚDMLSelectRolez@A SELECT statement embedded in DML, typically INSERT from SELECTz-SELECT statement or equivalent textual objectNr?   r
   r
   r
   r   rC   Ú   s   rC   c                   @   s   e Zd ZdS )ÚDDLRoleNr'   r
   r
   r
   r   rD   à   s   rD   c                   @   s   e Zd ZdZdS )ÚDDLExpressionRolez)SQL expression element for DDL constraintNr   r
   r
   r
   r   rE   ä   s   rE   c                   @   s   e Zd ZdZdS )ÚDDLConstraintColumnRolez:String column name or column expression for DDL constraintNr   r
   r
   r
   r   rF   è   s   rF   c                   @   s   e Zd ZdZdS )ÚDDLReferredColumnRolezBString column name or Column object for DDL foreign key constraintNr   r
   r
   r
   r   rG   ì   s   ÿrG   N).Ú r   Úobjectr   r   r   r   r   r   r   r   r   r   r   r   r"   r#   r$   r%   r&   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r3   r5   r8   r9   r:   r<   r=   r>   r@   rA   rB   rC   rD   rE   rF   rG   r
   r
   r
   r   Ú<module>   sV   

	