You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-03 00:45:53 +08:00
Runtime testing took too long because ranges were larger than needed Also use newer convention for marking runable codes
50 lines
1.4 KiB
Python
Executable File
50 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python
|
|
""" Trivial helper program to byte compile and uncompile the bytecode file.
|
|
"""
|
|
import os, sys, py_compile
|
|
from xdis.version_info import version_tuple_to_str, PYTHON_VERSION_TRIPLE
|
|
|
|
if len(sys.argv) < 2:
|
|
print("Usage: add-test.py [--run] *python-source*... [optimize-level]")
|
|
sys.exit(1)
|
|
|
|
assert 2 <= len(sys.argv) <= 4
|
|
version = sys.version[0:3]
|
|
vers = sys.version_info[:2]
|
|
if sys.argv[1] in ("--run", "-r"):
|
|
suffix = "_run"
|
|
assert len(sys.argv) >= 3
|
|
py_source = sys.argv[2:]
|
|
i = 2
|
|
else:
|
|
suffix = ""
|
|
py_source = sys.argv[1:]
|
|
i = 1
|
|
try:
|
|
optimize = int(sys.argv[-1])
|
|
assert sys.argv >= i + 2
|
|
py_source = sys.argv[i:-1]
|
|
i = 2
|
|
|
|
except:
|
|
optimize = 2
|
|
|
|
for path in py_source:
|
|
short = os.path.basename(path)
|
|
if short.endswith(".py"):
|
|
short = short[: -len(".py")]
|
|
if hasattr(sys, "pypy_version_info"):
|
|
version = version_tuple_to_str(end=2, delimiter="")
|
|
bytecode = "bytecode_pypy%s%s/%spy%s.pyc" % (version, suffix, short, version)
|
|
else:
|
|
version = version_tuple_to_str(end=2)
|
|
bytecode = "bytecode_%s%s/%s.pyc" % (version, suffix, short)
|
|
|
|
print("byte-compiling %s to %s" % (path, bytecode))
|
|
if PYTHON_VERSION_TRIPLE >= (3, 2):
|
|
py_compile.compile(path, bytecode, optimize=optimize)
|
|
else:
|
|
py_compile.compile(path, bytecode)
|
|
if PYTHON_VERSION_TRIPLE >= (2, 6):
|
|
os.system("../bin/uncompyle6 -a -t %s" % bytecode)
|