You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-02 16:44:46 +08:00
Start accepting Python 3.1 bytecode
This commit is contained in:
@@ -23,7 +23,7 @@ check:
|
|||||||
check-2.6 check-2.7: check-bytecode-2 check-bytecode-3 check-2.7-ok
|
check-2.6 check-2.7: check-bytecode-2 check-bytecode-3 check-2.7-ok
|
||||||
|
|
||||||
#: Run working tests from Python 3.1
|
#: Run working tests from Python 3.1
|
||||||
check-3.2: check-bytecode
|
check-3.1: check-bytecode
|
||||||
$(PYTHON) test_pythonlib.py --bytecode-3.1 --verify $(COMPILE)
|
$(PYTHON) test_pythonlib.py --bytecode-3.1 --verify $(COMPILE)
|
||||||
|
|
||||||
#: Run working tests from Python 3.2
|
#: Run working tests from Python 3.2
|
||||||
@@ -91,6 +91,10 @@ check-bytecode-2.6:
|
|||||||
check-bytecode-2.7:
|
check-bytecode-2.7:
|
||||||
$(PYTHON) test_pythonlib.py --bytecode-2.7
|
$(PYTHON) test_pythonlib.py --bytecode-2.7
|
||||||
|
|
||||||
|
#: Check deparsing Python 3.1
|
||||||
|
check-bytecode-3.1:
|
||||||
|
$(PYTHON) test_pythonlib.py --bytecode-3.1
|
||||||
|
|
||||||
#: Check deparsing Python 3.2
|
#: Check deparsing Python 3.2
|
||||||
check-bytecode-3.2:
|
check-bytecode-3.2:
|
||||||
$(PYTHON) test_pythonlib.py --bytecode-3.2
|
$(PYTHON) test_pythonlib.py --bytecode-3.2
|
||||||
|
BIN
test/bytecode_3.1/31_while_loops.pyc
Normal file
BIN
test/bytecode_3.1/31_while_loops.pyc
Normal file
Binary file not shown.
@@ -31,7 +31,8 @@ TEST_VERSIONS=('2.3.7', '2.4.6', '2.5.6', '2.6.9',
|
|||||||
'pypy-2.4.0', 'pypy-2.6.1',
|
'pypy-2.4.0', 'pypy-2.6.1',
|
||||||
'pypy-5.0.1', 'pypy-5.3.1',
|
'pypy-5.0.1', 'pypy-5.3.1',
|
||||||
'2.7.10', '2.7.11', '2.7.12',
|
'2.7.10', '2.7.11', '2.7.12',
|
||||||
'3.2.6', '3.3.5', '3.3.6', '3.4.2', '3.5.1')
|
'3.1.5', '3.2.6', '3.3.5', '3.3.6',
|
||||||
|
'3.4.2', '3.5.1')
|
||||||
|
|
||||||
target_base = '/tmp/py-dis/'
|
target_base = '/tmp/py-dis/'
|
||||||
lib_prefix = os.path.join(os.environ['HOME'], '.pyenv/versions')
|
lib_prefix = os.path.join(os.environ['HOME'], '.pyenv/versions')
|
||||||
|
@@ -79,7 +79,8 @@ for vers in (2.7, 3.4, 3.5, 3.6):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
for vers in (2.2, 2.3, 2.4, 2.5, 2.6, 2.7,
|
for vers in (2.2, 2.3, 2.4, 2.5, 2.6, 2.7,
|
||||||
3.2, 3.3, 3.4, 3.5, 3.6, 'pypy3.2', 'pypy2.7'):
|
3.1, 3.2, 3.3,
|
||||||
|
3.4, 3.5, 3.6, 'pypy3.2', 'pypy2.7'):
|
||||||
bytecode = "bytecode_%s" % vers
|
bytecode = "bytecode_%s" % vers
|
||||||
key = "bytecode-%s" % vers
|
key = "bytecode-%s" % vers
|
||||||
test_options[key] = (bytecode, PYC, bytecode, vers)
|
test_options[key] = (bytecode, PYC, bytecode, vers)
|
||||||
|
34
uncompyle6/scanners/scanner31.py
Normal file
34
uncompyle6/scanners/scanner31.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Copyright (c) 2015-2016 by Rocky Bernstein
|
||||||
|
"""
|
||||||
|
Python 3.2 bytecode scanner/deparser
|
||||||
|
|
||||||
|
This sets up opcodes Python's 3.2 and calls a generalized
|
||||||
|
scanner routine for Python 3.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import print_function
|
||||||
|
|
||||||
|
# bytecode verification, verify(), uses JUMP_OPs from here
|
||||||
|
from xdis.opcodes import opcode_32 as opc
|
||||||
|
JUMP_OPs = map(lambda op: opc.opname[op], opc.hasjrel + opc.hasjabs)
|
||||||
|
|
||||||
|
from uncompyle6.scanners.scanner3 import Scanner3
|
||||||
|
class Scanner31(Scanner3):
|
||||||
|
|
||||||
|
def __init__(self, show_asm=None, is_pypy=False):
|
||||||
|
Scanner3.__init__(self, 3.1, show_asm, is_pypy)
|
||||||
|
return
|
||||||
|
pass
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
from uncompyle6 import PYTHON_VERSION
|
||||||
|
if PYTHON_VERSION == 3.1:
|
||||||
|
import inspect
|
||||||
|
co = inspect.currentframe().f_code
|
||||||
|
tokens, customize = Scanner32().ingest(co)
|
||||||
|
for t in tokens:
|
||||||
|
print(t)
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
print("Need to be Python 3.1 to demo; I am %s." %
|
||||||
|
PYTHON_VERSION)
|
@@ -201,6 +201,13 @@ def cmp_code_objects(version, is_pypy, code_obj1, code_obj2,
|
|||||||
else:
|
else:
|
||||||
import uncompyle6.scanners.scanner27 as scan
|
import uncompyle6.scanners.scanner27 as scan
|
||||||
scanner = scan.Scanner27()
|
scanner = scan.Scanner27()
|
||||||
|
elif version == 3.1:
|
||||||
|
if is_pypy:
|
||||||
|
import uncompyle6.scanners.pypy31 as scan
|
||||||
|
scanner = scan.ScannerPyPy31()
|
||||||
|
else:
|
||||||
|
import uncompyle6.scanners.scanner32 as scan
|
||||||
|
scanner = scan.Scanner32()
|
||||||
elif version == 3.2:
|
elif version == 3.2:
|
||||||
if is_pypy:
|
if is_pypy:
|
||||||
import uncompyle6.scanners.pypy32 as scan
|
import uncompyle6.scanners.pypy32 as scan
|
||||||
|
Reference in New Issue
Block a user