You've already forked python-uncompyle6
mirror of
https://github.com/rocky/python-uncompyle6.git
synced 2025-08-04 01:09:52 +08:00
validation now uses xdis for python2 support
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
# std
|
# std
|
||||||
import string
|
import string
|
||||||
# 3rd party
|
# 3rd party
|
||||||
from hypothesis import given, assume, settings, example, strategies as st
|
from hypothesis import given, assume, strategies as st
|
||||||
import pytest
|
import pytest
|
||||||
# uncompyle
|
# uncompyle
|
||||||
from validate import validate_uncompyle
|
from validate import validate_uncompyle
|
||||||
|
@@ -2,18 +2,23 @@
|
|||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
# std
|
# std
|
||||||
import os
|
import os
|
||||||
import dis
|
|
||||||
import difflib
|
import difflib
|
||||||
import subprocess
|
import subprocess
|
||||||
import tempfile
|
import tempfile
|
||||||
|
import functools
|
||||||
# compatability
|
# compatability
|
||||||
import six
|
import six
|
||||||
# uncompyle6 / xdis
|
# uncompyle6 / xdis
|
||||||
from uncompyle6 import PYTHON_VERSION, deparse_code
|
from uncompyle6 import PYTHON_VERSION, IS_PYPY, deparse_code
|
||||||
|
# TODO : I think we can get xdis to support the dis api (python 3 version) by doing something like this there
|
||||||
|
from xdis.bytecode import Bytecode
|
||||||
|
from xdis.main import get_opcode
|
||||||
|
opc = get_opcode(PYTHON_VERSION, IS_PYPY)
|
||||||
|
Bytecode = functools.partial(Bytecode, opc=opc)
|
||||||
|
|
||||||
|
|
||||||
def _dis_to_text(co):
|
def _dis_to_text(co):
|
||||||
return dis.Bytecode(co).dis()
|
return Bytecode(co).dis()
|
||||||
|
|
||||||
|
|
||||||
def print_diff(original, uncompyled):
|
def print_diff(original, uncompyled):
|
||||||
@@ -99,9 +104,8 @@ def are_code_objects_equal(co1, co2):
|
|||||||
|
|
||||||
:return: True if the two code objects are approximately equal, otherwise False.
|
:return: True if the two code objects are approximately equal, otherwise False.
|
||||||
"""
|
"""
|
||||||
# TODO : Use xdis for python2 compatability
|
instructions1 = Bytecode(co1)
|
||||||
instructions1 = dis.Bytecode(co1)
|
instructions2 = Bytecode(co2)
|
||||||
instructions2 = dis.Bytecode(co2)
|
|
||||||
for opcode1, opcode2 in zip(instructions1, instructions2):
|
for opcode1, opcode2 in zip(instructions1, instructions2):
|
||||||
if not are_instructions_equal(opcode1, opcode2):
|
if not are_instructions_equal(opcode1, opcode2):
|
||||||
return False
|
return False
|
||||||
|
Reference in New Issue
Block a user