zmc
2023-10-12 ed135d79df12a2466b52dae1a82326941211dcc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
U
¸ý°dª£ã    @sÄddlmZddlmZddlZddlZddlZddlmZddlm    Z    ddlm
Z
ddlm Z ddlm Z ddlm Z dd    lmZdd
lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddl!m"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&dd l'm(Z(ejr´dd!lm)Z)dd"lm*Z*dd#lm+Z+dd$lm,Z,dd%lm-Z-dd&lm.Z.dd'lm/Z/dd(lm0Z0dd)lm1Z1dd*l2m3Z3dd+l)m4Z4dd,l)m5Z5dd-l)m6Z6dd.l)m7Z7dd/l)m8Z8dd0l)m9Z9dd1l)m:Z:dd2l+m;Z;dd3l,m<Z<dd4l,m=Z=dd5l,m>Z>dd6l,m?Z?dd7l,m@Z@dd8l,mAZAdd9lmBZBed:ejCd;ZDed<e    d=efd;ZEed>ejFd;ZGed?ed;ZHd@dA„ZIdBdC„ZJdDdDdDdEdFœdGdH„ZKdDdDdIdJdKœdLdM„ZLedNdOdOdDdPœdQdR„ƒZMed=dSœdTdOdUdOdDdVœdWdR„ƒZMedXdOdOdYdPœdZdR„ƒZMed[dOdOd\dPœd]dR„ƒZMed^dOdOd_dPœd`dR„ƒZMedadOdOdbdPœdcdR„ƒZMedddedOdfdPœdgdR„ƒZMedhdedOdidPœdjdR„ƒZMedkdOdOdldPœdmdR„ƒZMedndodOdpdPœdqdR„ƒZMedrdsdOdsdPœdtdR„ƒZMedudvdOdvdPœdwdR„ƒZMedxdydOdzdPœd{dR„ƒZMed=d|œdxdvdUdOd}d~œddR„ƒZMed€ddOd‚dPœdƒdR„ƒZMed„d…dOd…dPœd†dR„ƒZMed‡dOdOdOdPœdˆdR„ƒZMddd‰dŠœd‡dOd‹dŒddOdOdŽœddR„ZMdTdOdOdDdPœdd‘„ZNd^d’d“d”œd•d–„ZOGd—d˜„d˜ƒZPGd™dš„dšƒZQGd›dœ„dœƒZRGddž„džePƒZSGdŸd „d ePƒZTde$jUddfdOdŒd¡dŒd¢d£d¤œd¥d¦„ZVGd§d¨„d¨ePƒZWGd©dª„dªePƒZXGd«d¬„d¬ePƒZYGd­d®„d®ePƒZZGd¯d°„d°ePƒZ[Gd±d²„d²ePƒZ\Gd³d´„d´eTePƒZ]Gdµd¶„d¶e]ePƒZ^Gd·d¸„d¸ePƒZ_Gd¹dº„dºeTePƒZ`Gd»d¼„d¼eXeTePƒZaGd½d¾„d¾eXePƒZbGd¿dÀ„dÀeWePƒZcGdÁd„dÂeSePƒZdGdÃdĄdÄeXePƒZeGdÅdƄdÆeXeTePejfƒZgGdÇdȄdÈegePƒZhGdÉdʄdÊegePƒZiGdËd̄dÌeSePƒZjGdÍd΄dÎePƒZkGdÏdЄdÐeRePƒZlGdÑd҄dÒeQeXePƒZmGdÓdԄdÔeQeSePƒZnGdÕdքdÖenƒZoGd×d؄dØePƒZpGdÙdڄdÚe]ƒZqGdÛd܄dÜeZeXePƒZrGdÝdބdÞePƒZsGdßdà„dàeXePƒZtGdádâ„dâeWePƒZuGdãdä„däesƒZvGdådæ„dæePƒZwGdçdè„dèePƒZxGdédê„dêeZeWePƒZyGdëdì„dìeyƒZzGdídî„dîezƒZ{Gdïdð„dðeZeWePƒZ|Gdñdò„dòeWePƒZ}Gdódô„dôeWePƒZ~iZe€eƒD]JZe‚eeƒZƒe „dõ¡rBe …dõdö¡Zee†ƒkrBe†ƒeeƒƒZ‡e‡eeƒ<qBesÀeejˆZ‰eŠe‹eŒefD]ZŽe‰eejˆeŽ<qªdS)÷é)Ú annotationsN)ÚAny)ÚCallable)Úcast)ÚDict)ÚIterable)ÚIterator)ÚList)ÚNoReturn)ÚOptional)Úoverload)ÚSequence)ÚTuple)ÚType)Ú TYPE_CHECKING)ÚTypeVar)ÚUnioné)Ú    operators)Úroles)Úvisitors)Úis_from_clause)ÚExecutableOption)ÚOptions)Ú HasCacheKey)Ú    Visitableé)Úexc)Ú
inspection)Úutil)ÚLiteral)Úelements)Úlambdas)Úschema)Ú
selectable)Ú_ColumnExpressionArgument)Ú_ColumnsClauseArgument)Ú_DDLColumnArgument)Ú_DMLTableArgument)Ú_FromClauseArgument)Ú_DMLTableElement)Ú BindParameter)Ú ClauseElement)Ú ColumnClause)Ú ColumnElement)ÚDQLDMLClauseElement)Ú NamedColumn)ÚSQLCoreOperations)ÚColumn)Ú_ColumnsClauseElement)Ú_JoinTargetProtocol)Ú
FromClause)ÚHasCTE)Ú
SelectBase)ÚSubquery)Ú_TraverseCallableTypeÚ_SR)ÚboundÚ_F.Ú _StringOnlyRÚ_TcCst|ttjfƒ ot|dƒ S)zhReturn whether or not the element is a "literal" in the context
    of a SQL expression construct.
 
    Ú__clause_element__)Ú
isinstancerr#ÚSchemaEventTargetÚhasattr)Úelement©rDúOd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/sql/coercions.pyÚ _is_literalOs þ
ýrFcCsrt|tjƒr2t|tƒs2|D]}t|ƒsdSqdSt|ttjtt    t
j j fƒ opt |dƒ opt|tƒ ppt|tƒ S)aReturn whether or not the element is a "literal" in the context
    of a SQL expression construct.
 
    does a deeper more esoteric check than _is_literal.   is used
    for lambda elements that have to distinguish values that would
    be bound vs. not without any context.
 
    FTr?)r@Úcollections_abcr ÚstrÚ_deep_is_literalrr#rArrrZ langhelpersÚsymbolrBÚtypeÚ
issubclass)rCÚelemrDrDrErI[s,
ÿûþ
 
ö 
òrIrHzCallable[[_F], _F])Ú    paramnameÚmeth_rstÚ    param_rstÚreturncCst |d||f¡S)NzÆ.. warning:: The %s argument to %s can be passed as a Python string argument, which will be treated as **trusted SQL text** and rendered as given.  **DO NOT PASS UNTRUSTED INPUT TO THIS PARAMETER**.)rZadd_parameter_text)rNrOrPrDrDrEÚ_document_text_coercions ùþrRz+Union[Sequence[_T], Sequence[Sequence[_T]]]ú Sequence[_T])ÚattrnameÚfnnameÚargsrQcCsb|rXt|dtttfƒrXt|ƒdkrXt|dtƒrJt d|›d|›d¡‚td|dƒStd|ƒS)NrrzThe "z" argument to zt(), when referring to a sequence of items, is now passed as a series of positional elements, rather than as a list. rS)r@ÚlistÚsetÚdictÚlenrÚ ArgumentErrorr)rTrUrVrDrDrEÚ!_expression_collection_was_a_list‘s$ÿr\zType[roles.TruncatedLabelRole]r)ÚrolerCÚkwrQcKsdS©NrD©r]rCr^rDrDrEÚexpect£sra)Úas_keyzType[roles.DMLColumnRole]z Literal[True])r]rCrbr^rQcKsdSr_rD)r]rCrbr^rDrDrEra¬szType[roles.LiteralValueRole]zBindParameter[Any]cKsdSr_rDr`rDrDrEra·sz!Type[roles.DDLReferredColumnRole]z Column[Any]cKsdSr_rDr`rDrDrEraÀsz#Type[roles.DDLConstraintColumnRole]zUnion[Column[Any], str]cKsdSr_rDr`rDrDrEraÉszType[roles.StatementOptionRole]r/cKsdSr_rDr`rDrDrEraÒsz&Type[roles.LabeledColumnExprRole[Any]]z_ColumnExpressionArgument[_T]zNamedColumn[_T]cKsdSr_rDr`rDrDrEraÛszgUnion[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole]]zColumnElement[_T]cKsdSr_rDr`rDrDrEraäs
z¡Union[Type[roles.ExpressionElementRole[Any]], Type[roles.LimitOffsetRole], Type[roles.WhereHavingRole], Type[roles.OnClauseRole], Type[roles.ColumnArgumentRole]]zColumnElement[Any]cKsdSr_rDr`rDrDrErañs zType[roles.DMLTableRole]r(r*cKsdSr_rDr`rDrDrEraszType[roles.HasCTERole]r6cKsdSr_rDr`rDrDrEra    szType[roles.SelectStatementRole]r7cKsdSr_rDr`rDrDrEraszType[roles.FromClauseRole]r)r5cKsdSr_rDr`rDrDrEras)Úexplicit_subqueryr8)r]rCrcr^rQcKsdSr_rD)r]rCrcr^rDrDrEra$szType[roles.ColumnsClauseRole]z_ColumnsClauseArgument[Any]r3cKsdSr_rDr`rDrDrEra/szType[roles.JoinTargetRole]r4cKsdSr_rDr`rDrDrEra8sz    Type[_SR]cKsdSr_rDr`rDrDrEraBsF)Úapply_propagate_attrsÚargnameÚ post_inspectzOptional[ClauseElement]ú Optional[str]Úbool)r]rCrdrerfr^rQc Ksú|jr2t|ƒr2t|dƒr2tj||tjf|Ž|dSt|}|}t|tj    t
j t
j tj fƒsLd}|jrt|j|f|Ž}nÖ|}d}    |jrœt||ƒrœt|dƒrœd}    n(t|dƒrÄd}    t|ddƒsÄ| ¡}qœqÄqœ|    sF|jr$tj|dd}
|
dk    r$|rô|
jz |
 ¡}Wn"tk
r"| ||¡YnX|dkrJ|j|fd|i|—Ž}n|}n t|tj ƒrh|jf|Ž}n|}|dk    rªtjr’t|ttfƒs’t‚|jsª|jrª|j|_|j |j!j"krÞ|j#rÚ|j#|f||d    œ|—Ž}|S|j$||fd|i|—ŽSdS)
NÚ__code__)rdFr?TÚis_clause_element)Zraiseerrre)reÚoriginal_element)%Ú allows_lambdaÚcallablerBr"Z LambdaElementZ LambdaOptionsÚ _impl_lookupr@r!ZCompilerElementr#Z
SchemaItemZ FetchedValueZ    PyWrapperÚ_resolve_literal_onlyÚ_literal_coercionÚ$_skip_clauseelement_for_target_matchÚgetattrr?Ú_use_inspectionrÚinspectZ _post_inspectÚAttributeErrorÚ_raise_for_expectedZ_sa__py_wrapper_literalÚtypingrr1r,ÚAssertionErrorZ_propagate_attrsÚ _role_classÚ    __class__Ú__mro__Ú_post_coercionÚ_implicit_coercions) r]rCrdrerfr^ÚimplrkÚresolvedrjZinsprDrDrEraKs°
ÿúù    
ü    üþ    ÿþý
 
 
 
ÿÿÿ
ÿþÿýüÿÿÿcKs"| dd¡t||fddi|—ŽS)NrbT)Úpoprar`rDrDrEÚ expect_as_keyÀs rzIterable[_DDLColumnArgument]zwIterator[Tuple[Union[str, Column[Any]], Optional[ColumnClause[Any]], Optional[str], Optional[Union[Column[Any], str]]]])r]Ú expressionsrQc    csˆ|D]~}d}d}t||ƒ}t|tƒr<t|tƒs2t‚|}}n(g}|j}t |id|i¡|rd|d}|dk    rp|n|}||||fVqdS)NÚcolumnr)rar@rHrxÚappendrZtraverse)    r]r‚ÚexprZstrnamerƒrÚcolsZ
col_appendZ add_elementrDrDrEÚ expect_col_expression_collectionÇs 
 
 
r‡c
@sleZdZUdZdd„ZdZded<dZdZdd    „Z    dddd
ddd œd d „Z
ddd
dd
d
ddddœdd„Z dS)ÚRoleImpl)ryÚnamerscKs
tƒ‚dSr_)ÚNotImplementedError©ÚselfrCr^rDrDrErpèszRoleImpl._literal_coercionNrr|FcCs ||_|j|_t|tjƒ|_dSr_)ryZ
_role_namer‰rLrZUsesInspectionrs)rŒZ
role_classrDrDrEÚ__init__ïszRoleImpl.__init__rg©rCrrer^rQcKs| |||¡dSr_©rv©rŒrCrrer^rDrDrEr}ôszRoleImpl._implicit_coercionsú Optional[Any]úOptional[Exception]r
©rCrerÚadviceÚcodeÚerrr^rQc
Ksn|dk    r||k    rd||f}nt|ƒ}|r<d|j||f}    nd|j|f}    |rZ|    d|7}    tj|    |d|‚dS)Nz!%r object resolved from %r objectz$%s expected for argument %r; got %s.z%s expected, got %s.ú )r•)Úreprr‰rr[)
rŒrCrerr”r•r–r^ÚgotÚmsgrDrDrErvýs
ý zRoleImpl._raise_for_expected)N)NNNNN) Ú__name__Ú
__module__Ú __qualname__Ú    __slots__rpr|Ú__annotations__rorqrr}rvrDrDrDrErˆås
     ü ùrˆc@seZdZdZdd„ZdS)Ú _DeannotaterDcKsddlm}||ƒS)Nr)Ú_deep_deannotate)rr¡)rŒrr^r¡rDrDrEr|s z_Deannotate._post_coercionN©r›rœrržr|rDrDrDrEr sr c@seZdZdZdZdS)Ú _StringOnlyrDTN)r›rœrržrorDrDrDrEr£$sr£c@s"eZdZdZddd„Zdd„ZdS)Ú_ReturnsStringKeyrDNcKs t|tƒr|S| |||¡dSr_©r@rHrvrrDrDrEr}-s
z%_ReturnsStringKey._implicit_coercionscKs|Sr_rDr‹rDrDrErp3sz#_ReturnsStringKey._literal_coercion)N©r›rœrržr}rprDrDrDrEr¤*s
r¤c@s"eZdZdZdd„Zddd„ZdS)Ú_ColumnCoercionsrDcCst d¡dS)Nz|implicitly coercing SELECT object to scalar subquery; please use the .scalar_subquery() method to produce a scalar subquery.)rÚwarn)rŒrDrDrEÚ"_warn_for_scalar_subquery_coercion:sÿz3_ColumnCoercions._warn_for_scalar_subquery_coercionNcKs~|}t|ddƒs | |||¡nZ|jr6| ¡| ¡S|jrZt|tjƒrZ| ¡|j     ¡S|j
j rl|j rl|S| |||¡dS)NrjF) rrrvÚ_is_select_baser©Úscalar_subqueryÚ_is_from_clauser@r$r8rCryrlÚ_is_lambda_element)rŒrCrrer^rkrDrDrEr}As ÿ
z$_ColumnCoercions._implicit_coercions)N)r›rœrržr©r}rDrDrDrEr§7sr§zType[exc.SQLAlchemyError]r’r
)rCreÚexc_clsÚextrar–rQcCs:|dt |¡|rd|fnd|r(d|nddœƒ|‚dS)Nzc%(extra)sTextual SQL expression %(expr)r %(argname)sshould be explicitly declared as text(%(expr)r)úfor argument %sÚz%s )r…rer¯)rÚellipses_string)rCrer®r¯r–rDrDrEÚ_no_text_coercionSsýþÿør³c@seZdZdZddd„ZdS)Ú_NoTextCoercionrDNcKs4t|tƒr$ttj|jƒr$t||ƒn | ||¡dSr_)r@rHrLr!Ú
TextClauseryr³rv©rŒrCrer^rDrDrErphs  ÿ z!_NoTextCoercion._literal_coercion)N©r›rœrržrprDrDrDrEr´esr´c@s0eZdZdZdZdZdZddd„Zd    dd„ZdS)
Ú_CoerceLiteralsrDFNcCs
t||ƒSr_©r³©rŒrCrerDrDrEÚ_text_coercionwsz_CoerceLiterals._text_coercioncKs t|tƒr6|jr&|dkr&tjdddS|j||f|ŽS|jrl|dkrLt ¡S|dkr\t ¡S|dkrlt     ¡S|j
rt|t j ƒrtjt|ƒddS|  ||¡dS)NÚ*T)Z
is_literalF)r@rHÚ _coerce_starr!r-r»Ú_coerce_constsÚNullÚFalse_ÚTrue_Ú_coerce_numericsÚnumbersÚNumberrvr¶rDrDrErpzs
z!_CoerceLiterals._literal_coercion)N)N)    r›rœrržr¾r½rÂr»rprDrDrDrEr¸qs 
r¸c@s$eZdZdZddd„Zd    dd„ZdS)
ÚLiteralValueImplTNFcKs4t|ƒs |j|f||dœ|—Žtjd||d|dS)N)rreT)Útype_ÚuniqueÚliteral_execute)rFrvr!r+)rŒrCrrerÆrÈr^rDrDrEr}’s     ÿÿÿûz$LiteralValueImpl._implicit_coercionscKs|Sr_rD)rŒrCrerÆr^rDrDrErp¨sz"LiteralValueImpl._literal_coercion)NF)NN)r›rœrror}rprDrDrDrErŏs
ú
rÅc
s6eZdZdZd dddddddddœ‡fd    d
„ Z‡ZS) Ú_SelectIsNotFromrDNrrgr‘r’r
r“c sj|st|tjƒst|tjƒr:d|dk    r,|jn|f}d}nd}tƒj|f|||||dœ|—Ždsft‚dS)NzETo create a FROM clause from a %s object, use the .subquery() method.Z89ve)rerr”r•r–F)r@rZSelectStatementRolerzÚsuperrvrx)rŒrCrerr”r•r–r^©rzrDrErv¯s0 ÿ
þ
ýþÿÿúù
z$_SelectIsNotFrom._raise_for_expected)NNNNN©r›rœrržrvÚ __classcell__rDrDrËrErɬsùrÉc@s0eZdZdZd
ddddddœdd„Zdd    „ZdS) ÚHasCacheKeyImplrDNrrgrŽcKs t|tƒr|S| |||¡dSr_)r@rrvrrDrDrEr}×s
z#HasCacheKeyImpl._implicit_coercionscKs|Sr_rDr‹rDrDrErpãsz!HasCacheKeyImpl._literal_coercion)Nr¦rDrDrDrErÎÔsü rÎc@s0eZdZdZd
ddddddœdd„Zdd    „ZdS) ÚExecutableOptionImplrDNrrgrŽcKs t|tƒr|S| |||¡dSr_)r@rrvrrDrDrEr}ês
z(ExecutableOptionImpl._implicit_coercionscKs|Sr_rDr‹rDrDrErpösz&ExecutableOptionImpl._literal_coercion)Nr¦rDrDrDrErÏçsü rÏcs,eZdZdZddd„Zd    ‡fdd„    Z‡ZS)
ÚExpressionElementImplrDNFc
Ksp|dkr"|s"|dks|js"t ¡Sztj|||d|dWStjk
rj}z|j||dW5d}~XYnXdS)NT)rÇZ_is_crud©r–)Zshould_evaluate_noner!r¿r+rr[rv)rŒrCr‰rÆreÚis_crudr^r–rDrDrErpýs&ÿþýýÿz'ExpressionElementImpl._literal_coercionc sDt|tjƒrd}nt|tjƒr$d}nd}tƒj|f|||dœ|—ŽS)NzTTo create a column expression from a VALUES clause, use the .scalar_values() method.z`To create a column expression from a FROM clause row as a whole, use the .table_valued() method.©rerr”)r@r$ÚValuesrZAnonymizedFromClauseRolerÊrv©rŒrCrerr^r”rËrDrErvs  ÿ ÿÿÿÿz)ExpressionElementImpl._raise_for_expected)NNNF)NN)r›rœrržrprvrÍrDrDrËrErÐúsÿ
rÐc@s$eZdZdZddd„Zddd„ZdS)    ÚBinaryElementImplrDNc
KsJz|j|||dWStjk
rD}z|j||dW5d}~XYnXdS)N)rÆrÑ)Ú _bind_paramrr[rv)rŒrCr…ÚoperatorÚbindparam_typerer^r–rDrDrErp)sz#BinaryElementImpl._literal_coercioncKs,|jjr(|jjs(| |dk    r |n|j¡}|Sr_)rKZ_isnullZ_with_binary_element_type)rŒrr…rÙr^rDrDrEr|1s
ÿz BinaryElementImpl._post_coercion)NN)N)r›rœrržrpr|rDrDrDrErÖ%s
ÿ
rÖc@s@eZdZdZdddddddœdd„Zdd    „Zd
d „Zd d „ZdS)Ú InElementImplrDNrrgrŽcKsd|jrRt|tjƒr4|jjr4| |¡|j|jf|ŽS| |¡|j| ¡f|ŽSn|     |||¡dSr_)
r¬r@r$ÚAliasrCrªÚ_warn_for_implicit_coercionr|ÚselectrvrrDrDrEr}<s
ÿþ
 
z!InElementImpl._implicit_coercionscCst d|jj¡dS)Nz_Coercing %s object into a select() for use in IN(); please pass a select() construct explicitly)rr¨rzr›)rŒrMrDrDrErÜPs
þÿz)InElementImpl._warn_for_implicit_coercionc s²t|tjƒr t|tƒs i‰t|ƒ}|D]F}t|ƒsXt|tjƒsN|j|f|Žql|ˆ|<q&|dkr&t     
¡ˆ|<q&ˆrŽt    j ‡‡‡fdd„|DƒŽSˆj ˆ|ddSn|j|f|ŽdS)Ncs(g|] }|ˆkrˆ|n
ˆ ˆ|¡‘qSrD)r×)Ú.0Úo©r…Znon_literal_expressionsrØrDrEÚ
<listcomp>lsþÿ
z3InElementImpl._literal_coercion.<locals>.<listcomp>T)Ú    expanding) r@rGrrHrWrFrZColumnOperatorsrvr!r¿Ú
ClauseListr×)rŒrCr…rØr^rßrDràrErpWs,ÿý 
üÿ    zInElementImpl._literal_coercioncKs||jr| ¡St|tjƒr8t|jƒdkr,t‚|j|dSt|tj    ƒr`|j
dd}d|_ ||_ |St|t jƒrt| ¡S|SdS)Nr)ZagainstT)Z maintain_key)rªr«r@r!rãrZZclausesrxZ
self_groupr+Z_clonerâZ    expand_opr$rÔZ scalar_values)rŒrCr…rØr^rDrDrEr|ys     zInElementImpl._post_coercion)N)r›rœrržr}rÜrpr|rDrDrDrErÚ9s ü"rÚc@s(eZdZdZdZd    dd„Zd
dd„ZdS) Ú OnClauseImplrDTNFcKs| |¡dSr_r)rŒrCr‰rÆrerÒr^rDrDrErp“szOnClauseImpl._literal_coercioncKst|tjƒr|S|Sr_)r@rÚJoinTargetRole)rŒrrkr^rDrDrEr|˜s zOnClauseImpl._post_coercion)NNNF)N)r›rœrržr¾rpr|rDrDrDrEräŽsÿ
räc@seZdZdZdZddd„ZdS)ÚWhereHavingImplrDTNcCs
t||ƒSr_r¹rºrDrDrEr»¨szWhereHavingImpl._text_coercion)N©r›rœrržr¾r»rDrDrDrEræ£sræc@seZdZdZdZddd„ZdS)ÚStatementOptionImplrDTNcCs
t |¡Sr_©r!rµrºrDrDrEr»±sz"StatementOptionImpl._text_coercion)NrçrDrDrDrErè¬srèc@seZdZdZdS)ÚColumnArgumentImplrDN©r›rœrržrDrDrDrErêµsrêc@seZdZdZdS)ÚColumnArgumentOrKeyImplrDNrërDrDrDrErì¹srìc@seZdZdZddd„ZdS)ÚStrAsPlainColumnImplrDNcCs
t |¡Sr_)r!r-rºrDrDrEr»Àsz#StrAsPlainColumnImpl._text_coercion)N)r›rœrržr»rDrDrDrErí½sríc@seZdZdZdZddd„ZdS)ÚByOfImplrDTNcCs
t |¡Sr_)r!Z_textual_label_referencerºrDrDrEr»ÊszByOfImpl._text_coercion)NrçrDrDrDrErîÄsrîc@seZdZdZdd„ZdS)Ú OrderByImplrDcKs(t||jƒr |jdk    r t |¡S|SdSr_)r@ryZ_order_by_label_elementr!Z_label_reference)rŒrr^rDrDrEr|Ñs 
ÿþ
zOrderByImpl._post_coercionNr¢rDrDrDrErïÎsrïc@s(eZdZdZdddddddœdd„ZdS)    Ú GroupByImplrDNrrgrŽcKst|ƒrtj|jŽS|SdSr_)rr!rãÚcrrDrDrEr}Þs zGroupByImpl._implicit_coercions)N©r›rœrržr}rDrDrDrErðÛsürðc@seZdZdZddd„ZdS)Ú DMLColumnImplrDFcKs|r
|jS|SdSr_)Úkey)rŒrCrbr^rDrDrEr|îszDMLColumnImpl._post_coercionN)Fr¢rDrDrDrEróësróc@seZdZdZddd„ZdS)Ú ConstExprImplrDNcKs@|dkrt ¡S|dkr t ¡S|dkr0t ¡S| ||¡dS)NFT)r!r¿rÀrÁrvr¶rDrDrErpøszConstExprImpl._literal_coercion)Nr·rDrDrDrErõõsrõc@s2eZdZdZd
ddddddœdd„Zd dd    „ZdS) ÚTruncatedLabelImplrDNrrgrŽcKs t|tƒr|S| |||¡dSr_r¥rrDrDrEr}s
z&TruncatedLabelImpl._implicit_coercionscKst|tjƒr|St |¡SdS)z¸coerce the given value to :class:`._truncated_label`.
 
        Existing :class:`._truncated_label` and
        :class:`._anonymous_label` objects are passed
        unchanged.
        N)r@r!Z_truncated_labelr¶rDrDrErps z$TruncatedLabelImpl._literal_coercion)N)Nr¦rDrDrDrErösü röc@seZdZdZdZddd„ZdS)ÚDDLExpressionImplrDTNcCs
t |¡Sr_rérºrDrDrEr»&sz DDLExpressionImpl._text_coercion)NrçrDrDrDrEr÷ sr÷c@seZdZdZdS)ÚDDLConstraintColumnImplrDNrërDrDrDrErø.srøc@seZdZdZdS)ÚDDLReferredColumnImplrDNrërDrDrDrErù2srùc@s0eZdZdZd
ddddddœdd„Zdd    „ZdS) ÚLimitOffsetImplrDNrrgrŽcKs|dkr dS| |||¡dSr_rrrDrDrEr}9sz#LimitOffsetImpl._implicit_coercionscKs,|dkr dSt |¡}tj|||ddSdS)NT)rÆrÇ)rZasintr$Z_OffsetLimitParam)rŒrCr‰rÆr^ÚvaluerDrDrErpEs
ÿz!LimitOffsetImpl._literal_coercion)Nr¦rDrDrDrErú6sü rúcs0eZdZdZdddddddœ‡fdd„ Z‡ZS)    ÚLabeledColumnExprImplrDNrrgrŽc sXt|tjƒr| d¡Stƒj||fd|i|—Ž}t|tjƒrF| d¡S| |||¡dS©Nre)r@rÚExpressionElementRoleÚlabelrÊr}rv)rŒrCrrer^ÚnewrËrDrEr}Rs 
ÿÿÿ 
z)LabeledColumnExprImpl._implicit_coercions)N)r›rœrržr}rÍrDrDrËrErüOsürücsFeZdZdZdZdZdZe dej    ¡Z
d    ‡fdd„    Z d
dd„Z ‡Z S) ÚColumnsClauseImplrDTz^\w\S*$Nc sF|s*t|tƒr*dd dd„|Dƒ¡›d}tƒj|f|||dœ|—ŽS)NzDid you mean to say select(z, css|]}t|ƒVqdSr_)r˜)rÞÚerDrDrEÚ    <genexpr>ssz8ColumnsClauseImpl._raise_for_expected.<locals>.<genexpr>z)?rÓ)r@rWÚjoinrÊrv)rŒrCrerr”r^rËrDrErvnsÿÿÿÿz%ColumnsClauseImpl._raise_for_expectedcCsLt|ƒ}|j |¡ }t dt |¡|r2d|fnd|r<dnddœ¡‚dS)NzŸTextual column expression %(column)r %(argname)sshould be explicitly declared with text(%(column)r), or use %(literal_column)s(%(column)r) for more specificityr°r±Úliteral_columnrƒ)rƒrer)rHÚ_guess_straight_columnÚmatchrr[rr²)rŒrCreZguess_is_literalrDrDrEr»{sÿûüÿz ColumnsClauseImpl._text_coercion)NNN)N)r›rœrržr¾rÂr½ÚreÚcompileÚIrrvr»rÍrDrDrËrEresÿ rc@seZdZdZdS)ÚReturnsRowsImplrDNrërDrDrDrEr Žsr cs:eZdZdZd
dd„Zd ddddddœ‡fdd    „ Z‡ZS) Ú StatementImplrDNcKsF||k    rBt|tƒsBz
|jWn$tk
r@t d|d¡YnX|S)NaObject %r should not be used directly in a SQL statement context, such as passing to methods such as session.execute().  This usage will be disallowed in a future release.  Please use Core select() / update() / delete() etc. with Session.execute() and other statement execution methods.ú1.4)r@rHZ_execute_on_connectionrurÚwarn_deprecated)rŒrrkrer^rDrDrEr|•s
ÿ
úø
zStatementImpl._post_coercionrrgrŽc s(|jr
|Stƒj||fd|i|—ŽSdSrý)r­rÊr}rrËrDrEr}«sÿÿÿz!StatementImpl._implicit_coercions)N)N)r›rœrržr|r}rÍrDrDrËrEr ’s
ür c@s(eZdZdZdddddddœdd„ZdS)    ÚSelectStatementImplrDNrrgrŽcKs |jr| ¡S| |||¡dSr_)Ú_is_text_clauseÚcolumnsrvrrDrDrEr}½sz'SelectStatementImpl._implicit_coercions)NròrDrDrDrErºsürc@seZdZdZdS)Ú
HasCTEImplrDNrërDrDrDrErÊsrc@seZdZdZdS)Ú    IsCTEImplrDNrërDrDrDrErÎsrc@s8eZdZdZdZd dd„Zddddd    ddd
œd d „ZdS)ÚJoinTargetImplrDTNcKs| ||¡dSr_rr¶rDrDrErp×sz JoinTargetImpl._literal_coercionFrrgrh)rCrreÚlegacyr^rQcKs>t|tjƒr|S|r,|jr,tjddd|S| |||¡dS©NzÀImplicit coercion of SELECT and textual SELECT constructs into FROM clauses is deprecated; please call .subquery() on any Core select or ORM Query object in order to produce a subquery object.r )Úversion)r@rrårªrrrv)rŒrCrrerr^rDrDrEr}Ús 
û z"JoinTargetImpl._implicit_coercions)N)NF)r›rœrržrqrpr}rDrDrDrErÒs 
ûrc    @s6eZdZdZd ddddddddœd    d
„Zdd d „ZdS)ÚFromClauseImplrDNFTrrgrh©rCrrercÚ allow_selectr^rQcKsH|jr,|r| ¡S|rDtjddd|jSn|jr6|S| |||¡dSr)rªZsubqueryrrÚ_implicit_subqueryrrv©rŒrCrrercrr^rDrDrEr}ûs    ûz"FromClauseImpl._implicit_coercionscKs|r | ¡S|SdSr_)Z _deannotate)rŒrCZ
deannotater^rDrDrEr|szFromClauseImpl._post_coercion)NFT)F)r›rœrržr}r|rDrDrDrErøs úrc    @s,eZdZdZd
ddddddddœdd    „ZdS) ÚStrictFromClauseImplrDNFrrgrhrcKs0|jr|rtjddd|jS| |||¡dSr)rªrrrrvrrDrDrEr}s    
ûz(StrictFromClauseImpl._implicit_coercions)NFFròrDrDrDrErs
úrc@seZdZdZddd„ZdS)ÚAnonymizedFromClauseImplrDFNcKs|dks t‚|j|dS)N)Úflat)rxZ_anonymous_fromclause)rŒrCrr‰r^rDrDrEr|8s z'AnonymizedFromClauseImpl._post_coercion)FNr¢rDrDrDrEr5src@seZdZdZdd„ZdS)Ú DMLTableImplrDcKsd|jkr|jdS|SdS)NZ    dml_table)Z _annotationsr‹rDrDrEr|As
 
zDMLTableImpl._post_coercionNr¢rDrDrDrEr >sr c@s(eZdZdZdddddddœdd„ZdS)    Ú DMLSelectImplrDNrrgrŽcKs<|jr*t|tjƒr |jjr |jS| ¡Sn| |||¡dSr_)r¬r@r$rÛrCrªrÝrvrrDrDrEr}Ks
ÿþ
z!DMLSelectImpl._implicit_coercions)NròrDrDrDrEr!Hsür!cs"eZdZdZd‡fdd„    Z‡ZS)ÚCompoundElementImplrDNc s>t|tjƒr|jrd}q"d}nd}tƒj|f|||dœ|—ŽS)NzFUse the plain select() object without calling .subquery() or .alias().z9To SELECT from any FROM clause, use the .select() method.rÓ)r@rZFromClauseRoleZ _is_subqueryrÊrvrÕrËrDrErvas  ÿÿÿÿÿz'CompoundElementImpl._raise_for_expected)NNrÌrDrDrËrEr"^sr"ZRoleZImpl)Ú
__future__rÚcollections.abcÚabcrGrÃrrwrrrrrrr    r
r r r rrrrrr±rrrÚ_typingrÚbaserrÚ    cache_keyrrrrrZ util.typingr r!r"r#r$r%r&r'r(r)Zdmlr*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9ZSQLRoler:r<Z
StringRoler=r>rFrIrRr\rarr‡rˆr r£r¤r§r[r³r´r¸rÅrÉrÎrÏrÐrÖrÚrärærèrêrìríZByOfRolerîrïrðrórõrör÷rørùrúrürr r rrrrrrrr r!r"rnÚdirr‰rrÚclsÚendswithÚreplaceÚglobalsr~rþZee_implÚintrhrHÚfloatZpy_typerDrDrDrEÚ<module>    sR                                                         &ü
 ü
     úu6     û (+U        
 
)(&$