o
    E6d                     @  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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,d- d-ee eZ"G d.d/ d/eZ#G d0d1 d1eZ$G d2d3 d3eee$Z%G d4d5 d5ee$Z&G d6d7 d7eZ'G d8d9 d9e'Z(G d:d; d;ee'Z)G d<d= d=e)Z*G d>d? d?e"e Z+G d@dA dAe+e Z,G dBdC dCe+e Z-G dDdE dEe+e Z.G dFdG dGeZ/G dHdI dIeee'Z0G dJdK dKe!e0Z1G dLdM dMe1Z2G dNdO dOe2Z3G dPdQ dQeZ4G dRdS dSeZ5G dTdU dUe5e4Z6G dVdW dWe4Z7G dXdY dYeZ8G dZd[ d[eeZ9G d\d] d]e5Z:G d^d_ d_e1Z;G d`da daeZ<G dbdc dceZ=G ddde dee5Z>G dfdg dge'Z?G dhdi dieZ@G djdk dke@ZAdlS )m    )annotations)Any)Generic)Optional)TYPE_CHECKING)TypeVar   )util)Literal   )_PropagateAttrsType)Label)_SelectIterable)
FromClause)Subquery_T)boundc                   @  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   kC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\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!   2       r!   c                   @  r    )HasCacheKeyRoler   zCacheable Core or ORM objectNr   r   r   r   
_role_namer   r   r   r   r#   7   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'   A   r"   r'   c                   @  r    )ColumnArgumentRoler   zColumn expressionNr$   r   r   r   r   r(   F   r"   r(   c                   @  r    )ColumnArgumentOrKeyRoler   Column expression or string keyNr$   r   r   r   r   r)   K   r"   r)   c                   @  r    )StrAsPlainColumnRoler   r*   Nr$   r   r   r   r   r+   P   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,   U       r,   c                   @  r    )
StringRolez/mixin indicating a role that results in stringsr   Nr-   r   r   r   r   r/   [   r.   r/   c                   @  r    )TruncatedLabelRoler   zString SQL identifierNr$   r   r   r   r   r0   a   r"   r0   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_iterablel   s   z"ColumnsClauseRole._select_iterableN)r2   r   )r   r   r   r   r%   propertyr9   r   r   r   r   r1   f   s    r1   c                   @  r    )TypedColumnsClauseRolez'element-typed form of ColumnsClauseRoler   Nr-   r   r   r   r   r;   q   r.   r;   c                   @  r    )LimitOffsetRoler   zLIMIT / OFFSET expressionNr$   r   r   r   r   r<   w   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   r?      r"   r?   c                   @     e Zd ZdZdS )StructuralRoler   Nr   r   r   r   r   r   r   r   rA          rA   c                   @  r    )StatementOptionRoler   z statement sub-expression elementNr$   r   r   r   r   rD      r"   rD   c                   @  r    )OnClauseRoler   zCON clause, typically a SQL expression or ORM relationship attributeNr$   r   r   r   r   rE          rE   c                   @  r    )WhereHavingRoler   z$SQL expression for WHERE/HAVING roleNr$   r   r   r   r   rG      r"   rG   c                   @  s   e Zd ZdZdZd
ddZd	S )ExpressionElementRoler   zSQL expression elementnameOptional[str]r2   	Label[_T]c                 C  r3   r4   r5   )r8   rI   r   r   r   label   s   zExpressionElementRole.labelN)rI   rJ   r2   rK   )r   r   r   r   r%   rL   r   r   r   r   rH      s    rH   c                   @  r    )ConstExprRoler   z#Constant True/False/None expressionNr$   r   r   r   r   rM      r"   rM   c                   @  r@   )LabeledColumnExprRoler   NrB   r   r   r   r   rN      rC   rN   c                   @  r    )BinaryElementRoler   z'SQL expression element or literal valueNr$   r   r   r   r   rO      r"   rO   c                   @  r    )InElementRoler   z?IN expression list, SELECT construct, or bound parameter objectNr$   r   r   r   r   rP      rF   rP   c                   @  r    )JoinTargetRoler   zGJoin target, typically a FROM expression, or ORM relationship attributeNr$   r   r   r   r   rQ      rF   rQ   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   rR      s
   
 rR   c                   @  r@   )StrictFromClauseRoler   NrB   r   r   r   r   rT      rC   rT   c                   @  s*   e Zd ZdZerddddddZdS dS )AnonymizedFromClauseRoler   NF)rI   flatrI   rJ   rV   rS   r2   r   c                C     d S r4   r   )r8   rI   rV   r   r   r   _anonymous_fromclause   s   z.AnonymizedFromClauseRole._anonymous_fromclause)rI   rJ   rV   rS   r2   r   )r   r   r   r   r   rX   r   r   r   r   rU      s    rU   c                   @  r    )ReturnsRowsRoler   zcRow returning expression such as a SELECT, a FROM clause, or an INSERT/UPDATE/DELETE with RETURNINGNr$   r   r   r   r   rY      rF   rY   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() constructr2   r   c                 C  rW   r4   r   r7   r   r   r   _propagate_attrs   s   zStatementRole._propagate_attrsN)r2   r   )
r   r   r   r   r%   r   r	   Zmemoized_propertyr[   
EMPTY_DICTr   r   r   r   rZ      s    
rZ   c                   @  s   e Zd ZdZdZdddZdS )	SelectStatementRoler   z/SELECT construct or equivalent text() constructr2   r   c                 C  s   t d)NzFAll SelectStatementRole objects should implement a .subquery() method.r5   r7   r   r   r   subquery  s   zSelectStatementRole.subqueryN)r2   r   )r   r   r   r   r%   r^   r   r   r   r   r]      s    r]   c                   @  r@   )
HasCTERoler   NrB   r   r   r   r   r_   
  rC   r_   c                   @  r    )	IsCTERoler   z
CTE objectNr$   r   r   r   r   r`     r"   r`   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   rb     s
    rb   c                   @  r@   )DMLRoler   NrB   r   r   r   r   rd     rC   rd   c                   @  r    )DMLTableRoler   z-subject table for an INSERT, UPDATE or DELETENr$   r   r   r   r   re   !  r"   re   c                   @  r    )DMLColumnRoler   z*SET/VALUES column expression or string keyNr$   r   r   r   r   rf   &  r"   rf   c                   @  ra   )DMLSelectRolez@A SELECT statement embedded in DML, typically INSERT from SELECTr   z-SELECT statement or equivalent textual objectNrc   r   r   r   r   rg   +  s    rg   c                   @  r@   )DDLRoler   NrB   r   r   r   r   rh   2  rC   rh   c                   @  r    )DDLExpressionRoler   z)SQL expression element for DDL constraintNr$   r   r   r   r   ri   6  r"   ri   c                   @  r    )DDLConstraintColumnRoler   z:String column name or column expression for DDL constraintNr$   r   r   r   r   rj   ;  r"   rj   c                   @  r    )DDLReferredColumnRoler   zBString column name or Column object for DDL foreign key constraintNr$   r   r   r   r   rk   @  rF   rk   N)B
__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/   r0   r1   r;   r<   r=   r>   r?   rA   rD   rE   rG   rH   rM   rN   rO   rP   rQ   rR   rT   rU   rY   rZ   r]   r_   r`   rb   rd   re   rf   rg   rh   ri   rj   rk   r   r   r   r   <module>   sx   		
