Skip to content

mmikolajczyk95/depyc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

             decompyle -- A Python byte-code decompiler
                          Version 2.3
                          12 May 2004

Homepage: http://adal.eu.org/decompyle.php

versions up to 2.2 of 'decompyle' were made by Hartmut Goebel
(http://www.crazy-compilers.com/decompyle/)

Introduction
------------

'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.3.

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.

'decompyle' is based on John Aycock's generic small languages compiler
'spark' (http://www.csr.uvic.ca/~aycock/python/) and his prior work on
'decompyle'.

Features
--------

  * decompyles Python byte-code into equivalent Python source

  * decompyles byte-code from Python versions 1.5 up to 2.3

  * pretty-prints docstrings, hashes, lists and tuples
  
  * supports an option for verifing the generated Python source is
    equivalent to the byte-code. This is done by compiling the
    generated source and comparing both byte-codes.

  * decompyles and successfully verifies 100% of the Python 1.5, 2.0,
    2.1 and 2.2 library

  * decompyles and successfully verifies 100% of the Python 1.5
    library, including lib-stdwin, lib-tk, gnome and gtk.

  * reads directly from .pyc/.pyo files, bulk-decompyle whole
    directories

  * output may be written to file, a directory or to stdout

  * option for including byte-code disassembly into generated source

  * If translation fails, the part causing the problem is output. This
    helps improofing 'decompyle'. If this happens to you, please
    contact the author.

  For a list of changes please refer to the 'CHANGES' file.


Requirements
------------

'decompyle' requires Python 2.2 or later.


Installation
------------

You may either create a RPM and install this, or install directly from
the source distribution.

Creating RPMS:

  python setup.py bdist_rpm

  If you need to force the python interpreter to eg. pyton2:
     python2 setup.py bdist_rpm --python=python2


Installation from the source distribution:

     python setup.py install

   To install to a user's home-dir:
     python setup.py install --home=<dir>

   To install to another prefix (eg. /usr/local)
     python setup.py install --prefix=/usr/local

  If you need to force the python interpreter to eg. pyton2:
     python2 setup.py install

  For more information on 'Installing Python Modules' please refer to
     http://www.python.org/doc/current/inst/inst.html


Usage
-----

decompyle -h        prints short usage
decompyle --help    prints long usage


Known Bugs/Restrictions
-----------------------

* 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).

* 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'.

* Python 2.2 generated different byte-code than prior version for the
  same source. This is due the intruduction of iterators. Currently
  'decompyle' fails verifying this source if the byte-code was
  generated by an older version of Python.

* Some sources generated by Python 2.3 can't be decompiled

About

Automatically exported from code.google.com/p/depyc

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published