L iddlmZddlmZddlmZddlmZddlmZddlmZddlm Z dd l m Z erd d l m Z d d lmZd d lmZd dlmZd dlmZedeZededZGddZGddZGddZGddeZGddeZGdd eZGd!d"eZGd#d$eZGd%d&eZGd'd(eZGd)d*eZ Gd+d,e eZ!Gd-d.eeeZ"Gd/d0eeeZ#Gd1d2eZ$Gd3d4eZ%Gd5d6eee%Z&Gd7d8ee%Z'Gd9d:eZ(Gd;dee(Z*Gd?d@e*Z+GdAdBe#eZ,GdCdDe,eZ-GdEdFe,eZ.GdGdHe,eZ/GdIdJeZ0GdKdLeee(Z1GdMdNe"e1Z2GdOdPe2Z3GdQdRe3Z4GdSdTeZ5GdUdVeZ6GdWdXe6e5Z7GdYdZe5Z8Gd[d\eZ9Gd]d^eeZ:Gd_d`e6Z;Gdadbe2Z<GdcddeZ=GdedfeZ>Gdgdhe6Z?Gdidje(Z@GdkdleZAGdmdneAZByo)p) annotations)Any)Generic)Optional) TYPE_CHECKING)TypeVar)util)Literal)_PropagateAttrsType)Label)_SelectIterable) FromClause)Subquery_T)bound_T_coT)r covariantceZdZdZdZdZdZy)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_lambdauses_inspectionrZ/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/sql/roles.pyrrsIMOr rc$eZdZUdZdZded<dZy)UsesInspectionrNz Literal[None] _post_inspectT)rrrrr$__annotations__rrr r!r#r#-sI#'M='Or r#ceZdZdZdZy)AllowsLambdaRolerTN)rrrrrrr r!r'r'3s IMr r'ceZdZdZdZy)HasCacheKeyRolerzCacheable Core or ORM objectNrrrr _role_namerr r!r)r)8s I/Jr r)ceZdZdZdZy)ExecutableOptionRolerz"ExecutionOption Core or ORM objectNr*rr r!r-r-=s I5Jr r-ceZdZdZdZy)LiteralValueRolerzLiteral Python valueNr*rr r!r/r/Bs I'Jr r/ceZdZdZdZy)ColumnArgumentRolerzColumn expressionNr*rr r!r1r1Gs I$Jr r1ceZdZdZdZy)ColumnArgumentOrKeyRolerColumn expression or string keyNr*rr r!r3r3L I2Jr r3ceZdZdZdZy)StrAsPlainColumnRolerr4Nr*rr r!r7r7Qr5r r7ceZdZdZdZy)ColumnListRolezCElements suitable for forming comma separated lists of expressions.rNrrrrrrr r!r9r9Vs MIr r9ceZdZdZdZy) StringRolez/mixin indicating a role that results in stringsrNr:rr r!r<r<\s 9Ir r<ceZdZdZdZy)TruncatedLabelRolerzString SQL identifierNr*rr r!r>r>bs I(Jr r>c&eZdZdZdZeddZy)ColumnsClauseRolerz?Column expression, FROM clause, or other columns clause elementctNNotImplementedErrorselfs r!_select_iterablez"ColumnsClauseRole._select_iterablems !##r N)returnr)rrrrr+propertyrGrr r!r@r@gs#II$$r r@ceZdZdZdZy)TypedColumnsClauseRolez'element-typed form of ColumnsClauseRolerNr:rr r!rKrKrs 1Ir rKceZdZdZdZy)LimitOffsetRolerzLIMIT / OFFSET expressionNr*rr r!rMrMxs I,Jr rMceZdZdZdZy)ByOfRolerzGROUP BY / OF / etc. expressionNr*rr r!rOrO}r5r rOceZdZdZdZy) GroupByRolerzGROUP BY expressionNr*rr r!rQrQsI 'Jr rQceZdZdZdZy) OrderByRolerzORDER BY expressionNr*rr r!rSrSs I&Jr rSceZdZdZy)StructuralRolerNrrrrrr r!rUrUIr rUceZdZdZdZy)StatementOptionRolerz statement sub-expression elementNr*rr r!rYrYs I3Jr rYceZdZdZdZy) OnClauseRolerzCON clause, typically a SQL expression or ORM relationship attributeNr*rr r!r[r[sI %r r[ceZdZdZdZy)WhereHavingRolerz$SQL expression for WHERE/HAVING roleNr*rr r!r]r]s I7Jr r]ceZdZdZdZddZy)ExpressionElementRolerzSQL expression elementctrBrC)rFnames r!labelzExpressionElementRole.labels !##r N)ra Optional[str]rHz Label[_T])rrrrr+rbrr r!r_r_sI)J$r r_ceZdZdZdZy) ConstExprRolerz#Constant True/False/None expressionNr*rr r!reres I6Jr receZdZdZy)LabeledColumnExprRolerNrVrr r!rgrgrWr rgceZdZdZdZy)BinaryElementRolerz'SQL expression element or literal valueNr*rr r!riris I:Jr riceZdZdZdZy) InElementRolerz?IN expression list, SELECT construct, or bound parameter objectNr*rr r!rkrksIIr rkceZdZdZdZy)JoinTargetRolerzGJoin target, typically a FROM expression, or ORM relationship attributeNr*rr r!rmrmsI !r rmc$eZdZUdZdZdZded<y)FromClauseRolerz2FROM expression, such as a Table or alias() objectFboolnamed_with_columnN)rrrrr+ _is_subqueryr%rr r!rorosIEJLr roceZdZdZy)StrictFromClauseRolerNrVrr r!rtrtrWr rtc0eZdZdZerddd ddZyy)AnonymizedFromClauseRolerNF)raflatcyrBr)rFrarws r!_anonymous_fromclausez.AnonymizedFromClauseRole._anonymous_fromclausesr )rarcrwrprHr)rrrrrryrr r!rvrvs3I,0e ( 7;   r rvceZdZdZdZy)ReturnsRowsRolerzcRow returning expression such as a SELECT, a FROM clause, or an INSERT/UPDATE/DELETE with RETURNINGNr*rr r!r{r{sI .r r{cXeZdZdZdZerejddZyejZy) StatementRolerz"Executable SQL or text() constructcyrBrrEs r!_propagate_attrszStatementRole._propagate_attrss;>r N)rHr ) rrrrr+rr memoized_propertyr EMPTY_DICTrr r!r}r}s/I5J  > > ??r r}ceZdZdZdZddZy)SelectStatementRolerz/SELECT construct or equivalent text() constructctd)NzFAll SelectStatementRole objects should implement a .subquery() method.rCrEs r!subqueryzSelectStatementRole.subquerys! "  r N)rHr)rrrrr+rrr r!rrsIBJ r rceZdZdZy) HasCTERolerNrVrr r!rr rWr rceZdZdZdZy) IsCTERolerz CTE objectNr*rr r!rr s IJr rceZdZdZdZdZy)CompoundElementRolezDSELECT statements inside a CompoundSelect, e.g. UNION, EXTRACT, etc.rz@SELECT construct for inclusion in a UNION or other set constructNrrrrrr+rr r!rrsNIJr rceZdZdZy)DMLRolerNrVrr r!rrrWr rceZdZdZdZy) DMLTableRolerz-subject table for an INSERT, UPDATE or DELETENr*rr r!rr s I@Jr rceZdZdZdZy) DMLColumnRolerz*SET/VALUES column expression or string keyNr*rr r!rr%s I=Jr rceZdZdZdZdZy) DMLSelectRolez@A SELECT statement embedded in DML, typically INSERT from SELECTrz-SELECT statement or equivalent textual objectNrrr r!rr*sJI@Jr rceZdZdZy)DDLRolerNrVrr r!rr1rWr rceZdZdZdZy)DDLExpressionRolerz)SQL expression element for DDL constraintNr*rr r!rr5s Ir@rKrMrOrQrSrUrYr[r]r_rergrirkrmrortrvr{r}rrrrrrrrrrrrrr r!rs# !,+&$ Tsd3     0g0 676 (w( %% 303 3-3 W  )W) $(..$WU^W -g- 3~3 '"NH''"H' W4.4 #^8l8 $259 $7)"-7 1"5;-b1; G%~~&> 3g +G + -  *GmA>A >G> AGAm== NgN 3r