NL iGdZddlmZddlmZddlmZddlmZm Z m Z ddl m Z ddl mZmZddlmZdd lmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDdd lEmFZFmGZGmHZHe ee4fZIGd d e5eJZKdd ZL ddZMdddZNddZOddZPy)z:Utilities for pretty-printing IR in a human-readable form.) annotations) defaultdict)Sequence)AnyFinalUnion) short_name)FuncIRall_values_full) ModuleIRs)2 ERR_NEVERAssign AssignMulti BasicBlockBoxBranchCallCallCCast ComparisonOp ControlOpCStringDecRefExtendFloatFloatComparisonOpFloatNegFloatOpGetAttr GetElementPtrGotoIncRef InitStaticIntegerIntOp KeepAlive LoadAddressLoadErrorValue LoadGlobal LoadLiteralLoadMem LoadStatic MethodCallOp OpVisitor PrimitiveOpRaiseStandardErrorRegisterReturnSetAttr SetElementSetMemTruncateTupleGetTupleSetUnborrowUnboxUndef UnreachableValue)RTypeis_bool_rprimitiveis_int_rprimitiveceZdZUdZd1dZd2dZejdejdiZ de d<d3dZ d4d Z d5d Z d6d Zd7d Zd8d Zd9dZd:dZd;dZddZd?dZd@dZdAdZdBdZdCdZdDdZdEdZdFdZdGdZdHdZ dIdZ!dJdZ"dKd Z#dLd!Z$dMd"Z%dNd#Z&dOd$Z'dPd%Z(dQd&Z)dRd'Z*dSd(Z+dTd)Z,dUd*Z-dVd+Z.dWd,Z/dXd-Z0dYd.Z1dZd/Z2y0)[IRPrettyPrintVisitorz(Internal visitor that pretty-prints ops.c||_yN)names)selfrFs U/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/ir/pprint.py__init__zIRPrettyPrintVisitor.__init__Hs  c:|jd|jS)Nzgoto %l)formatlabelrGops rH visit_gotozIRPrettyPrintVisitor.visit_gotoNs{{9bhh//rJ)%rbool)z is_error(%r)rbranch_op_namescB|j|j\}}|jrd|}|j||j}d}|j rd|j z}d|d|d}|r|d|z }|j||j |jS)Nznot rSz (error at %s:%d)zif z goto %lz else goto %l :: )rTrOnegatedrLvaluetraceback_entrytruefalse)rGrOfmttypcondtbs rH visit_branchz!IRPrettyPrintVisitor.visit_branchSs''.S ::,C{{3)   $r'9'99BD6"]3  T#< C{{322rJc:|jd|jS)Nz return %r)rLrXrNs rH visit_returnz!IRPrettyPrintVisitor.visit_returnas{{;11rJcy)N unreachablerNs rHvisit_unreachablez&IRPrettyPrintVisitor.visit_unreachabledsrJcP|jd|j|jS)Nz%r = %r)rLdestsrcrNs rH visit_assignz!IRPrettyPrintVisitor.visit_assigngs{{9bggrvv66rJcjd|jdjfd|jDS)Nz %r = [%s], c3BK|]}jd|ywrQNrL.0vrGs rH z:IRPrettyPrintVisitor.visit_assign_multi..ks:`TU4;;tQ;O:`)rLrhjoinrirNs` rHvisit_assign_multiz'IRPrettyPrintVisitor.visit_assign_multijs0{{;:`Y[Y_Y_:`1`aarJc<|jd||jS)Nz%r = :: %s)rLtyperNs rHvisit_load_error_valuez+IRPrettyPrintVisitor.visit_load_error_valuems{{/RWW==rJc^d}t|jtrd}t|j}t|jtrHt |jt Dcgc] }t|}}ddj|zdz}|jd|||Scc}w)NrSzobject )keyz frozenset({rlz})z %r = %s%s) isinstancerXintrepr frozensetsortedstrrurL)rGrOprefixrvalueiformatted_itemss rHvisit_load_literalz'IRPrettyPrintVisitor.visit_load_literalps bhh $Fbhh bhh *17rxxS0IJ1tAwJOJ"TYY%??$FF{{;FF;;Ks+B*cr|jd||j||j|jS)Nz %r = %s%r.%s)rL borrow_prefixobjattrrNs rHvisit_get_attrz#IRPrettyPrintVisitor.visit_get_attrs,{{>2t/A/A"/ErvvrwwWWrJc|jryy)Nzborrow rS) is_borrowedrNs rHrz"IRPrettyPrintVisitor.borrow_prefixs >>rJc4|jr|jtk(sJ|jtk(r2|jd|j|j |j S|jd|j|j |j |S)Nz %r.%s = %rz%r.%s = %r; %r = is_error)is_init error_kindr rLrrrirNs rHvisit_set_attrz#IRPrettyPrintVisitor.visit_set_attrsm ::==I- -- ==I %;;|RVVRWWbffE E;;:BFFBGGRVVUWX XrJc|jrdt|jdnd}|j}|j|jd|}|j d|||j |S)N ()rS.z%r = %s :: %s%s)annr~ identifier module_namerL namespace)rGrOrnames rHvisit_load_staticz&IRPrettyPrintVisitor.visit_load_staticsd')vvDL>#2}} >> %nn%Qtf-D{{,b$ cJJrJc|j}|j|jd|}|jd||j|jS)Nrz %s = %r :: %s)rrrLrXrrGrOrs rHvisit_init_staticz&IRPrettyPrintVisitor.visit_init_staticsG}} >> %nn%Qtf-D{{?D"((BLLIIrJcr|jd||j||j|jS)Nz %r = %s%r[%d])rLrriindexrNs rHvisit_tuple_getz$IRPrettyPrintVisitor.visit_tuple_gets/{{?B0B0B20FPRPXPXYYrJcrdjfd|jD}jd||S)Nrlc3BK|]}jd|ywrnro)rqitemrGs rHrsz7IRPrettyPrintVisitor.visit_tuple_set..sJT[[t4Jrtz %r = (%s))ruitemsrL)rGrOitem_strs` rHvisit_tuple_setz$IRPrettyPrintVisitor.visit_tuple_sets.99JJJ{{;H55rJc|jd|j}t|jjst |jjr/|dt |jjj z }|S)Nz inc_ref %rrV)rLrir@rxrAr rrGrOss rH visit_inc_refz"IRPrettyPrintVisitor.visit_inc_refs` KK bff - bffkk *.? .L 4 266;;#3#3456 6ArJc6|jd|jrdnd|j}t|jjst |jjr/|dt |jjjz }|S)Nz %sdec_ref %rxrSrV)rLis_xdecrir@rxrAr rrs rH visit_dec_refz"IRPrettyPrintVisitor.visit_dec_refsj KKrzzr266 J bffkk *.? .L 4 266;;#3#3456 6ArJcdjfd|jD}|jj}|d|d}|jsj d||z}|S)Nrlc3BK|]}jd|ywrnrorqargrGs rHrsz2IRPrettyPrintVisitor.visit_call..CCT3/Crt(r%r = )ruargsfn shortnameis_voidrL)rGrOrr rs` rH visit_callzIRPrettyPrintVisitor.visit_calls[yyC277CCUU__ l!D6 #zz GR(1,ArJcdjfd|jD}jd|j|j|}|j sjd||z}|S)Nrlc3BK|]}jd|ywrnrors rHrsz9IRPrettyPrintVisitor.visit_method_call..rrtz %r.%s(%s)r)rurrLrmethodr)rGrOrrs` rHvisit_method_callz&IRPrettyPrintVisitor.visit_method_callsXyyC277CC KK RVVRYY =zz GR(1,ArJc|jrd}nd}|jd|||j||j|jS)Nz unchecked rSz%r = %s%scast(%s, %r)) is_uncheckedrLrrxri)rGrOrs rH visit_castzIRPrettyPrintVisitor.visit_castsG ??!FF{{ #R1C1CB1GRTRXRX  rJcf|jd||jj|jS)Nz%r = box(%s, %r))rLrirxrNs rH visit_boxzIRPrettyPrintVisitor.visit_boxs${{-r266;;GGrJcR|jd||j|jS)Nz%r = unbox(%s, %r))rLrxrirNs rH visit_unboxz IRPrettyPrintVisitor.visit_unboxs {{/RWWbffEErJc||jt|jtr1|jd||jt |jSt|jt r(|jd||j|jSJd|jd||jS)Nz%r = raise %s(%s)z%r = raise %s(%r)z&value type must be either str or Valuez %r = raise %s)rXr|rrL class_namer~r>rNs rHvisit_raise_standard_errorz/IRPrettyPrintVisitor.visit_raise_standard_errors 88 "((C({{#6BMM4PRPXPX>ZZBHHe,{{#6BMM288TTFFFu;;BMMB BrJcdjfd|jD}|jrjd|j|Sjd||j|S)Nrlc3BK|]}jd|ywrnrors rHrsz4IRPrettyPrintVisitor.visit_call_c..GT[[s3Grtz%s(%s)z %r = %s(%s))rurrrL function_namerGrOargs_strs` rH visit_call_cz!IRPrettyPrintVisitor.visit_call_csV99GrwwGG ::;;x)9)98D D;;}b"2B2BHM MrJcdjfd|jD}|jr'jd|jj |Sjd||jj |S)Nrlc3BK|]}jd|ywrnrors rHrsz:IRPrettyPrintVisitor.visit_primitive_op..rrtz%s %sz %r = %s %s)rurrrLdescrrs` rHvisit_primitive_opz'IRPrettyPrintVisitor.visit_primitive_opsZ99GrwwGG ::;;w h? ?;;|RxH HrJch|jd||j|j|jS)Nz%r = truncate %r: %t to %t)rLrisrc_typerxrNs rHvisit_truncatez#IRPrettyPrintVisitor.visit_truncates){{7RVVR[[RTRYRYZZrJc|jrd}nd}|jd|||j|j|jS)Nz signedrSz%r = extend%s %r: %t to %t)signedrLrirrx)rGrOextras rH visit_extendz!IRPrettyPrintVisitor.visit_extends< 99EE{{7UBFFBKKY[Y`Y`aarJc|jrdt|jdnd}|jd||j|S)NrrrSz%r = load_global %s :: static%s)rr~rLr)rGrOrs rHvisit_load_globalz&IRPrettyPrintVisitor.visit_load_globals;')vvDL>#2{{+>ruu+Ervv{  rJc|jd||jtj|j|j Sr)rLrrrrOrrNs rHvisit_float_opz#IRPrettyPrintVisitor.visit_float_op s.{{?Bruu8MrvvVVrJc<|jd||jS)Nz%r = -%rrLrirNs rHvisit_float_negz$IRPrettyPrintVisitor.visit_float_neg s{{:r26622rJc|jd||j|j|j|jSr)rLrrrOrrNs rHvisit_float_comparison_opz.IRPrettyPrintVisitor.visit_float_comparison_ops.{{?B "%%8H"&&QQrJcr|jd||j||j|jS)Nz%r = %sload_mem %r :: %t*)rLrrirxrNs rHvisit_load_memz#IRPrettyPrintVisitor.visit_load_mems1{{ 'T-?-?-CRVVRWW  rJcf|jd|j|j|jS)Nzset_mem %r, %r :: %t*)rLrhri dest_typerNs rH visit_set_memz"IRPrettyPrintVisitor.visit_set_mems${{2BGGRVVR\\RRrJch|jd||j|j|jS)Nz %r = get_element_ptr %r %s :: %t)rLrifieldrrNs rHvisit_get_element_ptrz*IRPrettyPrintVisitor.visit_get_element_ptrs){{=r266288UWU`U`aarJch|jd||j|j|jS)Nz%r = set_element %r, %s, %r)rLrirrrNs rHvisit_set_elementz&IRPrettyPrintVisitor.visit_set_elements){{8"bffbhhPRPWPWXXrJct|jtr|jd||jSt|jtro|jj }|jj |jj d|}|jd|||jjS|jd||jS)Nz%r = load_address %rrz%r = load_address %s :: %sz%r = load_address %s)r|rir2rLr,rrrrs rHvisit_load_addressz'IRPrettyPrintVisitor.visit_load_address!s bffh ';;5r266B B  +66$$Dvv!!-&&,,-Qtf5;;;RrvvGWGWX X;;5r266B BrJc |jrd}nd}jdj|djfd|jDS)Nzsteal rSzkeep_alive {}{}rlc3BK|]}jd|ywrnrorps rHrsz8IRPrettyPrintVisitor.visit_keep_alive..2s5[qdkk$6J5[rt)stealrLruri)rGrOrs` rHvisit_keep_alivez%IRPrettyPrintVisitor.visit_keep_alive,sK 88EE{{  $ $UDII5[TVTZTZ5[,[ \  rJc<|jd||jS)Nz%r = unborrow %rrrNs rHvisit_unborrowz#IRPrettyPrintVisitor.visit_unborrow5s{{-r266::rJcg}d}t|}|t|krN|jd|}|dkr t|}|j||||t|kr||dz}|j d}|dk(rt |t sJt |tr&|jt|jnt |tr&|jt|jnTt |tr!|jd|jdn#t |tr)|jd|jjn|j|j |n|dk(r|jd |zn|d k(r|jd |zn|d k(r1t |t"sJ|jd |j$zna|dk(r.t |t&sJ|j|jn.|dk(r|jt|nt)d||dz}n|}|t|krNdj+|S)a2Helper for formatting strings. These format sequences are supported in fmt: %s: arbitrary object converted to string using str() %r: name of IR value/register %d: int %f: float %l: BasicBlock (formatted as label 'Ln') %t: RType r%rzCString(rzundef dz%dfz%flzL%strzInvalid format sequence %rS)listlenfindappendpopr|r>r$rrXrr~rr<rxrrFrrMr? ValueErrorru) rGr\rresultrarglistntypespecrs rHrLzIRPrettyPrintVisitor.format:s t*#c(la A1uH MM#a( #3s8|q1u:kk!ns?%c5111!#w/ c#))n5#C/ d399o6#C1  Q&?@#C/ sxx}}o&>? djjo6_MM$*-_MM$*-_%c:666MM%#))"34_%c5111MM#((+_MM#c(+$'@ %KLLEU#c(lVwwvrJN)rFdict[Value, str]returnNone)rOr!rr)rOrrr)rOr3rr)rOr=rr)rOrrr)rOrrr)rOr(rr)rOr*rr)rOrrr)rOr.rr)rOr4rr)rOr,rr)rOr#rr)rOr8rr)rOr9rr)rOr"rr)rOrrr)rOrrr)rOr-rr)rOrrr)rOrrr)rOr;rr)rOr1rr)rOrrr)rOr0rr)rOr7rr)rOrrr)rOr)rr)rOr%rr)rOrrr)rOrrr)rOrrr)rOrrr)rOr+rr)rOr6rr)rOr rr)rOr5rr)rOr'rr)rOr&rr)rOr:rr)r\rrrrr)3__name__ __module__ __qualname____doc__rIrPrBOOLIS_ERRORrT__annotations__r`rbrfrjrvryrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrLrerJrHrCrCEs 2 0%kk>6??L`aOUa 327b><&X YKJ Z6 HF CNI[bVU  W3R SbY C ; :rJrCc(g}d}t|j|j}|t|kr|}|||g}|dzt|krr||dzj||jk(rP|dz }|j ||||dzt|kr#||dzj||jk(rP|dz }|j dj dj|||j|t|kr|S)Nrr z{} :: {}rl)r arg_regsblocksrrxrrLru)func_irrFrrregsi0groups rHformat_registersr,ws F A 7++W^^ .sHEAGGOHsz (handler for {})rlzL%d:%sz ERR: r N z [MISSING BLOCK EXIT OPCODE]) enumeraterM error_handler setdefaultrrCrrLruopsr|r!rgetacceptrr3r=)r'rFsource_to_errorrblock handler_mapr/visitorlines handler_msglabelserrorr5rOlines rH format_blocksrAsf%5 79K B ??  " "1??B 7 > >q AB#5)G Ef%<5 K H[5GHHF-44TYYv5FGK Xk ::; O #(/ 0 wug./ 0ii s2w %AF #B A.#''B4cr(C 4BBIIg..D LL _$,R04ELL75'!234  4%))B-$ )LM LL: ;;<< LrJc g}|jr|jdznd}|jdj||jdj d|j Dt |j|j}t||D]}|jd|ztt}|D]\}}||j|t|j||} |j| |S)NrrSz def {}{}({}):rlc34K|]}|jywrE)r)rqrs rHrszformat_func..s=Z3chh=Zsr1)rrrLrrurgenerate_names_for_irr&r'r,rrrAextend) rerrorsr< cls_prefixrFr@r8sourcer?codes rH format_funcrJs E(* $2J LLz277DII=ZRTRYRY=Z4Z[ ""++ryy 9E U+$ Vd]#$"$'O. &&u-. E? ;D LL LrJcg}|jD]>}|jD]-}|jt||j d/@|S)NrS)values functionsrErJr)modulesr5modulers rHformat_modulesrPsT C..""" B JJ{2 ' JJrN  JrJc i}t}d}|D],}|j||<|j|j.|D]3}|jD] }g}|j D]} | |vs|j | t |ttfr|j |jn2t |ts |jr||vr|j ||D]} | |vrt | tr| jr | j} n&t | tttfrMd|z} |dz }| |vrd} d| | fz} | |vr| } n| dz } | || <|j| #6|S)zGenerate unique names for IR values. Give names such as 'r5' to temp values in IR which are useful when pretty-printing or generating C. Ensure generated names are unique. rzr%dr rz%s_%d)setraddr5sourcesrr|rrrhrrr2r$rr<)rr'rF used_names temp_indexrr9rOrLrHrXrr candidates rHrDrDs !EJJ!XXc sxx !%%))$ %BF**, *&MM&) *"v{34 bgg&B *bjj5 b! %E>eX.5:: ::D'>? :-D!OJ:%A$+tQi$7 $J6#,D!Q  $e t$- %$ %%%N LrJN)r(r rFrr list[str])r'list[BasicBlock]rFrr8zdict[ErrorSource, list[str]]rrX)re)rr rFz!Sequence[tuple[ErrorSource, str]]rrX)rNr rrX)rzlist[Register]r'rYrr)Qr! __future__r collectionsrcollections.abcrtypingrrr mypyc.commonr mypyc.ir.func_irr r mypyc.ir.module_irr mypyc.ir.opsr rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>mypyc.ir.rtypesr?r@rA ErrorSourcerrCr,rArJrPrDrerJrHrds@"#$$$#4(3333333333333hIHJN# o9S>od 0 0 020 0f&6rJ