
    [h                       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r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de          Z eded          Z G d d          Z G d d          Z G d d          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          Z! G d- d.eee          Z" G d/ d0ee         e          Z# G d1 d2e          Z$ G d3 d4e          Z% G d5 d6eee%          Z& G d7 d8ee%          Z' G d9 d:e          Z( G d; d<e(          Z) G d= d>ee(          Z* G d? d@e*          Z+ G dA dBe#e                   Z, G dC dDe,e                   Z- G dE dFe,e                   Z. G dG dHe,e                   Z/ G dI dJe          Z0 G dK dLeee(          Z1 G dM dNe"e1          Z2 G dO dPe2          Z3 G dQ dRe3          Z4 G dS dTe          Z5 G dU dVe          Z6 G dW dXe6e5          Z7 G dY dZe5          Z8 G d[ d\e          Z9 G d] d^ee          Z: G d_ d`e6          Z; G da dbe2          Z< G dc dde          Z= G de dfe          Z> G dg dhe6          Z? G di dje(          Z@ G dk dle          ZA G dm dneA          ZBdoS )p    )annotations)Any)Generic)Optional)TYPE_CHECKING)TypeVar   )util)Literal   )_PropagateAttrsType)Label)_SelectIterable)
FromClause)Subquery_T)bound_T_coT)r   	covariantc                      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       c/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/sqlalchemy/sql/roles.pyr   r      s)          IMOOOr    r   c                  &    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+         I#'M''''OOOr    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   s        IMMMr    r'   c                      e Zd ZdZdZdS )HasCacheKeyRoler   zCacheable Core or ORM objectNr   r   r   r   
_role_namer   r    r!   r)   r)   8   s        I/JJJr    r)   c                      e Zd ZdZdZdS )ExecutableOptionRoler   z"ExecutionOption Core or ORM objectNr*   r   r    r!   r-   r-   =   s        I5JJJr    r-   c                      e Zd ZdZdZdS )LiteralValueRoler   zLiteral Python valueNr*   r   r    r!   r/   r/   B   s        I'JJJr    r/   c                      e Zd ZdZdZdS )ColumnArgumentRoler   zColumn expressionNr*   r   r    r!   r1   r1   G   s        I$JJJr    r1   c                      e Zd ZdZdZdS )ColumnArgumentOrKeyRoler   Column expression or string keyNr*   r   r    r!   r3   r3   L           I2JJJr    r3   c                      e Zd ZdZdZdS )StrAsPlainColumnRoler   r4   Nr*   r   r    r!   r7   r7   Q   r5   r    r7   c                      e Zd ZdZdZdS )ColumnListRolezCElements suitable for forming comma separated lists of expressions.r   Nr   r   r   r   r   r   r    r!   r9   r9   V   s        MMIIIr    r9   c                      e Zd ZdZdZdS )
StringRolez/mixin indicating a role that results in stringsr   Nr:   r   r    r!   r<   r<   \   s        99IIIr    r<   c                      e Zd ZdZdZdS )TruncatedLabelRoler   zString SQL identifierNr*   r   r    r!   r>   r>   b   s        I(JJJr    r>   c                  .    e Zd ZdZdZedd            ZdS )ColumnsClauseRoler   z?Column expression, FROM clause, or other columns clause elementreturnr   c                    t                      NNotImplementedErrorselfs    r!   _select_iterablez"ColumnsClauseRole._select_iterablem   s    !###r    N)rA   r   )r   r   r   r   r+   propertyrH   r   r    r!   r@   r@   g   sA        II  $ $ $ X$ $ $r    r@   c                      e Zd ZdZdZdS )TypedColumnsClauseRolez'element-typed form of ColumnsClauseRoler   Nr:   r   r    r!   rK   rK   r   s        11IIIr    rK   c                      e Zd ZdZdZdS )LimitOffsetRoler   zLIMIT / OFFSET expressionNr*   r   r    r!   rM   rM   x   s        I,JJJr    rM   c                      e Zd ZdZdZdS )ByOfRoler   zGROUP BY / OF / etc. expressionNr*   r   r    r!   rO   rO   }   r5   r    rO   c                      e Zd ZdZdZdS )GroupByRoler   zGROUP BY expressionNr*   r   r    r!   rQ   rQ      s        I
 'JJJr    rQ   c                      e Zd ZdZdZdS )OrderByRoler   zORDER BY expressionNr*   r   r    r!   rS   rS      s        I&JJJr    rS   c                      e Zd ZdZdS )StructuralRoler   Nr   r   r   r   r   r    r!   rU   rU              IIIr    rU   c                      e Zd ZdZdZdS )StatementOptionRoler   z statement sub-expression elementNr*   r   r    r!   rY   rY      s        I3JJJr    rY   c                      e Zd ZdZdZdS )OnClauseRoler   zCON clause, typically a SQL expression or ORM relationship attributeNr*   r   r    r!   r[   r[      s        I	% JJr    r[   c                      e Zd ZdZdZdS )WhereHavingRoler   z$SQL expression for WHERE/HAVING roleNr*   r   r    r!   r]   r]      s        I7JJJr    r]   c                      e Zd ZdZdZd	dZdS )
ExpressionElementRoler   zSQL expression elementnameOptional[str]rA   	Label[_T]c                    t                      rC   rD   )rG   r`   s     r!   labelzExpressionElementRole.label   s    !###r    N)r`   ra   rA   rb   )r   r   r   r   r+   rd   r   r    r!   r_   r_      s4         I)J$ $ $ $ $ $r    r_   c                      e Zd ZdZdZdS )ConstExprRoler   z#Constant True/False/None expressionNr*   r   r    r!   rf   rf      s        I6JJJr    rf   c                      e Zd ZdZdS )LabeledColumnExprRoler   NrV   r   r    r!   rh   rh      rW   r    rh   c                      e Zd ZdZdZdS )BinaryElementRoler   z'SQL expression element or literal valueNr*   r   r    r!   rj   rj      s        I:JJJr    rj   c                      e Zd ZdZdZdS )InElementRoler   z?IN expression list, SELECT construct, or bound parameter objectNr*   r   r    r!   rl   rl      s        II JJr    rl   c                      e Zd ZdZdZdS )JoinTargetRoler   zGJoin target, typically a FROM expression, or ORM relationship attributeNr*   r   r    r!   rn   rn      s        I	! JJr    rn   c                  &    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!   rp   rp      s-         IEJLr    rp   c                      e Zd ZdZdS )StrictFromClauseRoler   NrV   r   r    r!   ru   ru      rW   r    ru   c                  *    e Zd ZdZer
dddddZdS dS )AnonymizedFromClauseRoler   NF)r`   flatr`   ra   rx   rq   rA   r   c                   d S rC   r   )rG   r`   rx   s      r!   _anonymous_fromclausez.AnonymizedFromClauseRole._anonymous_fromclause   s    r    )r`   ra   rx   rq   rA   r   )r   r   r   r   r   rz   r   r    r!   rw   rw      sP        I  ,0e	 	 	 	 	 	 	 	 r    rw   c                      e Zd ZdZdZdS )ReturnsRowsRoler   zcRow returning expression such as a SELECT, a FROM clause, or an INSERT/UPDATE/DELETE with RETURNINGNr*   r   r    r!   r|   r|      s        I	. JJr    r|   c                  N    e Zd ZdZdZerej        dd            ZdS ej	        ZdS )StatementRoler   z"Executable SQL or text() constructrA   r   c                    d S rC   r   rF   s    r!   _propagate_attrszStatementRole._propagate_attrs   s    ;>3r    N)rA   r   )
r   r   r   r   r+   r   r
   memoized_propertyr   
EMPTY_DICTr   r    r!   r~   r~      sL        I5J +		>>> 
 	>>>  ?r    r~   c                      e Zd ZdZdZddZdS )SelectStatementRoler   z/SELECT construct or equivalent text() constructrA   r   c                     t          d          )NzFAll SelectStatementRole objects should implement a .subquery() method.rD   rF   s    r!   subqueryzSelectStatementRole.subquery  s    !"
 
 	
r    N)rA   r   )r   r   r   r   r+   r   r   r    r!   r   r      s2        IBJ
 
 
 
 
 
r    r   c                      e Zd ZdZdS )
HasCTERoler   NrV   r   r    r!   r   r   	  rW   r    r   c                      e Zd ZdZdZdS )	IsCTERoler   z
CTE objectNr*   r   r    r!   r   r     s        IJJJr    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   r     s!        NNIJ JJr    r   c                      e Zd ZdZdS )DMLRoler   NrV   r   r    r!   r   r     rW   r    r   c                      e Zd ZdZdZdS )DMLTableRoler   z-subject table for an INSERT, UPDATE or DELETENr*   r   r    r!   r   r      s        I@JJJr    r   c                      e Zd ZdZdZdS )DMLColumnRoler   z*SET/VALUES column expression or string keyNr*   r   r    r!   r   r   %  s        I=JJJr    r   c                      e Zd ZdZdZdZdS )DMLSelectRolez@A SELECT statement embedded in DML, typically INSERT from SELECTr   z-SELECT statement or equivalent textual objectNr   r   r    r!   r   r   *  s        JJI@JJJr    r   c                      e Zd ZdZdS )DDLRoler   NrV   r   r    r!   r   r   1  rW   r    r   c                      e Zd ZdZdZdS )DDLExpressionRoler   z)SQL expression element for DDL constraintNr*   r   r    r!   r   r   5  s        I<JJJr    r   c                      e Zd ZdZdZdS )DDLConstraintColumnRoler   z:String column name or column expression for DDL constraintNr*   r   r    r!   r   r   :  s        IMJJJr    r   c                      e Zd ZdZdZdS )DDLReferredColumnRoler   zBString column name or Column object for DDL foreign key constraintNr*   r   r    r!   r   r   ?  s        IL JJr    r   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/   r1   r3   r7   r9   r<   r>   r@   rK   rM   rO   rQ   rS   rU   rY   r[   r]   r_   rf   rh   rj   rl   rn   rp   ru   rw   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   <module>r      s   # " " " " "                                           ! ! ! ! ! ! %,,,,,,++++++&&&&&&$$$$$$WTsd333                      
0 0 0 0 0g 0 0 0
6 6 6 6 67 6 6 6
( ( ( ( (w ( ( (
% % % % % % % %
3 3 3 3 30 3 3 3
3 3 3 3 3- 3 3 3
    W          ) ) ) ) )W ) ) )
$ $ $ $ $(.. $ $ $    WU^W   - - - - -g - - -
3 3 3 3 3~ 3 3 3
' ' ' ' '"NH ' ' '' ' ' ' '"H ' ' '
    W   4 4 4 4 4. 4 4 4
    #^   8 8 8 8 8l 8 8 8
$ $ $ $ $259 $ $ $7 7 7 7 7)"- 7 7 7
    1"5   ; ; ; ; ;-b1 ; ; ;
    G       %~~       &       >   
    3       g   
+ 
+ 
+ 
+ 
+G 
+ 
+ 
+
 
 
 
 
- 
 
 
              
    *G       m   A A A A A> A A A
> > > > >G > > >
A A A A AG A A A    m   = = = = = = = =
N N N N Ng N N N
    3     r    