zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
U
¸ý°d0ã@sødZddlmZddlmZddlmZddlm    Z    ddlm
Z
ddlmZdd    lm Z dd
l m Z dd l mZdd lmZdd lmZddlmZGdd„dejƒZGdd„dejƒZGdd„dejƒZeƒZeƒZGdd„dƒZdddœdd„ZdS)zÕEvaluation functions used **INTERNALLY** by ORM DML use cases.
 
 
This module is **private, for internal use by SQLAlchemy**.
 
.. versionchanged:: 2.0.4 renamed ``EvaluatorCompiler`` to
   ``_EvaluatorCompiler``.
 
é)Ú annotations)ÚTypeé)Úexc)ÚLoaderCallableStatus)Ú PassiveFlagé)Úinspect)Úand_)Ú    operators)ÚInteger)ÚNumeric)Úwarn_deprecatedc@s eZdZdS)ÚUnevaluatableErrorN)Ú__name__Ú
__module__Ú __qualname__©rrúOd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/orm/evaluator.pyr$src@seZdZdd„Zdd„ZdS)Ú    _NoObjectcOsdS©Nr©ÚselfÚargÚkwrrrÚoperate)sz_NoObject.operatecOsdSrrrrrrÚreverse_operate,sz_NoObject.reverse_operateN©rrrrrrrrrr(src@seZdZdd„Zdd„ZdS)Ú_ExpiredObjectcOs|Srrrrrrr1sz_ExpiredObject.operatecOs|Srrrrrrr4sz_ExpiredObject.reverse_operateNrrrrrr0src@s
eZdZd6dd„Zdd„Zdd„Zdd    „Zd
d „Zd d „Zdd„Z    dd„Z
dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„ZeZeZeZeZeZeZeZeZeZeZeZ d(d)„Z!d*d+„Z"d,d-„Z#d.d/„Z$d0d1„Z%d2d3„Z&d4d5„Z'dS)7Ú_EvaluatorCompilerNcCs
||_dSr)Ú
target_cls)rr rrrÚ__init__=sz_EvaluatorCompiler.__init__cGsF|rt|f|žŽ}t|d|j›dƒ}|s>tdt|ƒj›ƒ‚||ƒS)NÚvisit_úCannot evaluate )r
ÚgetattrZ__visit_name__rÚtyper)rÚclauseÚclausesÚmethrrrÚprocess@sÿz_EvaluatorCompiler.processcCs | |j¡Sr)r)Úelement©rr&rrrÚvisit_groupingKsz!_EvaluatorCompiler.visit_groupingcCsdd„S)NcSsdSrr©ÚobjrrrÚ<lambda>Oóz/_EvaluatorCompiler.visit_null.<locals>.<lambda>rr+rrrÚ
visit_nullNsz_EvaluatorCompiler.visit_nullcCsdd„S)NcSsdS)NFrr-rrrr/Rr0z0_EvaluatorCompiler.visit_false.<locals>.<lambda>rr+rrrÚ visit_falseQsz_EvaluatorCompiler.visit_falsecCsdd„S)NcSsdS)NTrr-rrrr/Ur0z/_EvaluatorCompiler.visit_true.<locals>.<lambda>rr+rrrÚ
visit_trueTsz_EvaluatorCompiler.visit_truec
sÐz|jd}Wn2tk
r@}ztd|›ƒ|‚W5d}~XYnX|jrft|j|jƒsftd|j›ƒ‚| ¡z|j|j}Wn4t    j
k
r²}ztd|›ƒ|‚W5d}~XYnX|j |j ‰‡fdd„}|S)NÚ parentmapperzCannot evaluate column: z0Can't evaluate criteria against alternate class zCannot evaluate expression: cs>|dkr tSt|ƒ}|j}ˆj||tjd}|tjkr:tS|S)N)Zpassive)    Ú
_NO_OBJECTr    ÚdictÚgetrZPASSIVE_NO_FETCHrZPASSIVE_NO_RESULTÚ_EXPIRED_OBJECT)r.ÚstateZdict_Úvalue©ÚimplrrÚget_corresponding_attr~sÿ
z?_EvaluatorCompiler.visit_column.<locals>.get_corresponding_attr) Z _annotationsÚKeyErrorrr Ú
issubclassÚclass_Z_check_configureZ_columntopropertyÚkeyÚorm_excZUnmappedColumnErrorZ class_managerr<)rr&r4ZkerAÚerrr=rr;rÚ visit_columnWs6ÿþÿ
ÿ ÿþ  z_EvaluatorCompiler.visit_columncCs
| |¡Sr©Úvisit_clauselistr+rrrÚ visit_tuplesz_EvaluatorCompiler.visit_tuplecCs
| |¡SrrEr+rrrÚvisit_expression_clauselistsz._EvaluatorCompiler.visit_expression_clauselistcs\‡fdd„|jDƒ}d|jj d¡›d}tˆ|dƒ}|rH||j||ƒStd|j›ƒ‚dS)Ncsg|]}ˆ |¡‘qSr)r))Ú.0r&©rrrÚ
<listcomp>”sz7_EvaluatorCompiler.visit_clauselist.<locals>.<listcomp>r"Ú_Z_clauselist_opz)Cannot evaluate clauselist with operator )r'ÚoperatorrÚrstripr$r)rr&Ú
evaluatorsÚdispatchr(rrJrrF“sÿ 
ÿz#_EvaluatorCompiler.visit_clauselistcCsn| |j¡}| |j¡}d|jj d¡›d}t||dƒ}|rN||j|||ƒStdt|ƒj›d|j›ƒ‚dS)Nr"rLZ
_binary_opr#ú with operator )    r)ÚleftÚrightrMrrNr$rr%)rr&Ú    eval_leftÚ
eval_rightrPr(rrrÚ visit_binary¡s   ÿz_EvaluatorCompiler.visit_binarycs‡fdd„}|S)NcsHd}ˆD]2}||ƒ}|tkr$tS|r.dS|p8|dk}q|rDdSdS©NFT©r8)r.Zhas_nullÚ sub_evaluater:©rOrrÚevaluate°sz;_EvaluatorCompiler.visit_or_clauselist_op.<locals>.evaluater©rrMrOr&r[rrZrÚvisit_or_clauselist_op¯s z)_EvaluatorCompiler.visit_or_clauselist_opcs‡fdd„}|S)NcsFˆD]<}||ƒ}|tkr tS|s|dks4|tkr:dSdSqdSrW)r8r5)r.rYr:rZrrr[Àsz<_EvaluatorCompiler.visit_and_clauselist_op.<locals>.evaluaterr\rrZrÚvisit_and_clauselist_op¿s z*_EvaluatorCompiler.visit_and_clauselist_opcs‡fdd„}|S)NcsNg}ˆD]<}||ƒ}|tkr$tS|dks4|tkr:dS| |¡qt|ƒSr)r8r5ÚappendÚtuple)r.ÚvaluesrYr:rZrrr[Ïs zA_EvaluatorCompiler.visit_comma_op_clauselist_op.<locals>.evaluaterr\rrZrÚvisit_comma_op_clauselist_opÎs z/_EvaluatorCompiler.visit_comma_op_clauselist_opcCs,|jr| ||||¡Std|j›dƒ‚dS)NzCustom operator zR can't be evaluated in Python unless it specifies a callable using `.python_impl`.)Z python_implÚ_straight_evaluaterZopstring©rrMrTrUr&rrrÚvisit_custom_op_binary_opÜsÿ ÿz,_EvaluatorCompiler.visit_custom_op_binary_opcs‡‡fdd„}|S)Ncs,ˆ|ƒ}ˆ|ƒ}|tks |tkr$tS||kSrrX©r.Zleft_valZ    right_val©rTrUrrr[ës
z7_EvaluatorCompiler.visit_is_binary_op.<locals>.evaluater©rrMrTrUr&r[rrgrÚvisit_is_binary_opêsz%_EvaluatorCompiler.visit_is_binary_opcs‡‡fdd„}|S)Ncs,ˆ|ƒ}ˆ|ƒ}|tks |tkr$tS||kSrrXrfrgrrr[õs
z;_EvaluatorCompiler.visit_is_not_binary_op.<locals>.evaluaterrhrrgrÚvisit_is_not_binary_opôsz)_EvaluatorCompiler.visit_is_not_binary_opcs‡‡‡fdd„}|S)NcsJˆ|ƒ}ˆ|ƒ}|tks |tkr$tS|dks4|dkr8dSˆˆ|ƒˆ|ƒƒSrrXrf©rTrUrMrrr[ÿsz7_EvaluatorCompiler._straight_evaluate.<locals>.evaluaterrhrrkrrcþs
z%_EvaluatorCompiler._straight_evaluatecCsX|jjjttfks$|jjjttfkrHtd|j›d|jj›d|jj›ƒ‚| ||||¡S)NzCannot evaluate math operator "z" for datatypes z, )    rRr%Z_type_affinityr r rSrrrcrdrrrÚ_straight_evaluate_numeric_only sþýÿz2_EvaluatorCompiler._straight_evaluate_numeric_onlycCs| dd„|||¡S)NcSs|tk    r||kSdSr©r5©ÚaÚbrrrr/'r0z:_EvaluatorCompiler.visit_in_op_binary_op.<locals>.<lambda>©rcrdrrrÚvisit_in_op_binary_op%s üz(_EvaluatorCompiler.visit_in_op_binary_opcCs| dd„|||¡S)NcSs|tk    r||kSdSrrmrnrrrr/1r0z>_EvaluatorCompiler.visit_not_in_op_binary_op.<locals>.<lambda>rqrdrrrÚvisit_not_in_op_binary_op-s üz,_EvaluatorCompiler.visit_not_in_op_binary_opcCs| dd„|||¡S)NcSs||Srrrnrrrr/;r0z>_EvaluatorCompiler.visit_concat_op_binary_op.<locals>.<lambda>rqrdrrrÚvisit_concat_op_binary_op7s ÿz,_EvaluatorCompiler.visit_concat_op_binary_opcCs| dd„|||¡S)NcSs
| |¡Sr)Ú
startswithrnrrrr/Br0zB_EvaluatorCompiler.visit_startswith_op_binary_op.<locals>.<lambda>rqrdrrrÚvisit_startswith_op_binary_op>s ÿz0_EvaluatorCompiler.visit_startswith_op_binary_opcCs| dd„|||¡S)NcSs
| |¡Sr)Úendswithrnrrrr/Ir0z@_EvaluatorCompiler.visit_endswith_op_binary_op.<locals>.<lambda>rqrdrrrÚvisit_endswith_op_binary_opEs ÿz._EvaluatorCompiler.visit_endswith_op_binary_opcsH| |j¡‰|jtjkr(‡fdd„}|Stdt|ƒj›d|j›ƒ‚dS)Ncs&ˆ|ƒ}|tkrtS|dkr dS| SrrX)r.r:©Z
eval_innerrrr[Ps z0_EvaluatorCompiler.visit_unary.<locals>.evaluater#rQ)r)r*rMr Úinvrr%r)rr&r[rryrÚ visit_unaryLs   ÿz_EvaluatorCompiler.visit_unarycs"|jr| ¡‰n|j‰‡fdd„S)NcsˆSrrr-©Úvalrrr/cr0z4_EvaluatorCompiler.visit_bindparam.<locals>.<lambda>)Úcallabler:r+rr|rÚvisit_bindparam^s
z"_EvaluatorCompiler.visit_bindparam)N)(rrrr!r)r,r1r2r3rDrGrHrFrVr]r^rbrerirjrcrlZvisit_add_binary_opZvisit_mul_binary_opZvisit_sub_binary_opZvisit_mod_binary_opZvisit_truediv_binary_opZvisit_lt_binary_opZvisit_le_binary_opZvisit_ne_binary_opZvisit_gt_binary_opZvisit_ge_binary_opZvisit_eq_binary_oprrrsrtrvrxr{rrrrrr<sJ
 6
 
 
rÚstrzType[_EvaluatorCompiler])ÚnameÚreturncCs.|dkrtddƒtStdt›d|›ƒ‚dS)NZEvaluatorCompilerz•Direct use of 'EvaluatorCompiler' is not supported, and this name will be removed in a future release.  '_EvaluatorCompiler' is for internal use onlyz2.0zmodule z has no attribute )rrÚAttributeErrorr)rrrrÚ __getattr__fsür„N)Ú__doc__Ú
__future__rÚtypingrÚrrBÚbaserrr    Zsqlr
r Z sql.sqltypesr r ÚutilrZInvalidRequestErrorrZColumnOperatorsrrr5r8rr„rrrrÚ<module>    s*            ,