Skip to main content

Python byte-code disassembler and source-code converter

Project description

buildstatus

uncompyle6

A native Python bytecode Disassembler, Decompiler, Fragment Decompiler and bytecode library

Introduction

uncompyle6 translates Python bytecode back into equivalent Python source code. It accepts bytecodes from Python version 2.5 to 3.4 or so and has been tested on Python running versions 2.6, 2.7, 3.3, 3.4 and 3.5.

Why this?

What makes this different from other CPython bytecode decompilers? Its ability to deparse just fragments and give source-code information around a given bytecode offset.

I use this to deparse fragments of code inside my trepan debuggers. For that, I need to record text fragments for all bytecode offsets (of interest). This purpose although largely compatible with the original intention is yet a little bit different. See this for more information.

The idea of Python fragment deparsing given an instruction offset can be used in showing stack traces or any program that wants to show a location in more detail than just a line number. It can be also used when source-code information does not exist and there is just bytecode information.

Other parts of the library can be used inside Python for various bytecode-related tasks. For example you can read in bytecode, i.e. perform a version-independent marshal.loads(), and disassemble the bytecode using a version of Python different from the one used to compile the bytecode.

Installation

This uses setup.py, so it follows the standard Python routine:

pip install -r requirements.txt
pip install -r requirements-dev.txt
python setup.py install # may need sudo
# or if you have pyenv:
python setup.py develop

A GNU makefile is also provided so make install (possibly as root or sudo) will do the steps above.

Testing

make check

A GNU makefile has been added to smooth over setting running the right command, and running tests from fastest to slowest.

If you have remake installed, you can see the list of all tasks including tests via remake –tasks

Usage

Run

./bin/uncompyle6 -h
./bin/pydisassemble -h

for usage help

Known Bugs/Restrictions

Python 2 deparsing is probably as solid as the various versions of uncompyle2. Python 3 deparsing is okay but not as solid.

See Also

The HISTORY file.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uncompyle6-2.3.0.tar.gz (153.2 kB view details)

Uploaded Source

Built Distributions

uncompyle6-2.3.0-py3.5.egg (281.1 kB view details)

Uploaded Source

uncompyle6-2.3.0-py3.4.egg (282.5 kB view details)

Uploaded Source

uncompyle6-2.3.0-py2.py3-none-any.whl (130.5 kB view details)

Uploaded Python 2 Python 3

uncompyle6-2.3.0-py2.7.egg (278.3 kB view details)

Uploaded Source

uncompyle6-2.3.0-py2.6.egg (279.2 kB view details)

Uploaded Source

File details

Details for the file uncompyle6-2.3.0.tar.gz.

File metadata

  • Download URL: uncompyle6-2.3.0.tar.gz
  • Upload date:
  • Size: 153.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for uncompyle6-2.3.0.tar.gz
Algorithm Hash digest
SHA256 ffce0620e787cfc55aacc4dc684d4f7e37d4df74bab194880cb0530925783610
MD5 d4cc2caf90eb0cc2718c09bfb87e0a7b
BLAKE2b-256 fdc8e935eebee1fc66d32f73b0c12ccf368020b468b23f813f09d1fdf7e2c779

See more details on using hashes here.

Provenance

File details

Details for the file uncompyle6-2.3.0-py3.5.egg.

File metadata

File hashes

Hashes for uncompyle6-2.3.0-py3.5.egg
Algorithm Hash digest
SHA256 5c1bfe4b3440ef4a3a8e240246c2b75175a63b7280069b4ac83a0aaaee1abd10
MD5 22481720958869524aea82c790f730ce
BLAKE2b-256 9238fb5556e00e6bfe6a9904c3947598bdc381a3d1268783da078b45c147744f

See more details on using hashes here.

Provenance

File details

Details for the file uncompyle6-2.3.0-py3.4.egg.

File metadata

File hashes

Hashes for uncompyle6-2.3.0-py3.4.egg
Algorithm Hash digest
SHA256 17da0c74d724808179beb68ac6bf9f19d5ab9cd24aad16d76e13fab67f925a64
MD5 f39cb050b883a1cdb839d862d184aa1d
BLAKE2b-256 52872dd44a57f95c7152991cb1c904c2ca9e80fc1ec753423899ba2413066ffa

See more details on using hashes here.

Provenance

File details

Details for the file uncompyle6-2.3.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for uncompyle6-2.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1e5c6967e235bf6de815711c997086e5ac4b33c769d1d52403e1f9987583269b
MD5 b3a146e381e122e05f6f3c29558bb24a
BLAKE2b-256 8348e8cc16cc56fcf496e5ad4544d3111b3e3fa3e0532f887f6669972508f43d

See more details on using hashes here.

Provenance

File details

Details for the file uncompyle6-2.3.0-py2.7.egg.

File metadata

File hashes

Hashes for uncompyle6-2.3.0-py2.7.egg
Algorithm Hash digest
SHA256 ade148322c666b3f0be5967c824f69f20009bce5ccd506f76c781b01e7db87fc
MD5 736a63f2f14d69a93d1db0451dc17553
BLAKE2b-256 2fcc6878bab4b02f82e021a0d18636cb6ea6d78febc3ef10599149022023ec3e

See more details on using hashes here.

Provenance

File details

Details for the file uncompyle6-2.3.0-py2.6.egg.

File metadata

File hashes

Hashes for uncompyle6-2.3.0-py2.6.egg
Algorithm Hash digest
SHA256 12e9884fff58ee8704dd44a065782d15f2f9a50f73bafa0e9c92bd3c1a361dc9
MD5 2c2acc84dd40785ffcd1199cd604f86a
BLAKE2b-256 7fd3b5f0106ab036505c3c5487efc68ea4f75320a8e61b1a05f973860af35fcc

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page