Ë
    ðmxiî  ã                  óÞ  — 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«      ZByo)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y)Ú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__Ú	__slots__Úallows_lambdaÚuses_inspectionr   ó    úK/home/htdocs/ttos/venv/lib/python3.12/site-packages/sqlalchemy/sql/roles.pyr   r      s   „ ñð €IØ€MØ�Or    r   c                  ó$   — e Zd ZU dZdZded<   dZy)ÚUsesInspectionr   NzLiteral[None]Ú_post_inspectT)r   r   r   r   r$   Ú__annotations__r   r   r    r!   r#   r#   -   s   … Ø€IØ#'€M�=Ó'Ø�Or    r#   c                  ó   — e Zd ZdZdZy)ÚAllowsLambdaRoler   TN)r   r   r   r   r   r   r    r!   r'   r'   3   s   „ Ø€IØ�Mr    r'   c                  ó   — e Zd ZdZdZy)ÚHasCacheKeyRoler   zCacheable Core or ORM objectN©r   r   r   r   Ú
_role_namer   r    r!   r)   r)   8   s   „ Ø€IØ/�Jr    r)   c                  ó   — e Zd ZdZdZy)ÚExecutableOptionRoler   z"ExecutionOption Core or ORM objectNr*   r   r    r!   r-   r-   =   s   „ Ø€IØ5�Jr    r-   c                  ó   — e Zd ZdZdZy)ÚLiteralValueRoler   zLiteral Python valueNr*   r   r    r!   r/   r/   B   s   „ Ø€IØ'�Jr    r/   c                  ó   — e Zd ZdZdZy)ÚColumnArgumentRoler   zColumn expressionNr*   r   r    r!   r1   r1   G   s   „ Ø€IØ$�Jr    r1   c                  ó   — e Zd ZdZdZy)ÚColumnArgumentOrKeyRoler   úColumn expression or string keyNr*   r   r    r!   r3   r3   L   ó   „ Ø€IØ2�Jr    r3   c                  ó   — e Zd ZdZdZy)ÚStrAsPlainColumnRoler   r4   Nr*   r   r    r!   r7   r7   Q   r5   r    r7   c                  ó   — e Zd ZdZdZy)ÚColumnListRolezCElements suitable for forming comma separated lists of expressions.r   N©r   r   r   r   r   r   r    r!   r9   r9   V   s
   „ ÙMà�Ir    r9   c                  ó   — e Zd ZdZdZy)Ú
StringRolez/mixin indicating a role that results in stringsr   Nr:   r   r    r!   r<   r<   \   s
   „ Ù9à�Ir    r<   c                  ó   — e Zd ZdZdZy)ÚTruncatedLabelRoler   zString SQL identifierNr*   r   r    r!   r>   r>   b   s   „ Ø€IØ(�Jr    r>   c                  ó&   — e Zd ZdZdZedd„«       Zy)ÚColumnsClauseRoler   z?Column expression, FROM clause, or other columns clause elementc                ó   — t        «       ‚©N©ÚNotImplementedError©Úselfs    r!   Ú_select_iterablez"ColumnsClauseRole._select_iterablem   s   € ä!Ó#Ð#r    N)Úreturnr   )r   r   r   r   r+   ÚpropertyrG   r   r    r!   r@   r@   g   s#   „ Ø€IàIð ð ò$ó ñ$r    r@   c                  ó   — e Zd ZdZdZy)ÚTypedColumnsClauseRolez'element-typed form of ColumnsClauseRoler   Nr:   r   r    r!   rK   rK   r   s
   „ Ù1à�Ir    rK   c                  ó   — e Zd ZdZdZy)ÚLimitOffsetRoler   zLIMIT / OFFSET expressionNr*   r   r    r!   rM   rM   x   s   „ Ø€IØ,�Jr    rM   c                  ó   — e Zd ZdZdZy)ÚByOfRoler   zGROUP BY / OF / etc. expressionNr*   r   r    r!   rO   rO   }   r5   r    rO   c                  ó   — e Zd ZdZdZy)ÚGroupByRoler   zGROUP BY expressionNr*   r   r    r!   rQ   rQ   ‚   s   „ Ø€Ið
 '�Jr    rQ   c                  ó   — e Zd ZdZdZy)ÚOrderByRoler   zORDER BY expressionNr*   r   r    r!   rS   rS   ‹   s   „ Ø€IØ&�Jr    rS   c                  ó   — e Zd ZdZy)ÚStructuralRoler   N©r   r   r   r   r   r    r!   rU   rU   �   ó   „ Ø�Ir    rU   c                  ó   — e Zd ZdZdZy)ÚStatementOptionRoler   z statement sub-expression elementNr*   r   r    r!   rY   rY   ”   s   „ Ø€IØ3�Jr    rY   c                  ó   — e Zd ZdZdZy)ÚOnClauseRoler   zCON clause, typically a SQL expression or ORM relationship attributeNr*   r   r    r!   r[   r[   ™   s   „ Ø€Ið	%ñ r    r[   c                  ó   — e Zd ZdZdZy)ÚWhereHavingRoler   z$SQL expression for WHERE/HAVING roleNr*   r   r    r!   r]   r]   ¡   s   „ Ø€IØ7�Jr    r]   c                  ó   — e Zd ZdZdZdd„Zy)ÚExpressionElementRoler   zSQL expression elementc                ó   — t        «       ‚rB   rC   )rF   Únames     r!   ÚlabelzExpressionElementRole.label°   s   € Ü!Ó#Ð#r    N)ra   úOptional[str]rH   z	Label[_T])r   r   r   r   r+   rb   r   r    r!   r_   r_   ¦   s   „ ð €IØ)€Jô$r    r_   c                  ó   — e Zd ZdZdZy)ÚConstExprRoler   z#Constant True/False/None expressionNr*   r   r    r!   re   re   ´   s   „ Ø€IØ6�Jr    re   c                  ó   — e Zd ZdZy)ÚLabeledColumnExprRoler   NrV   r   r    r!   rg   rg   ¹   rW   r    rg   c                  ó   — e Zd ZdZdZy)ÚBinaryElementRoler   z'SQL expression element or literal valueNr*   r   r    r!   ri   ri   ½   s   „ Ø€IØ:�Jr    ri   c                  ó   — e Zd ZdZdZy)ÚInElementRoler   z?IN expression list, SELECT construct, or bound parameter objectNr*   r   r    r!   rk   rk   Â   s   „ Ø€IàIñ r    rk   c                  ó   — e Zd ZdZdZy)ÚJoinTargetRoler   zGJoin target, typically a FROM expression, or ORM relationship attributeNr*   r   r    r!   rm   rm   É   s   „ Ø€Ið	!ñ r    rm   c                  ó$   — e Zd ZU dZdZdZded<   y)ÚFromClauseRoler   z2FROM expression, such as a Table or alias() objectFÚboolÚnamed_with_columnN)r   r   r   r   r+   Ú_is_subqueryr%   r   r    r!   ro   ro   Ñ   s   … Ø€IØE€Jà€LàÔr    ro   c                  ó   — e Zd ZdZy)ÚStrictFromClauseRoler   NrV   r   r    r!   rt   rt   Ú   rW   r    rt   c                  ó0   — e Zd ZdZerdddœ	 	 	 	 	 dd„Zyy)ÚAnonymizedFromClauseRoler   NF)ra   Úflatc                ó   — y rB   r   )rF   ra   rw   s      r!   Ú_anonymous_fromclausez.AnonymizedFromClauseRole._anonymous_fromclauseä   s   € àr    )ra   rc   rw   rp   rH   r   )r   r   r   r   r   ry   r   r    r!   rv   rv   ß   s3   „ Ø€Iáð ,0¸eñ	Ø(ð	Ø7;ð	àô	ð r    rv   c                  ó   — e Zd ZdZdZy)Ú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ð	.ñ r    r{   c                  óX   — e Zd ZdZdZerej                  dd„«       Zyej                  Zy)ÚStatementRoler   z"Executable SQL or text() constructc                 ó   — y rB   r   rE   s    r!   Ú_propagate_attrszStatementRole._propagate_attrs÷   s   € Ø;>r    N)rH   r   )
r   r   r   r   r+   r   r
   Úmemoized_propertyr   Ú
EMPTY_DICTr   r    r!   r}   r}   ñ   s/   „ Ø€IØ5€Jáà	×	Ñ	Ú>ó 
 Ù>ð  Ÿ?™?Ñr    r}   c                  ó   — e Zd ZdZdZdd„Zy)ÚSelectStatementRoler   z/SELECT construct or equivalent text() constructc                ó   — t        d«      ‚)NzFAll SelectStatementRole objects should implement a .subquery() method.rC   rE   s    r!   ÚsubqueryzSelectStatementRole.subquery  s   € Ü!ð"ó
ð 	
r    N)rH   r   )r   r   r   r   r+   r…   r   r    r!   rƒ   rƒ   þ   s   „ Ø€IØB€Jô
r    rƒ   c                  ó   — e Zd ZdZy)Ú
HasCTERoler   NrV   r   r    r!   r‡   r‡   	  rW   r    r‡   c                  ó   — e Zd ZdZdZy)Ú	IsCTERoler   z
CTE objectNr*   r   r    r!   r‰   r‰     s   „ Ø€IØ�Jr    r‰   c                  ó   — e Zd ZdZdZdZy)Ú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à€IàJñ r    r‹   c                  ó   — e Zd ZdZy)ÚDMLRoler   NrV   r   r    r!   rŽ   rŽ     rW   r    rŽ   c                  ó   — e Zd ZdZdZy)ÚDMLTableRoler   z-subject table for an INSERT, UPDATE or DELETENr*   r   r    r!   r�   r�      s   „ Ø€IØ@�Jr    r�   c                  ó   — e Zd ZdZdZy)ÚDMLColumnRoler   z*SET/VALUES column expression or string keyNr*   r   r    r!   r’   r’   %  s   „ Ø€IØ=�Jr    r’   c                  ó   — e Zd ZdZdZdZy)Ú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à€IØ@�Jr    r”   c                  ó   — e Zd ZdZy)ÚDDLRoler   NrV   r   r    r!   r–   r–   1  rW   r    r–   c                  ó   — e Zd ZdZdZy)ÚDDLExpressionRoler   z)SQL expression element for DDL constraintNr*   r   r    r!   r˜   r˜   5  s   „ Ø€IØ<�Jr    r˜   c                  ó   — e Zd ZdZdZy)ÚDDLConstraintColumnRoler   z:String column name or column expression for DDL constraintNr*   r   r    r!   rš   rš   :  s   „ Ø€IØM�Jr    rš   c                  ó   — e Zd ZdZdZy)ÚDDLReferredColumnRoler   zBString column name or Column object for DDL foreign key constraintNr*   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)   r-   r/   r1   r3   r7   r9   r<   r>   r@   rK   rM   rO   rQ   rS   rU   rY   r[   r]   r_   re   rg   ri   rk   rm   ro   rt   rv   r{   r}   rƒ   r‡   r‰   r‹   rŽ   r�   r’   r”   r–   r˜   rš   rœ   r   r    r!   ú<module>r¤      s¨  ðõ #å Ý Ý Ý  Ý å Ý !áÝ,ÝÝ+Ý&Ý$áˆT˜Ô€Ù�˜s¨dÔ3€÷ñ ÷ ñ ÷ñ ô
0�gô 0ô
6˜7ô 6ô
(�wô (ô
%˜ô %ô
3Ð0ô 3ô
3Ð-ô 3ô
�Wô ô�ô ô)˜ Wô )ô
$Ð(¨.¸.ô $ô˜W U™^¨Wô ô-�gô -ô
3ˆ~ô 3ô
'Ð" N°Hô 'ô'Ð" Hô 'ô
�Wô ô4˜.ô 4ô
Ð# ^ô ô8�lô 8ô
$Ð2°5Ñ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    