
    Wd                       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 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, d-ee         e          Z" G d. d/e          Z# G d0 d1e          Z$ G d2 d3eee$          Z% G d4 d5ee$          Z& G d6 d7e          Z' G d8 d9e'          Z( G d: d;ee'          Z) G d< d=e)          Z* G d> d?e"e                   Z+ G d@ dAe+e                   Z, G dB dCe+e                   Z- G dD dEe+e                   Z. G dF dGe          Z/ G dH dIeee'          Z0 G dJ dKe!e0          Z1 G dL dMe1          Z2 G dN dOe2          Z3 G dP dQe          Z4 G dR dSe          Z5 G dT dUe5e4          Z6 G dV dWe4          Z7 G dX dYe          Z8 G dZ d[ee          Z9 G d\ d]e5          Z: G d^ d_e1          Z; G d` dae          Z< G db dce          Z= G dd dee5          Z> G df dge'          Z? G dh die          Z@ G dj dke@          ZAdlS )m    )annotations)Any)Generic)Optional)TYPE_CHECKING)TypeVar   )util)Literal   )_PropagateAttrsType)Label)_SelectIterable)
FromClause)Subquery_T)boundc                      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       P/var/www/html/t/fyr/venv311/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%   2   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'   7   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-   A   s        I'JJJr   r-   c                      e Zd ZdZdZdS )ColumnArgumentRoler   zColumn expressionNr(   r   r   r   r/   r/   F   s        I$JJJr   r/   c                      e Zd ZdZdZdS )ColumnArgumentOrKeyRoler   Column expression or string keyNr(   r   r   r   r1   r1   K           I2JJJr   r1   c                      e Zd ZdZdZdS )StrAsPlainColumnRoler   r2   Nr(   r   r   r   r5   r5   P   r3   r   r5   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   r7   r7   U   s        MMIIIr   r7   c                      e Zd ZdZdZdS )
StringRolez/mixin indicating a role that results in stringsr   Nr8   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<   a   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_iterablel   s    !###r   N)r?   r   )r   r   r   r   r)   propertyrF   r   r   r   r>   r>   f   sA        II  $ $ $ X$ $ $r   r>   c                      e Zd ZdZdZdS )TypedColumnsClauseRolez'element-typed form of ColumnsClauseRoler   Nr8   r   r   r   rI   rI   q   s        11IIIr   rI   c                      e Zd ZdZdZdS )LimitOffsetRoler   zLIMIT / OFFSET expressionNr(   r   r   r   rK   rK   w   s        I,JJJr   rK   c                      e Zd ZdZdZdS )ByOfRoler   zGROUP BY / OF / etc. expressionNr(   r   r   r   rM   rM   |   r3   r   rM   c                      e Zd ZdZdZdS )GroupByRoler   zGROUP BY expressionNr(   r   r   r   rO   rO      s        I
 'JJJr   rO   c                      e Zd ZdZdZdS )OrderByRoler   zORDER BY expressionNr(   r   r   r   rQ   rQ      s        I&JJJr   rQ   c                      e Zd ZdZdS )StructuralRoler   Nr   r   r   r   r   r   r   rS   rS              IIIr   rS   c                      e Zd ZdZdZdS )StatementOptionRoler   z statement sub-expression elementNr(   r   r   r   rW   rW      s        I3JJJr   rW   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   rY   rY      s        I	% JJr   rY   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]r?   	Label[_T]c                    t                      rA   rB   )rE   r^   s     r   labelzExpressionElementRole.label   s    !###r   N)r^   r_   r?   r`   )r   r   r   r   r)   rb   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   rd   rd      s        I6JJJr   rd   c                      e Zd ZdZdS )LabeledColumnExprRoler   NrT   r   r   r   rf   rf      rU   r   rf   c                      e Zd ZdZdZdS )BinaryElementRoler   z'SQL expression element or literal valueNr(   r   r   r   rh   rh      s        I:JJJr   rh   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   rj   rj      s        II JJr   rj   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   rl   rl      s        I	! JJr   rl   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   rn   rn      s-         IEJLr   rn   c                      e Zd ZdZdS )StrictFromClauseRoler   NrT   r   r   r   rs   rs      rU   r   rs   c                  *    e Zd ZdZer
dddddZdS dS )AnonymizedFromClauseRoler   NF)r^   flatr^   r_   rv   ro   r?   r   c                   d S rA   r   )rE   r^   rv   s      r   _anonymous_fromclausez.AnonymizedFromClauseRole._anonymous_fromclause   s	     Cr   )r^   r_   rv   ro   r?   r   )r   r   r   r   r   rx   r   r   r   ru   ru      sP        I  ,0e	 	 	 	 	 	 	 	 r   ru   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   rz   rz      s        I	. JJr   rz   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() constructr?   r   c                    d S rA   r   rD   s    r   _propagate_attrszStatementRole._propagate_attrs   s    Cr   N)r?   r   )
r   r   r   r   r)   r   r
   memoized_propertyr~   
EMPTY_DICTr   r   r   r|   r|      sX        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() constructr?   r   c                     t          d          )NzFAll SelectStatementRole objects should implement a .subquery() method.rB   rD   s    r   subqueryzSelectStatementRole.subquery  s    !"
 
 	
r   N)r?   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   NrT   r   r   r   r   r   
  rU   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   NrT   r   r   r   r   r     rU   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   NrT   r   r   r   r   r   2  rU   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   6  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)B
__future__r   typingr   r   r   r   r    r
   util.typingr   _typingr   elementsr   
selectabler   r   r   r   r   r!   r%   r'   r+   r-   r/   r1   r5   r7   r:   r<   r>   rI   rK   rM   rO   rQ   rS   rW   rY   r[   r]   rd   rf   rh   rj   rl   rn   rs   ru   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>r      s   # " " " " "                                           ! ! ! ! ! ! %,,,,,,++++++&&&&&&$$$$$$WT                      
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 ) ) )
$ $ $ $ $(.. $ $ $    WR['   - - - - -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
$ $ $ $ $226 $ $ $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   