mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2024-11-23 13:09:49 +00:00
bc71bf7acd
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)
|