decompyle -- A Python byte-code decompiler
version 2.2 beta 1
'decompyle' converts Python byte-code back into equivalent Python source. It accepts byte-code from any Python version starting with 1.5 up to 2.2.
The generated source is very readable: docstrings, lists, tuples and hashes get pretty-printed.
'decompyle' may also verify the equivalence of the generated source by by compiling it and comparing both byte-codes.
New Features ------------
Since Release 0.6.0:
* Now decompyles byte-code from Python versions 1.5 up to 2.2
* Now requires Python 2.2 but is able to decompyle older byte-coe, too. Prior version of decompyle had to be run with the Python version which generated the byte-code.
* pretty-prints docstrings, hashes, lists and tuples
* decompyle is now a script and a package
* Now adds an emacs mode-hint and tab-width to the output files
* enhanced test suite: more test patterns, .pyc/.pyo included
* avoids unnecessary 'global' statements
* many internal changes and code overhouls
Please refere to the file 'CHANGES' for a list of changes in this release.
Where to get it? ----------------
The source archives and instructions for isntalling the package can be found at:
Simple Help Needed! -------------------
Please help testing 'decompyle'!
The EXTENDED_ARG token is untested (this is a new token for Python 2.0 which is used only if many items exist within a code object). If you have byte-code which does or may include this token, please try to decompyle your application.
It's easy: the script 'test_pythonlib' which is included in the source distribution does the job for you. Just read the simple instruction there.
'decompyle' requires Python 2.2 or later.
Known Bugs/Restrictions -----------------------
* The EXTENDED_ARG token is untested (this is a new token for Python 2.0 which is used only if many items exist within a code object).
* Byte-code generated by Python 2.2 differs byte-code generated by a prior version even for the same source. This is due the intruduction of iterators. Currently 'Decompyle' fails verifying the source if the byte-code was generated by an older version of Python.
* Verifying decompyled source with optizimzed byte code (.pyo) when running without optimizations (option '-O' not given) fails in most cases. Same is true for vis-a-versa. This is due to the fact that Python generated different bytecode depending on option '-O'.