Python Uncompyle6 Versions Save

A cross-version Python bytecode decompiler

3.9.1

1 month ago

Lots of changes major changes. track xdis API has changes.

Separate Phases more clearly:

  • disassembly
  • tokenization
  • parsing
  • abstracting to AST (more is done in newer projects)
  • printing

Although we do not decompile bytecode greater than 3.8, code supports running from up to 3.12.

Many bugs fixed.

A lot of Linting and coding style modernization.

Work done in preparation for Blackhat Asia 2024

3.9.0

1 year ago
  • deparse generator expressions for Python 3.0 .. 3.2
  • Python 3.0 list comprehension.
  • Fix Issues #310, #344, #377, #391, #409, #414
  • Limited support for 3.8+ f-string "=" specifier
  • Correct 2.5-7 relative import formatting
  • Miscellaneous bug fixing
  • remove \n in lambda
  • Python 2.6 gramar cleanup
  • Correct some Python 2.6 chain compare decompilation
  • Ensure no parenthesis subscript slices
  • Correct 2.x formatting "slice2" nonterminal
  • Correct 3.7 imports
  • Improve "async for" parsing
  • Handle BUILD_MAP opcode
  • match Python AT better
  • Correct 3.7 positional args
  • PyPy 3.7 and PyPy 3.8 support
  • Miscellaneous linting, isorting, blacking

3.8.0

2 years ago
  • Better handling of invalid bytecode magic
  • Support running from 3.9 and 3.10 although we do not support those bytecodes
  • Redo version comparisons using tuples instead of floats. This is needed for Python 3.10
  • Split out into 3 branches so that the master branch can assume Python 3.6+ conventions, especially type annotations
  • Source Fragment fixes
  • Lambda-bug fixes #360
  • Bug fixes

3.7.4

3 years ago
  • Fragment parsing was borked. This means deparsing in trepan2/trepan3k was broken
  • 3.7+: narrow precedence for call tatement
  • del_stmt -> delete to better match Python AST
  • 3.8+ Add another forelsestmt (found only in a loop)
  • 3.8+ Add precedence on walrus operator
  • More files blackened
  • bump min xdis version

3.7.3

3 years ago

Mostly small miscellaneous bug fixes

  • __doc__ = DocDescr() from test_descr.py was getting confused as a docstring.
  • detect 2.7 exchandler range better
  • Add for .. else reduction checks on 2.6 and before
  • Add reduce check for 2.7 augmented assign
  • Add VERSION in a pydoc-friendly way

3.7.2

3 years ago
  • Use newer xdis
  • Docstrings (again) which were broken again on earlier Python
  • Fix 2.6 and 2.7 decompilation bug in handling "list if" comprehensions

3.7.1

3 years ago

Released to pick up new xdis version which has fixes to read bytestings better on 3.x

  • Handle 3.7+ "else" branch removal adAs seen in _cmp() of python3.8/distutils/version.py with optimization -O2
  • 3.6+ "with" and "with .. as" grammar improvements
  • ast-check for "for" loop was missing some grammar rules

3.7.0

3 years ago

The main impetus for this release is to pull in the recent changes from xdis. We simplify imports using xdis 4.6.0.

There were some bugfixes to Python 3.4-3.8. See the ChangeLog for details

3.6.6

3 years ago

The main reason for this release is an incompatablity bump in xdis which handles 3.7 SipHash better.

  • Go over "yield" as an expression precidence
  • Some small alignment with code in decompyle3 for "or" and "and" was done

3.6.7

3 years ago

More upheaval in xdis which we need to track here.