
    ,h                       S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  SSKJ	r	  SS	K
Jr  \(       a  S
SKJr  S
SKJr  S
SKJr  S
SKJr  S
SKJr  \" S\S9r\" S\SS9r " S S5      r " S S5      r " S S5      r " S S\5      r " S S\5      r " S S \5      r " S! S"\5      r " S# S$\5      r " S% S&\5      r " S' S(\5      r " S) S*\5      r  " S+ S,\ \5      r! " S- S.\\\5      r" " S/ S0\\   \5      r# " S1 S2\5      r$ " S3 S4\5      r% " S5 S6\\\%5      r& " S7 S8\\%5      r' " S9 S:\5      r( " S; S<\(5      r) " S= S>\\(5      r* " S? S@\*5      r+ " SA SB\#\   5      r, " SC SD\,\   5      r- " SE SF\,\   5      r. " SG SH\,\   5      r/ " SI SJ\5      r0 " SK SL\\\(5      r1 " SM SN\"\15      r2 " SO SP\25      r3 " SQ SR\35      r4 " SS ST\5      r5 " SU SV\5      r6 " SW SX\6\55      r7 " SY SZ\55      r8 " S[ S\\5      r9 " S] S^\\5      r: " S_ S`\65      r; " Sa Sb\25      r< " Sc Sd\5      r= " Se Sf\5      r> " Sg Sh\65      r? " Si Sj\(5      r@ " Sk Sl\5      rA " Sm Sn\A5      rBgo)p    )annotations)Any)Generic)Optional)TYPE_CHECKING)TypeVar   )util)Literal   )_PropagateAttrsType)Label)_SelectIterable)
FromClause)Subquery_T)bound_T_coT)r   	covariantc                  $    \ rS rSrSrSrSrSrSrg)SQLRole   zDefine 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____firstlineno____doc__	__slots__allows_lambdauses_inspection__static_attributes__r       L/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/sql/roles.pyr   r      s     IMOr#   r   c                  ,    \ rS rSr% SrSrS\S'   SrSrg)UsesInspection-   r   NzLiteral[None]_post_inspectT)	r   r   r   r   r   r(   __annotations__r!   r"   r   r#   r$   r&   r&   -   s    I#'M='Or#   r&   c                      \ rS rSrSrSrSrg)AllowsLambdaRole3   r   TN)r   r   r   r   r   r    r"   r   r#   r$   r+   r+   3   s    IMr#   r+   c                      \ rS rSrSrSrSrg)HasCacheKeyRole8   r   zCacheable Core or ORM objectNr   r   r   r   r   
_role_namer"   r   r#   r$   r.   r.   8   s    I/Jr#   r.   c                      \ rS rSrSrSrSrg)ExecutableOptionRole=   r   z"ExecutionOption Core or ORM objectNr0   r   r#   r$   r3   r3   =   s    I5Jr#   r3   c                      \ rS rSrSrSrSrg)LiteralValueRoleB   r   zLiteral Python valueNr0   r   r#   r$   r6   r6   B   s    I'Jr#   r6   c                      \ rS rSrSrSrSrg)ColumnArgumentRoleG   r   zColumn expressionNr0   r   r#   r$   r9   r9   G   s    I$Jr#   r9   c                      \ rS rSrSrSrSrg)ColumnArgumentOrKeyRoleL   r   Column expression or string keyNr0   r   r#   r$   r<   r<   L       I2Jr#   r<   c                      \ rS rSrSrSrSrg)StrAsPlainColumnRoleQ   r   r>   Nr0   r   r#   r$   rA   rA   Q   r?   r#   rA   c                      \ rS rSrSrSrSrg)ColumnListRoleV   zCElements suitable for forming comma separated lists of expressions.r   Nr   r   r   r   r   r   r"   r   r#   r$   rD   rD   V   s
    MIr#   rD   c                      \ rS rSrSrSrSrg)
StringRole\   z/mixin indicating a role that results in stringsr   NrF   r   r#   r$   rH   rH   \   s
    9Ir#   rH   c                      \ rS rSrSrSrSrg)TruncatedLabelRoleb   r   zString SQL identifierNr0   r   r#   r$   rK   rK   b   s    I(Jr#   rK   c                  0    \ rS rSrSrSr\SS j5       rSrg)ColumnsClauseRoleg   r   z?Column expression, FROM clause, or other columns clause elementc                    [        5       eNNotImplementedErrorselfs    r$   _select_iterable"ColumnsClauseRole._select_iterablem   s    !##r#   N)returnr   )	r   r   r   r   r   r1   propertyrV   r"   r   r#   r$   rN   rN   g   s#    II  $ $r#   rN   c                      \ rS rSrSrSrSrg)TypedColumnsClauseRoler   z'element-typed form of ColumnsClauseRoler   NrF   r   r#   r$   r[   r[   r   s
    1Ir#   r[   c                      \ rS rSrSrSrSrg)LimitOffsetRolex   r   zLIMIT / OFFSET expressionNr0   r   r#   r$   r^   r^   x   s    I,Jr#   r^   c                      \ rS rSrSrSrSrg)ByOfRole}   r   zGROUP BY / OF / etc. expressionNr0   r   r#   r$   ra   ra   }   r?   r#   ra   c                      \ rS rSrSrSrSrg)GroupByRole   r   zGROUP BY expressionNr0   r   r#   r$   rd   rd      s    I
 'Jr#   rd   c                      \ rS rSrSrSrSrg)OrderByRole   r   zORDER BY expressionNr0   r   r#   r$   rg   rg      s    I&Jr#   rg   c                      \ rS rSrSrSrg)StructuralRole   r   Nr   r   r   r   r   r"   r   r#   r$   rj   rj          Ir#   rj   c                      \ rS rSrSrSrSrg)StatementOptionRole   r   z statement sub-expression elementNr0   r   r#   r$   ro   ro      s    I3Jr#   ro   c                      \ rS rSrSrSrSrg)OnClauseRole   r   zCON clause, typically a SQL expression or ORM relationship attributeNr0   r   r#   r$   rr   rr      s    I	% r#   rr   c                      \ rS rSrSrSrSrg)WhereHavingRole   r   z$SQL expression for WHERE/HAVING roleNr0   r   r#   r$   ru   ru      s    I7Jr#   ru   c                  &    \ rS rSrSrSrSS jrSrg)ExpressionElementRole   r   zSQL expression elementc                    [        5       erQ   rR   )rU   names     r$   labelExpressionElementRole.label   s    !##r#   N)r{   Optional[str]rX   z	Label[_T])r   r   r   r   r   r1   r|   r"   r   r#   r$   rx   rx      s     I)J$r#   rx   c                      \ rS rSrSrSrSrg)ConstExprRole   r   z#Constant True/False/None expressionNr0   r   r#   r$   r   r      s    I6Jr#   r   c                      \ rS rSrSrSrg)LabeledColumnExprRole   r   Nrl   r   r#   r$   r   r      rm   r#   r   c                      \ rS rSrSrSrSrg)BinaryElementRole   r   z'SQL expression element or literal valueNr0   r   r#   r$   r   r      s    I:Jr#   r   c                      \ rS rSrSrSrSrg)InElementRole   r   z?IN expression list, SELECT construct, or bound parameter objectNr0   r   r#   r$   r   r      s    II r#   r   c                      \ rS rSrSrSrSrg)JoinTargetRole   r   zGJoin target, typically a FROM expression, or ORM relationship attributeNr0   r   r#   r$   r   r      s    I	! r#   r   c                  ,    \ rS rSr% SrSrSrS\S'   Srg)FromClauseRole   r   z2FROM expression, such as a Table or alias() objectFboolnamed_with_columnN)	r   r   r   r   r   r1   _is_subqueryr)   r"   r   r#   r$   r   r      s    IEJLr#   r   c                      \ rS rSrSrSrg)StrictFromClauseRole   r   Nrl   r   r#   r$   r   r      rm   r#   r   c                  J    \ rS rSrSr\(       a  SSS.     SS jjrSrgSrg)AnonymizedFromClauseRole   r   NF)r{   flatc                   g rQ   r   )rU   r{   r   s      r$   _anonymous_fromclause.AnonymizedFromClauseRole._anonymous_fromclause   s    r#   )r{   r~   r   r   rX   r   )r   r   r   r   r   r   r   r"   r   r#   r$   r   r      s8    I ,0e	(	7;		 	 r#   r   c                      \ rS rSrSrSrSrg)ReturnsRowsRole   r   zcRow returning expression such as a SELECT, a FROM clause, or an INSERT/UPDATE/DELETE with RETURNINGNr0   r   r#   r$   r   r      s    I	. r#   r   c                  p    \ rS rSrSrSr\(       a  \R                  SS j5       r	Srg\R                  r	Srg)StatementRole   r   z"Executable SQL or text() constructc                    g rQ   r   rT   s    r$   _propagate_attrsStatementRole._propagate_attrs   s    ;>r#   N)rX   r   )r   r   r   r   r   r1   r   r
   memoized_propertyr   
EMPTY_DICTr"   r   r#   r$   r   r      s/    I5J			> 
 >  ??r#   r   c                  &    \ rS rSrSrSrSS jrSrg)SelectStatementRole   r   z/SELECT construct or equivalent text() constructc                    [        S5      e)NzFAll SelectStatementRole objects should implement a .subquery() method.rR   rT   s    r$   subquerySelectStatementRole.subquery  s    !"
 	
r#   N)rX   r   )r   r   r   r   r   r1   r   r"   r   r#   r$   r   r      s    IBJ
r#   r   c                      \ rS rSrSrSrg)
HasCTERolei	  r   Nrl   r   r#   r$   r   r   	  rm   r#   r   c                      \ rS rSrSrSrSrg)	IsCTERolei  r   z
CTE objectNr0   r   r#   r$   r   r     s    IJr#   r   c                       \ rS rSrSrSrSrSrg)CompoundElementRolei  zDSELECT 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   r1   r"   r   r#   r$   r   r     s    NIJ r#   r   c                      \ rS rSrSrSrg)DMLRolei  r   Nrl   r   r#   r$   r   r     rm   r#   r   c                      \ rS rSrSrSrSrg)DMLTableRolei   r   z-subject table for an INSERT, UPDATE or DELETENr0   r   r#   r$   r   r      s    I@Jr#   r   c                      \ rS rSrSrSrSrg)DMLColumnRolei%  r   z*SET/VALUES column expression or string keyNr0   r   r#   r$   r   r   %  s    I=Jr#   r   c                       \ rS rSrSrSrSrSrg)DMLSelectRolei*  z@A SELECT statement embedded in DML, typically INSERT from SELECTr   z-SELECT statement or equivalent textual objectNr   r   r#   r$   r   r   *  s    JI@Jr#   r   c                      \ rS rSrSrSrg)DDLRolei1  r   Nrl   r   r#   r$   r   r   1  rm   r#   r   c                      \ rS rSrSrSrSrg)DDLExpressionRolei5  r   z)SQL expression element for DDL constraintNr0   r   r#   r$   r   r   5  s    I<Jr#   r   c                      \ rS rSrSrSrSrg)DDLConstraintColumnRolei:  r   z:String column name or column expression for DDL constraintNr0   r   r#   r$   r   r   :  s    IMJr#   r   c                      \ rS rSrSrSrSrg)DDLReferredColumnRolei?  r   zBString column name or Column object for DDL foreign key constraintNr0   r   r#   r$   r   r   ?  s    IL r#   r   N)C
__future__r   typingr   r   r   r   r    r
   util.typingr   _typingr   elementsr   
selectabler   r   r   r   r   r   r&   r+   r.   r3   r6   r9   r<   rA   rD   rH   rK   rN   r[   r^   ra   rd   rg   rj   ro   rr   ru   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r$   <module>r      s   #        !,+&$Tsd3    
0g 0
67 6
(w (
% %
30 3
3- 3
W  )W )
$(.. $WU^W -g -
3~ 3
'"NH ''"H '
W 4. 4
#^ 8l 8
$259 $7)"- 7
1"5 ;-b1 ;
G %~~ & > 
3 g 
+G 
+
- 
  
*G m A> A
>G >
AG Am = =
Ng N
3 r#   