NL i< DUdZddlmZddlZddlmZddlmZddlm Z m Z m Z m Z ddl mZmZmZmZmZddlmZmZmZmZmZmZmZmZmZmZmZmZm Z dd l!m"Z"m#Z#m$Z$m%Z%m&Z&dd l'm(Z(Gd d Z)Gd dZ*d$dZ+dZ,de-d<dZ.de-d<dZ/de-d<GddZ0GddZ1e dge gZ2de-d<d%dZ3d%dZ4e jejjjle jnejjjle jpejjjre jtejjjve jxejjjze j|ejjjviZ?de-d<e@ZAdd d&d!ZBd'd"ZCd(d#ZDy))z)Intermediate representation of functions.) annotationsN)Sequence)Final)ARG_POSArgKindBlockFuncDef) BITMAP_BITSJsonDict bitmap_nameget_id_from_nameshort_id_from_name) Assign AssignMulti BasicBlockBox ControlOp DeserMapsFloatInteger LoadAddress LoadLiteralRegisterTupleSetValue)RTypebitmap_rprimitivedeserialize_typeis_bool_rprimitiveis_none_rprimitive) NameGeneratorcdeZdZdZedf d dZed dZd dZd dZ e d dZ y) RuntimeArgzrDescription of a function argument in IR. Argument kind is one of ARG_* constants defined in mypy.nodes. Fc<||_||_||_||_yNnametypekindpos_only)selfr'typr)r*s V/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/ir/func_ir.py__init__zRuntimeArg.__init__*s      c6|jjSr%)r) is_optionalr+s r-optionalzRuntimeArg.optional2syy$$&&r/czdj|j|j|j|jS)Nz:RuntimeArg(name={}, type={}, optional={!r}, pos_only={!r}))formatr'r(r3r*r2s r-__repr__zRuntimeArg.__repr__6s.KRR IItyy$--  r/c|j|jjt|jj |j dS)Nr&)r'r( serializeintr)valuer*r2s r-r8zRuntimeArg.serialize;s:IIII'') (   r/c\t|dt|d|t|d|dS)Nr'r(r)r*)r#rrclsdatactxs r- deserializezRuntimeArg.deserializeCs8 L T&\3 / DL !     r/N) r'strr,rr)rr*boolreturnNonerCrBrCrArCr )r>r r?rrCr#) __name__ __module__ __qualname____doc__rr.propertyr3r6r8 classmethodr@r/r-r#r#$sm 6=u!!#!+2!HL! !''    r/r#cJeZdZdZd dZd dZd dZd dZd dZe ddZ y) FuncSignaturezSignature of a function in IR.cLt||_||_t|j|_|jrbt |jDcgc]}t t |td}}|jtt|z|_yycc}w)NT)r*) tupleargsret_typenum_bitmap_argsranger#r rreversed)r+rSrTiextras r-r.zFuncSignature.__init__Rs$K    /tyy9   t334;q>+ >r/c<d|jd|jdS)NzFuncSignature(args=z, ret=)rSrTr2s r-r6zFuncSignature.__repr__ks $TYYM 7HJJr/c|jr|jd|j }n |j}|Dcgc]}|jc}|jjdScc}w)Nra)rUrSr8rT)r+rSts r-r8zFuncSignature.serializensZ   994 4 445D99D045154==CZCZC\]]5sA-c t|dDcgc]}tj||c}t|d|Scc}w)NrSrT)rPr#r@r)r=r>r?args r-r@zFuncSignature.deserializeus@9=f F#Z # #C - F T*-s 3  Fs?N)rSSequence[RuntimeArg]rTrrCrD)rCtuple[RuntimeArg, ...]rCrPrFrG)r>r r?rrCrP) rHrIrJrKr.r[r^r6r8rMr@rNr/r-rPrPMs4( ; ? K^  r/rPcd}|D]9}|jjs|jjs5|dz };|tdz ztzS)Nrr])r( error_overlapr)r1r )rSnres r-rUrU}sQ A 88 ! !chh&:&:&< FA q !k 11r/r FUNC_NORMALr]FUNC_STATICMETHODFUNC_CLASSMETHODceZdZdZeddddf ddZeddZejddZeddZ e ddZ eddZ edd Z dd Zdd Ze dd Zedd Zy)FuncDeclzDeclaration of a function in IR (without body or implementation). A function can be a regular module-level function, a method, a static method, a class method, or a property getter/setter. Fc ||_||_||_||_||_||_||_|d|_n&|tk(r||_n|j|_||_ | |_ d|_ yr%) r' class_name module_namesigr)is_prop_setteris_prop_getterr^rmimplicitinternal_line) r+r'rsrtrur)rvrwrxrys r-r.zFuncDecl.__init__s} $& ,,  37DN((!$!$! ! "& r/c6|jJ|jSr%rzr2s r-linez FuncDecl.lineszz%%%zzr/c||_yr%r|)r+r}s r-r}z FuncDecl.lines  r/ct|jJt|j|j|jSr%)r}r r'fullnamer2s r-idz FuncDecl.ids-yy$$$ 4==$))DDr/c|r|dz|zS|SN.rNrsr's r-compute_shortnamezFuncDecl.compute_shortnames*4zC$&>$>r/cVtj|j|jSr%)rqrrsr'r2s r- shortnamezFuncDecl.shortnames))$//499EEr/c:|jdz|jzSr)rtrr2s r-rzFuncDecl.fullnames#%66r/ct|j|j|j}|j |j |Sr%)rr'rrz private_namert)r+names partial_names r-cnamezFuncDecl.cnames5)$))T^^TZZP !!$"2"2LAAr/c |j|j|j|jj |j |j |j|j|jd S)N) r'rsrtrur)rvrwrxry) r'rsrtrur8r)rvrwrxryr2s r-r8zFuncDecl.serializesZII//++88%%'II"11"11    r/c|d}tj|d|d}|ddz|z}t|d||dS)zCGet the id from the serialized FuncIR associated with this FuncDecldeclrsr'rtrr})rqrr )func_irrrrs r-get_id_from_jsonzFuncDecl.get_id_from_jsonsSv..tL/A4<P  &,y8V hHHr/c t|d|d|dtj|d||d|d|d|d|d  S) Nr'rsrtrur)rvrwrxry)rqrPr@r<s r-r@zFuncDecl.deserializesc L      % %d5k3 7 L ! " ! "      r/N)r'rArs str | NonertrArurPr)r9rvrBrwrBrxrBryrBrCrDrCr9)r}r9rCrDrF)rsrr'rArCrArr!rCrArG)rr rCrA)r>r r?rrCrq)rHrIrJrKrlr.rLr}setterr staticmethodrrrrr8rrMr@rNr/r-rqrqs5 $$$&$&$& $&  $&  $&$&$&$&$& $&L [[EE??FF77B  II    r/rqceZdZdZ d ddZeddZeddZeddZeddZ eddZ edd Z edd Z edd Z edd Zdd ZddZddZeddZy)FuncIRzIntermediate representation of a function with contextual information. Unlike FuncDecl, this includes the IR of the body (basic blocks). Nc^||_||_||_||j_||_yr%)rarg_regsblocksr}traceback_name)r+rrrr}rs r-r.zFuncIR.__init__s.     -r/c.|jjSr%)rr}r2s r-r}z FuncIR.lineyy~~r/cB|jjjSr%)rrurSr2s r-rSz FuncIR.argssyy}}!!!r/cB|jjjSr%)rrurTr2s r-rTzFuncIR.ret_typesyy}}%%%r/c.|jjSr%)rrsr2s r-rszFuncIR.class_name syy###r/c.|jjSr%)rrur2s r-ruz FuncIR.sig$syy}}r/c.|jjSr%)rr'r2s r-r'z FuncIR.name(rr/c.|jjSr%)rrr2s r-rzFuncIR.fullname,yy!!!r/c.|jjSr%)rrr2s r-rz FuncIR.id0syy||r/c.|jjSr%)rryr2s r-ryzFuncIR.internal4rr/c8|jj|Sr%)rr)r+rs r-rz FuncIR.cname8syyu%%r/ct|jrd|jd|jdSd|jdS)Nzrr2s r-r6zFuncIR.__repr__;s: ??doo.a {!< <dii[* *r/cf|jj|j|jdS)N)rr}r)rr8r}rr2s r-r8zFuncIR.serializeAs.II'')II"11  r/cZttj|d|gg|d|dS)Nrr}r)rrqr@r<s r-r@zFuncIR.deserializeIs5  fs 3RT&\4P`Ka  r/)N) rrqrlist[Register]rlist[BasicBlock]r}r9rrrCrDr)rCrf)rCr)rCrrhrFrErrG)r>r r?rrCr)rHrIrJrKr.rLr}rSrTrsrur'rrryrr6r8rMr@rNr/r-rrs%%) --!-! -  - # - -(""&&$$""""&+    r/rzINVALID_FUNC_DEFcXt|}t|}|D] }|jD]}t|trt|t t frF|j|vs9|j|j|j|jp|jr}t|tr^t|jtrD|j|vr6|j|j|j|j|j||S)zvReturn the set of all values that may be initialized in the blocks. This omits registers that are only read. )listsetops isinstancerrrdestappendaddis_voidrsrcr)rSrvaluesseen_registersblockops r- all_valuesrSs t*FYN&)) &Bb),b6;"78wwn4 bgg.&**2773ZZ#2{3&rvvx8FF.8 bff-&**2662MM"%# &&( Mr/ct|}t|}|D]}|jD]}|jD]:}t |t s||vs|j ||j|<t |trat |ttfrF|j|vs|j |j|j|j|jr|j ||S)z:Return set of all values that are initialized or accessed.) rrrsourcesrrrrrrrrr)rSrrrrrsources r-all_values_fullrrst*FYN&)) &B**, /fh/F.4PMM&)"&&v.  / b),b6;"78wwn4 bgg.&**2773ZZMM"% &&$ Mr/_ARG_KIND_TO_INSPECTF)boundcg}|jduxr"|jjtk7xr| }|r,|jj|jjn|jj }d}t |jD]A\}}|js|jtjtjfvs@|}Ct |jD]\}}|jjdr"||krtjj nt"|j}tjj$} |j&r*t)|j|j*} | t,urytj|j|| } |j/| |sd|j| _d}|jtj2|S)z}Return a text signature in CPython's internal doc format, or None if the function's signature cannot be represented. Nr)__bitmap__mypyc)default$F)rsrr)rmr^ru enumeraterSr*rrARG_OPTr' startswithinspect ParameterPOSITIONAL_ONLYremptyr3_find_default_argumentr_NOT_REPRESENTABLEr_name Signature) fnr parameters mark_selfru pos_only_idxidxrer)r curr_params r-get_text_signaturersJd*aAR1Ra\aXaI$):):)F"''  BGGKKCLchh'S <.rvv66 77 r/ct|trHt|jry|j }t |jr t |S|St|tr |jSt|tr |jSt|trt|jSt|tr6td|jD}t!d|Drt"S|St"S)Nc32K|]}t|ywr%)r).0items r- z*_extract_python_literal..sL-d3Lsc3,K|] }|tuywr%)r)ritms r-rz*_extract_python_literal..s:Ss((:s)rrr r( numeric_valuerrBrr:rrrrrrRitemsanyr)r:valrs r-rrs%! ejj )!!# ejj )9  E5 !{{ E; '{{ E3 &uyy11 E8 $L LL :E: :% % r/)rSrgrCr9)rSrrrrCz list[Value])rrrrBrCr)r'rArrrCobject)r:rrCr)ErK __future__rrcollections.abcrtypingr mypy.nodesrrrr mypyc.commonr r r r r mypyc.ir.opsrrrrrrrrrrrrrmypyc.ir.rtypesrrrrr mypyc.namegenr!r#rPrUrl__annotations__rmrorqrrrrrPOSITIONAL_OR_KEYWORDrARG_STARVAR_POSITIONAL ARG_NAMED KEYWORD_ONLY ARG_STAR2 VAR_KEYWORD ARG_NAMED_OPTrrrrrrrNr/r-rsu/"$77aa(& & R- - `2 U5%m m `S S l""6E"IF%F>6 OOW&&<< OOW&&<< g''66 w((55 w((44 7,,99 eX5:#7Lr/