Merge branch 'python-3.0-to-3.2' into python-2.4-to-2.7

This commit is contained in:
rocky
2024-07-13 09:50:58 -04:00
3 changed files with 25 additions and 10 deletions

View File

@@ -87,6 +87,12 @@ for vers in TEST_VERSIONS:
else:
if vers == "native":
short_vers = os.path.basename(sys.path[-1])
from xdis.version_info import PYTHON_VERSION_TRIPLE, version_tuple_to_str
if PYTHON_VERSION_TRIPLE > (3, 0):
version = version_tuple_to_str(end=2)
PYC = "*.cpython-%s.pyc" % version
>>>>>>> python-3.0-to-3.2
test_options[vers] = (sys.path[-1], PYC, short_vers)
else:
short_vers = vers[:3]

View File

@@ -300,17 +300,25 @@ class Scanner3(Scanner):
if count < 5:
return None
collection_start = i - (count * 2)
assert (count * 2) <= i
if self.version >= (3, 5):
# Newer Python BUILD_MAP argument's count is a
# key and value pair so it is multiplied by two.
collection_start = i - (count * 2)
assert (count * 2) <= i
for j in range(collection_start, i, 2):
if insts[j].opname not in ("LOAD_CONST",):
return None
if insts[j + 1].opname not in ("LOAD_CONST",):
return None
for j in range(collection_start, i, 2):
if insts[j].opname not in ("LOAD_CONST",):
return None
if insts[j + 1].opname not in ("LOAD_CONST",):
return None
collection_start = i - (2 * count)
collection_enum = CONST_COLLECTIONS.index("CONST_MAP")
collection_start = i - (2 * count)
collection_enum = CONST_COLLECTIONS.index("CONST_MAP")
# else: Older Python count is sum of all key and value pairs
# Each pair is added individually like:
# LOAD_CONST ("Max-Age")
# LOAD_CONST ("max-age")
# STORE_MAP
# If we get here, all instructions before tokens[i] are LOAD_CONST and
# we can replace add a boundary marker and change LOAD_CONST to
@@ -509,7 +517,7 @@ class Scanner3(Scanner):
if try_tokens is not None:
new_tokens = try_tokens
continue
elif opname in ("BUILD_MAP",):
elif opname in ("BUILD_MAP",) and self.version >= (3, 5):
try_tokens = self.bound_map_from_inst(
self.insts,
new_tokens,

View File

@@ -20,6 +20,7 @@ import re
from uncompyle6.semantics.consts import INDENT_PER_LEVEL, PRECEDENCE, TABLE_DIRECT
from uncompyle6.semantics.helper import flatten_list
# FIXME get from a newer xdis
FSTRING_CONVERSION_MAP = {1: "!s", 2: "!r", 3: "!a", "X": ":X"}