Files
controller-wisetopdataserver/python/biopro/devlib/__pycache__/expression.cpython-37.opt-2.pyc
T

175 lines
28 KiB
Plaintext
Raw Normal View History

2021-12-20 14:52:55 +08:00
B
´-Ó_ýrã@ddlZddlmZmZmZmZmZmZmZm Z m
Z
m Z m Z ddl
TdZe dddZGd ddejd
ZGd d d eƒZGd
ddeƒZGdddeejd
Zeiƒe_GdddeƒZGdddeeeejd
ZGdddeeƒZedƒZedƒZedƒZGdddeeƒZGdddeeƒZGdddeeƒZ GdddƒZ!Gd d!„d!e eƒZ"Gd"d#„d#e eƒZ#Gd$d%„d%e eƒZ$Gd&d'„d'e e%ƒZ&Gd(d)„d)e'e&ƒZ(dS)*éN) ÚAnyÚOptionalÚListÚDictÚUnionÚGenericÚCallableÚNoReturnÚSetÚIterableÚTypeVaré)Ú*FÚScope)Úboundc@s.eZdZdZddZeedœddZeedœddZ eed œd
d Z
ed œd
dZ e j
eedœddƒZeedœddZe j
eedœddƒZe j
eedœddƒZe j
eed œddƒZe j
ed œddƒZe j
ddƒZddœdd „Zeed!œd"d#„Zddd!œd$d%„Zeed&œd'd(„Zd)d*„ZeZd+S),r)Z__parentcCs
d|_dS)N)Ú_Scope__parent)Úself©rú8/home/pi/bioprorelife/python/biopro/devlib/expression.pyÚ__init__szScope.__init__)ÚitemÚreturncCs*|}x |dk r$| |¡rdS|j}qWdS)NTF)Ú
contain_localr)rrÚscoperrrÚ __contains__s 


zScope.__contains__cCs8|}x&|dk r*| |¡r"| |¡S|j}qWt|ƒdS)N)rÚ get_localrÚKeyError)rrrrrrÚ __getitem__!s 



zScope.__getitem__)ÚkeyÚvaluecCs>|}x(|dk r,| |¡r$| ||¡S|j}qW| ||¡dS)N)rÚ set_localr)rrr rrrrÚ __setitem__-s 

 
zScope.__setitem__)rcCs8|}x&|dk r*| |¡r"| |¡S|j}qWt|ƒdS)N)rÚ del_localrr)rrrrrrÚ __delitem__9s 



zScope.__delitem__)rcCsdS)Nr)rrrrÚlocalsEsz Scope.localscCs.|jdk r|j ¡}ntƒ}| | ¡¡|S)N)rÚglobalsÚsetÚupdater%)rÚretrrrr&Js

 z
Scope.globals)rrcCsdS)Nr)rrrrrrUszScope.contain_localcCsdS)Nr)rrrrrrZszScope.get_localcCsdS)Nr)rrr rrrr!_szScope.set_localcCsdS)Nr)rrrrrr#dszScope.del_localcCsdS)Nr)rrrrÚclearisz Scope.clearcKs2tƒ}||_x | ¡D]\}}| ||¡qW|S)N)Ú ContextScoperÚitemsr!)rÚlocalr)ÚvrrrÚchildns
z Scope.child)rrcCs
||_|S)N)r)rrrrrÚchainxsz Scope.chaincCst|ƒ}||_|S)N)Ú WrapScoper)rrr)rrrÚwrap}sz
Scope.wrap)Ú
expressionrc
Cs^| d¡r d|kr | d¡r |Sy t|i|ƒStk
rX}zt|ƒ|Wdd}~XYnXdS)))Ú
startswithÚendswithÚevalÚ
BaseExceptionÚ RuntimeError)rr4Úerrrr:ƒs  z
Scope.evalcCs |jdkrdSdt|jƒSdS)Nz > {}z > )rÚstr)rrrrÚ__str__s
z
Scope.__str__N)Ú__name__Ú
__module__Ú __qualname__Ú __slots__rr>Úboolrrrr"r$ÚabcÚabstractmethodr r%r
r&rrr!r#r*r0rr1r3r:r?Ú__repr__rrrrr s0     
)Ú metaclasscseZdZdZdeeeefdœfdd
Ze edœddZ
ee d œd
d Z ed œd
dZ
eedœddZed œddZddZfddZZS)r+)Ú_contextN)Úinitcs(tƒ ¡i|_|dk r$|j |¡dS)N)ÚsuperrrIr()rrJ)Ú __class__rrr s
zContextScope.__init__)rcCs
|j ¡S)N)rIÚkeys)rrrrr%¨szContextScope.locals)rrcCs
||jkS)N)rI)rrrrrr«szContextScope.contain_local)rcCs
|j|S)N)rI)rrrrrr®szContextScope.get_local)rr cCs||j|<dS)N)rI)rrr rrrr!±szContextScope.set_localcCs |j|=dS)N)rI)rrrrrr#´szContextScope.del_localcCs|j ¡dS)N)rIr*)rrrrr*·szContextScope.clearcst|jƒtƒ ¡S)N)r>rIrKr?)r)rLrrr?ºszContextScope.__str__)N)r@rArBrCrrr>rrr r%rDrrr!r#r*r?Ú
__classcell__rr)rLrr+s r+ceZdZUdZded<dZeeefdœfdd Z e
edœdd „Z ee d
œd d Z
ed
œddZeedœddZed
œddZddZfddZZS)Ú
ConstantScopeNÚEMPTY)Ú _constant)Úconstantcstƒ ¡t|ƒ|_dS)N)rKrÚdictrQ)rrR)rLrrrÄs
zConstantScope.__init__)rcCs
|j ¡S)N)rQrM)rrrrr%ÉszConstantScope.locals)rrcCs
||jkS)N)rQ)rrrrrrÌszConstantScope.contain_local)rcCs
|j|S)N)rQ)rrrrrrÏszConstantScope.get_local)rr cCsdS)Nr)rrr rrrr!ÒszConstantScope.set_localcCsdS)Nr)rrrrrr#ÖszConstantScope.del_localcCsdS)Nr)rrrrr*ÚszConstantScope.clearcsdt|jƒtƒ ¡S)Nz constant:)r>rQrKr?)r)rLrrr?ÞszConstantScope.__str__)r@rArBrPÚ__annotations__rCrr>rrr r%rDrrr!r#r*r?rNrr)rLrrO¾s
 rOcs˜eZdZdZeedœfdd ZeeefdœddZ ee
dœd d
Z e j
eedœd d ƒZeed
œddZedœddZddZfddZZS)Ú
ReadonlyScope)Ú _variable)Úvariablecstƒ ¡t|ƒ|_dS)N)rKrÚlistrV)rrW)rLrrrès
zReadonlyScope.__init__)rcsfddˆjDƒS)Ncsi|]}ˆ |¡|qSr)r)Ú.0Úp)rrrú
<dictcomp>îsz(ReadonlyScope.locals.<locals>.<dictcomp>)rV)rr)rrr%íszReadonlyScope.locals)rrcCs
||jkS)N)rV)rrrrrrðszReadonlyScope.contain_localcCsdS)Nr)rrrrrrószReadonlyScope.get_local)rr cCsdS)Nr)rrr rrrr!÷szReadonlyScope.set_local)rcCsdS)Nr)rrrrrr#ûszReadonlyScope.del_localcCsdS)Nr)rrrrr*ÿszReadonlyScope.clearcs |jjdt|jƒtƒ ¡S):)rLr@r>rVrKr?)r)rLrrr?szReadonlyScope.__str__)r@rArBrCr r>rrrr%rDrrErFrr!r#r*r?rNrr)rLrrUãsrUcseZdZdZedœfdd ZeedœddZee dœd d
Z
ee dœd d Z ee d
œddZ
edœddZddZddZfddZZS)r2)Ú_scope)rcstƒ ¡||_dS)N)rKrr])rr)rLrrrs
zWrapScope.__init__)rcCs
|j ¡S)N)r]r%)rrrrr%szWrapScope.locals)rrcCs |j |¡S)N)r]r)rrrrrrszWrapScope.contain_localcCs |j |¡S)N)r]r)rrrrrrszWrapScope.get_local)rr cCs|j ||¡dS)N)r]r!)rrr rrrr!szWrapScope.set_local)rcCs|j |¡dS)N)r]r#)rrrrrr#szWrapScope.del_localcCs|j ¡dS)N)r]r*)rrrrr*!szWrapScope.clearcCs t|j|ƒS)N)Úgetattrr])rrrrrÚ __getattr__$szWrapScope.__getattr__cst|jƒtƒ ¡S)N)r>r]rKr?)r)rLrrr?'szWrapScope.__str__)r@rArBrCrrr r>r%rDrrrr!r#r*r_r?rNrr)rLrr2 sr2c@s\eZdZdZejeedœddƒZeedœddZ ejddƒZ
e e e
dd œd
d ƒZd S)
Ú
Expressionr)ÚcontextrcCsdS)Nr)rrarrrr AszExpression.valuecKs| |jf|Ž¡S)N)r r0)rrarWrrrÚ value_localFszExpression.value_localcCsdS)Nr)rrrrÚas_jsonJszExpression.as_json)ÚjsonrcCsˆ|dkr tS|dkrtS|dkr$tSt|ttfƒr:t|ƒSt|tƒrLt|ƒSt|t ƒr`t
  |¡St|t ƒrtt  |¡St
dt|ƒƒdS)NTFzillegal value : )Ú NullConstantÚ TrueConstantÚ
FalseConstantÚ
isinstanceÚintÚfloatÚConstantExpressionr>ÚComplexExpressionrXÚArrayExpressionÚparserSr<Ú _truncate)ÚclsrdrrrrnNs




zExpression.parseN)r@rArBrCrErFrÚTr rbrcÚ classmethodrÚJSONrnrrrrr`,sr`c@sheZdZdZedœddZeedœddƒZeedœd d
Z d d Z
d
dZ ddZ ddZ
ddZdS)rk)rQ)rRcCs
||_dS)N)rQ)rrRrrrr{szConstantExpression.__init__)rcCs|jS)N)rQ)rrrrrR~szConstantExpression.constant)rarcCs|jS)N)rQ)rrarrrr szConstantExpression.valuecCs|jS)N)rQ)rrrrrcszConstantExpression.as_jsoncCst|jƒdS))ÚhashrQ)rrrrÚ__hash__ˆszConstantExpression.__hash__cCs$t|tƒr|j|jkS|j|kSdS)N)rhrkrQ)rÚotherrrrÚ__eq__s
 zConstantExpression.__eq__cCs
t|jƒS)N)r>rQ)rrrrr?szConstantExpression.__str__cCs
t|jƒS)N)ÚreprrQ)rrrrrGszConstantExpression.__repr__N)r@rArBrCrqrÚpropertyrRrr rcrvrxr?rGrrrrrkisrkTc@sreZdZdZeedœddZddZeedœdd „Z d
d Z
e eed œd
dZ ddZ
eeddœddƒZdS)rm)Ú_content)ÚcontentcCs
||_dS)N)r{)rr|rrrrªszArrayExpression.__init__cCs
t|jƒS)N)Úlenr{)rrrrÚ__len__­szArrayExpression.__len__)ÚindexrcCs
|j|S)N)r{)rrrrrr°szArrayExpression.__getitem__cCs
t|jƒS)N)Úiterr{)rrrrÚ__iter__³szArrayExpression.__iter__)rarcCs|jS)N)r{)rrarrrr szArrayExpression.valuecCs|jS)N)r{)rrrrrc¹szArrayExpression.as_json)rdrcCst|ƒS)N)rm)rprdrrrrn¼szArrayExpression.parseN)r@rArBrCrrqrr~rirrrr rcrrÚ
JSON_ARRAYrnrrrrrms rmc@s4eZdZdZedœddZedœddZdd „Zd
S) ÚUndeterminedExpression)Ú_json)rdcCs
||_dS)N)r„)rrdrrrrÇszUndeterminedExpression.__init__)rcCstdt|jƒƒdS)Nzundetermined expression : )r<ror„)rrarrrr ÊszUndeterminedExpression.valuecCs|jS)N)r„)rrrrrcÍszUndeterminedExpression.as_jsonN) r@rArBrCÚ JSON_OBJECTrr r rcrrrrÁsc@eZdZdZdeeedœddZeedœddZ dd œd
d Z
eed œd
dZ ee e
edœddZee e
edœddZddZeeedefdœddƒZdS)rl)r4Ú
dependencyNcCs||_|dk r|ng|_dS)N)r4r†)rr4r†rrrrôszComplexExpression.__init__)rarcCs | |j¡S)N)r:r4)rrarrrr øszComplexExpression.valueÚExpressionTraveler)ÚtravelercCs| |¡dS)N)Úon_node)rrˆrrrÚtravelûszComplexExpression.travel)rcCsgS)Nr)rrrrÚ node_keysþszComplexExpression.node_keys)rrcCstdt|ƒ|fƒdS)Nz#expression %s does not have %s node)ÚAttributeErrorÚtype)rrrrrÚget_nodeszComplexExpression.get_node)rÚnodecCstdt|ƒ|fƒdS)Nz#expression %s does not have %s node)r)rrrrrrÚset_nodeszComplexExpression.set_nodecCs&d|ji}t|jƒdkr"|j|d<|S)Nr4rr†)r4r}r†)rr)rrrrc
s

zComplexExpression.as_json)rdrcCt|dtt|ƒdd}|dkr&t|ƒSd|kr8t |¡Sd|krJt |¡Sd|kr\t |¡Sd|kstd|kstd |kr~t |¡St|d
tt fddd}|dk r¼t
|tƒr®|g}nt t t|ƒƒ}t ||ƒSdS) Nr4T)ÚnullableÚwhenrXÚraiseÚtrueÚfalseÚelser†)
Ú_getr>roÚWhenExpressionrnÚListExpressionÚGuardExpressionÚBoolExpressionrXrhÚmaprl)rprdr4Údeprrrrns"




zComplexExpression.parse)N)r@rArBrCr>rrrrqr rrr`rrcrrr…rrnrrrrrlÑs!
rlc@eZdZdZdeeeeeeegdfeege feegdfdœddZ
edœddZ ed œd
d Z eeeed œd
dZ
ee dœddZedœddZdS)r‡)Z __on_nodeZ
__on_enterZ __on_exitZ__current_exprZ
__current_keyN)r‰Úon_enterÚon_exitcCs"||_||_||_d|_d|_dS)N)Ú_ExpressionTraveler__on_nodeÚ_ExpressionTraveler__on_enterÚ_ExpressionTraveler__on_exitÚ!_ExpressionTraveler__current_exprÚ _ExpressionTraveler__current_key)rr‰rrrr9s
zExpressionTraveler.__init__)ÚrootcCs(t|tƒr| |¡n| dd|¡dS)N)rhrlr )rrrrRs
 zExpressionTraveler.travel)rcCs| |j|j|¡dS)N)r )rrrrrr‰XszExpressionTraveler.on_node)ÚexprrrcCs@||_||_|dk r*t|tƒr*| |¡n| |j|jd¡dS)N)rhrlr )rrrrrrÚon_child[s
 zExpressionTraveler.on_child)rcCs |jdks| |¡rdSdSdS)NTF))rrrrdszExpressionTraveler.on_enter)cCs|jdk r| |¡dS)N))rrrrjs
zExpressionTraveler.on_exit)NN)r@rArBrCrrrlr>r`rDrr‰rrrrr‡5sB r‡ceZdZdZdeeeeeeeeeeeedœfdd
Z e
e deefdœfdd Z d d
œd d Z
eed
œddZeeeedœfdd Zeeeedœfdd ZfddZeeddœddƒZZS)r)Úif_trueÚif_falseÚor_elseN)r4r†cs$tƒ ||¡||_||_||_dS)N)rKr)rr4r†)rLrrrƒszBoolExpression.__init__)rarcsvtƒ |¡}|jdk r.|r.|j |jdd¡S|jdk rP|sP|j |jdd¡S|jdk rn|j |j|d¡SdSdS)NT)ÚVALUEF)rKr r0)rrar )rLrrr s 
zBoolExpression.valuer‡)rˆcCsR| |¡| |¡rN| |d|j¡| |d|j¡| |d|j¡| |¡dS)Nr”r•r)r‰)rrˆrrržs 

zBoolExpression.travel)rcCs
dddgS)Nr”r•rr)rrrrr§szBoolExpression.node_keys)rrcs:|dkr|jS|dkr|jS|dkr*|jStƒ |¡SdS)Nr”r•)rr)rK)rr)rLrrªszBoolExpression.get_node)rrcsJ| ¡}|dkr||_n.|dkr(||_n|dkr8||_ntƒ ||¡dS)Nr”r•)rr)Úlowerr¨rKr)rrr)rLrrr´szBoolExpression.set_nodecsVtƒ ¡}|jdk r"|j ¡|d<|jdk r:|j ¡|d<|jdk rR|j ¡|d<|S)Nr”r•r)rKrc)rr))rLrrrc¿s



zBoolExpression.as_json)rdrc Cs,t|dtdƒ}d}d}d}x¾| ¡D]²\}}| ¡}|dkrb|dkrPt |¡}qÖtdt|ƒƒq$|dkr|dkr~t |¡}qÖtdt|ƒƒq$|dkr¾|dkr¬t |¡}qÖtdt|ƒƒq$td |d
t|ƒƒq$Wt|d ttfd d
d}|dk rt |tƒr|g}ntt
t|ƒƒ}t |||||ƒS)Nr4zbool expressionr”z#bool expression "true" duplicate : r•z$bool expression "false" duplicate : )rrz#bool expression "else" duplicate : zunknown bool condition : z in r†zwhen expressionT)r) r—r>r,r`rnr<rorXrhr) rprdr4r.r/rrrrrnÍs2   
 zBoolExpression.parse)NNNN)r@rArBrCr>rr`rqrrrrr rrrcrrr…rnrNrr)rLrros8 
 rceZdZdZdeeeeefeeedœfdd
Z e
eeefdœddZ e d œd
d Z
eed œd
dZeeeeefdœfdd Zeeeeefdœfdd ZddZeeddœddƒZZS)r™)Ú_listN)Úexp_listr4r†cstƒ ||¡||_dS)N)rKrr­)rr4r†)rLrrrszListExpression.__init__)rarcCsR|jdk r| |j¡}n|d}|jt|ƒ}t|tƒrJ| |j|d¡S|SdS)Nr«))r4r:r­rirhr`r r0)rrar Úelementrrrr s

zListExpression.value)rˆcCsL| |¡| |¡rHx(t|jƒD]\}}| |t|ƒ|¡q W| |¡dS)N)r‰Ú enumerater­r>)rrˆÚir=rrrs


zListExpression.travel)rcCsttttt|jƒƒƒƒS)N)rXr>Úranger}r­)rrrrr"szListExpression.node_keys)rrc s4y|jt|ƒSttfk