From d48801964c478bf7a1657f166b872c313f1ece7d Mon Sep 17 00:00:00 2001 From: rocky Date: Tue, 26 Apr 2022 02:34:00 -0400 Subject: [PATCH] Use attr insead of pattrr for non-strings --- test/bytecode_3.3_run/05_long_literals.pyc | Bin 0 -> 19810 bytes test/bytecode_3.6_run/05_long_literals.pyc | Bin 0 -> 15723 bytes uncompyle6/scanners/scanner3.py | 17 +++++++++++------ uncompyle6/scanners/scanner37.py | 2 ++ uncompyle6/semantics/n_actions.py | 2 +- 5 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 test/bytecode_3.3_run/05_long_literals.pyc create mode 100644 test/bytecode_3.6_run/05_long_literals.pyc diff --git a/test/bytecode_3.3_run/05_long_literals.pyc b/test/bytecode_3.3_run/05_long_literals.pyc new file mode 100644 index 0000000000000000000000000000000000000000..69eab14bbe7bea3f7c5b207718c68ff70fa43cfc GIT binary patch literal 19810 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 literal 0 HcmV?d00001 diff --git a/test/bytecode_3.6_run/05_long_literals.pyc b/test/bytecode_3.6_run/05_long_literals.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e73e3a0f4426315e51741977f063c686bec74413 GIT binary patch literal 15723 zcmeI%XOvY{o`&&zDMEn+$vFusC_>fQyONSY1Qbva)B;4{7CBi32xbr^iWmS%0tSL4 zvw|XEA}B~u&{Be8LcyHlybsj=ub!SSJ+r1i%q*Jq{OWqpz1z~4<5E|uREhc1`}bXX zQ7m>O_7DI2IUb9()Nkiyo*s)0h-JqTCw>e_3ZG8?_9;(&2mZId12f|T8vWn=yK7)J z|G%^2Ij4S{`VRaXz5^$haq91`Q{RDq$9G_6eBjAncjJjdiKIl~M3F?%M6pEjf@J-w z7EcsUlvq$GJC+lh8BhGK{!o9aztrC|3ngMIt_rCnRag~KMO87Ctct4=>NHhSl~Scu z8FjiUtIDbJs)DMhDyhnQdOj!@+wWGs|=N?vefzN0@YMCQ_WQi)l#)mtyLSFO>uL*1=rs(aME>OOV9nx$r|IqCs5SItxN)dICpJ*XC`#cGLq zNIk3`QID#nYMENDR;b6+O0`O@R%_H+^|*RMJ*l2jPpfCtv+6nZyjrK$s~6OZYJ+-7 zZB(1oX7#dqMZKzCQ?IKnYOC6&wyQVPn`(#Jsoqk%)NZv$?Nx89cho+$U%ji|Q~BzB z^?^E|4yr@yu=-Gaq>iYM)hFsx^_luy9aUebFV!)1Tz#d!R^O;^)pzQ9^@I9R{iJ?Y zzo=i;Z|ZmThx$|frT(6or2Qvp|4G_^lJ>7(KU5J_R25Uns<I_v+)mLY#v((wDfoiDEQRk{g>O9q0 zHBl)lRYl4vuhLYy%21gqOP#MSP)$`c)m*huEmbSkTD4Ja)rG2^x=6KG9aKkkvARTc zQk_*7b*Z{cU9P&SD^xetU0tcJQdg^N)kF1Ez0@_Tx4KsKQGHcEl~6gVzZ#$hszGY7 z8lr}(VQRP6fRIbWXqts|MMqRJQs&VQDb)&jT-K=g=x2oIJcr`)Yt|qEG)SYUQ znyjX%scM>Px<}os?o;=xS!%YLqaILm)jTy{El>;9gKCjltd^*U)Whl# z^{85^mZ{}xg?db_RIAi#wMMN~kEMzu+8 zRxhhp)T`<>^}5=kwyJGvyLv;tsdlKH>MgZP?N)o#UiG$mN9|Ml)w}9Fm9O4cAE*QB zpgN=us}I#j>WKPSeWE^9pQ+E)QT2uTQXNyr)mQ3ky~BT*8DH>IcA=bjB37CAz24S| z(@y+zKuP_RK&cb|EKoX8CUJVAY@%GEe4;|4Vxm%_a-vG2YNA@AdZI?6W};T2cA`$A zt~MA?{JNlSb|HQJt!u2oH%YPBQT>~Q*wI3u--;bA3dNu}oCYOD!{q#U-~4#L{CG}& zd_aDDV19gXetbxN(cGL-qjQHJEzIvzD3{Z6PaIT)KQb9gKq)8x0DpZ5&Py=d0EvOB3pe~#N^`JhS31`9C&;T03IdCpCg7cs;G=UUIg$NvY zNP~39fK14O^Wg$$3eBK7w1Ae-3R*)OXbTrYJJ7%5i5+bZ9iSsz43|JB=nP%pQn(B* zhpuo1bc612C0qqpLpJn)p3n=ff!=T}^nt$64-$|A{b2wMgh4PEhQLr52E$3H^I$t3)~8~!FZSex5GrZ1MY-LFd3%6RG0?S;Vzf~cf(A$ z2kwRY;C`3|vtbTA0CQm;%!dWA5FUg@uo#xWL+~&>0*}H{SO&{s1v~~TVHK=~HLw;Q zhbQ1kcnY3|XW&_Q4xWc~upVB37hwau1RG%!Y=)QN6?he1gV$jTY=v#G9o~R9VF&Dl zw_q3ShCQ$s-iCKzAMA&B;XTNQ_u&IL00-d^9EK0!BRB#d!zb`5dR%C2le4hI1A2(2G9`B zfpeh|oCl4e38X+OMBu!p1+;`#&>Gr6TeuL~!9~y>IzUIb z7%qWM&>6bGrEnQs4qf32=my>4O1KKHhHU5oJ)sv|1HIu|=mUMBA0!|L`ojPi2!miS z41u9A42Hu97zx(_uf#!lFbYP)7`PtB!Z^4AZiJiQX1E1zh1*~}On}>ABHRIY!X%gs zQ(!7ggXwS=%z(RLCfoz}!hLW*%!1i42OfaAFc0R#0$2zS!Xj7K-t3y;GS@FYA1Ps20tEIbF#!#Y?GFTjhi0bYWQun9K9%kT=k3a`QI zum!flHrNhtz?-lGcEVe*3wFaE*b8sNJFpM-!@KYv$0UUsXa0m{=hwu>`fsf%6 z_!K^a&*3P10bjx~I1XRI*YFK|3*W)_@B{n^KZypAUvx~Lp`&wB3%*7LUtPghU+^`p z;A?up*NlR%nFU|7@{653CnbDH4IiTL!G#Y#d`Jr)(!+<0@F6pN2q#D3<(vlIJ-k*E%;---Qn#HZ+B?0;rFvUG}-XX?$Bt%GrL2xEqJEghEH~fmK&bg z9olYqW_M`4;hEi`{T4jafWs%dLlX|q><*1MJhMAA7{+0G-|d1O0}Z0C`)@0IO5vYkh^^T>7{+0G-|d1O0}Z0C{fJkp!_1tencbncb$DiX=zSfY*&TXg7d*3_N4E1wFYWNNc86Zu;hEi`7k7AOcj(m}p4lC? z^GI*+f}gdWM|yvUXLg6);Nh9wp?7$AW_RcIS&V~li5YB;fp%I)1jiCvoKq^Gwz(X3OLk46*7Mu?kKvQT2 z&7lRfgjUcR+CW>l5Zb{-&>lKKN4OX+flkmFy1=Dy8C(us;R@&m-Qh~O3a*B1=m9;U z7hD6q;acbeeW4#DAP4%x02l~^U@#1Up)d@F!w47&*Fi4i!6+CFW8iui3*+DhxDjrG zo8cC?6>fv^Fad6diEszp36o$lOo6E|4W`3gFaz#}nQ#x>3-`hOFbihG9C!fc!aSG{ z3t%BU2#a7bEP;pMVR!@{g{80zmct5o3|7J_SPg4nEj$iSz?1M4JPpslv+x`|59?q( zyZ|r426zcJ!Y0@ZFT*SFD!c}-!xq>I+h9Aq0dK+%*a>gJF4zrwU@yE4@4!CT5AVWz zkPq*}2XFum!XY>eAHqj)1U`mO;8XYvK8K_51$+s|;5d8*U&A->Eqn*x!w>Ky`~*M4 zFYqh;2EW4}@F)BQe?u%T;!p^ZpfD7HqEHNy#i{>5tM5S?--vX`fK14O^Wg$$3eBK7 zw1Ae-3R*)OXbTrYJGcniLkH*x7sDmc2|7a;xD+mf%b_b=0o|ZGTnSgf)sPK6peOW# zYoIq=3w@w3^n(QCKz|qj17Q#hh9NK%hQV+c0VCl$$b~!@1*2gMTn}Sm9NYjm!cA~9 z+yb}4Z7?1t!0j**?tnXC5=@3EFcqf3bhry~M}VGXQ>$KeTh5}tym;Td=qo`dIM9ju2J z;6>N~FTqCG1e@Vycm-aC*Wh*70$X7lY=<}CP1pfD;Vsw&yI~LPg}31y*a!RJU3d@j z;eGf34!}V;1c%{6_y~@`$M6Y!3ZKE}a1_3PFX0#*hp*sk_y)d(@8Em*0e*y^;Ahb= zDL+0oKi;R{KeXnp&_6Kg@dh2BZfCgN$Wjy z#P9*VhYlK*liO!#UgMGD@{^km8<7}2G^cqn{koc0vPdjexJZeT72^NXAJvNg^B-BI zXyK%Pe)g~b_J2L^zwyT=7mEMmkL02yiWQ0%KK0|&ci_}_;Q#%1pmd3%|7rdI_$$G` J_PIpTe*j|O2WbER literal 0 HcmV?d00001 diff --git a/uncompyle6/scanners/scanner3.py b/uncompyle6/scanners/scanner3.py index cb540823..f20803a2 100644 --- a/uncompyle6/scanners/scanner3.py +++ b/uncompyle6/scanners/scanner3.py @@ -230,10 +230,13 @@ class Scanner3(Scanner): for j in range(collection_start, i): if insts[j].opname not in ( + "LOAD_ASSERT", + "LOAD_CODE", "LOAD_CONST", "LOAD_FAST", "LOAD_GLOBAL", "LOAD_NAME", + "LOAD_STR", ): return None @@ -376,11 +379,13 @@ class Scanner3(Scanner): for i, inst in enumerate(self.insts): opname = inst.opname + argval = inst.argval + pattr = inst.argrepr t = Token( opname=opname, - attr=inst.argval, - pattr=inst.argrepr, + attr=argval, + pattr=pattr, offset=inst.offset, linestart=inst.starts_line, op=inst.opcode, @@ -431,8 +436,8 @@ class Scanner3(Scanner): j = xdis.next_offset(op, self.opc, jump_offset) come_from_opname = self.opname_for_offset(j) - if opname.startswith("SETUP_"): - come_from_type = opname[len("SETUP_") :] + if come_from_opname.startswith("SETUP_"): + come_from_type = come_from_opname[len("SETUP_") :] come_from_name = "COME_FROM_%s" % come_from_type pass elif inst.offset in self.except_targets: @@ -465,8 +470,6 @@ class Scanner3(Scanner): pass - pattr = inst.argrepr - if op in self.opc.CONST_OPS: const = argval if iscode(const): @@ -640,6 +643,8 @@ class Scanner3(Scanner): last_op_was_break = opname == "BREAK_LOOP" t.kind = opname + t.attr = argval + t.pattr = pattr new_tokens.append(t) pass diff --git a/uncompyle6/scanners/scanner37.py b/uncompyle6/scanners/scanner37.py index 28b280ff..c93a822d 100644 --- a/uncompyle6/scanners/scanner37.py +++ b/uncompyle6/scanners/scanner37.py @@ -65,10 +65,12 @@ class Scanner37(Scanner37Base): for j in range(collection_start, i): if tokens[j].kind not in ( + "LOAD_CODE", "LOAD_CONST", "LOAD_FAST", "LOAD_GLOBAL", "LOAD_NAME", + "LOAD_STR", ): return next_tokens + [t] diff --git a/uncompyle6/semantics/n_actions.py b/uncompyle6/semantics/n_actions.py index b6a9b822..30cb0fe0 100644 --- a/uncompyle6/semantics/n_actions.py +++ b/uncompyle6/semantics/n_actions.py @@ -227,7 +227,7 @@ class NonterminalActions: self.indent_more(INDENT_PER_LEVEL) sep = "" if is_dict: - keys = flat_elems[-1].pattr + keys = flat_elems[-1].attr assert isinstance(keys, tuple) assert len(keys) == len(flat_elems) - 1 for i, elem in enumerate(flat_elems[:-1]):