Skip to main content

Python byte-code disassembler and source-code converter

Project description

buildstatus

uncompyle6

A native Python Byte-code Disassembler, Decompiler, and byte-code library

Introduction

uncompyle6 translates Python byte-code back into equivalent Python source code. It accepts byte-codes from Python version 2.5 to 3.4 or so and has been tested on Python 2.6, 2.7 and Python 3.4.

Why this?

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

I using this to deparse fragments of code inside my trepan debuggers. For that, I need to record text fragements for all byte-code 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 version of Python different from the one used to compile the bytecode.

Installation

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

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 -y

for usage help

Known Bugs/Restrictions

Python 3 deparsing is getting there, but not solid. Using Python 2 to deparse Python 3 is problematic, especilly for versions 3.4 and greater.

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.0.0.tar.gz (309.2 kB view details)

Uploaded Source

Built Distributions

uncompyle6-2.0.0-py3.4.egg (85.3 kB view details)

Uploaded Source

uncompyle6-2.0.0-py3-none-any.whl (42.1 kB view details)

Uploaded Python 3

uncompyle6-2.0.0-py2.7.egg (83.9 kB view details)

Uploaded Source

uncompyle6-2.0.0-py2.6.egg (84.2 kB view details)

Uploaded Source

uncompyle6-2.0.0-py2-none-any.whl (42.1 kB view details)

Uploaded Python 2

File details

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

File metadata

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

File hashes

Hashes for uncompyle6-2.0.0.tar.gz
Algorithm Hash digest
SHA256 93895b3c03b5ff6d4bde7240547c4dc7c89ece601d083064c66253d646bf74a1
MD5 f76b61f3af94545fc2136a37984ce711
BLAKE2b-256 94c8341a593e1092cc2f0f6b0ca0794ebf5c9f563c50ae17d55799da7babbcbf

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for uncompyle6-2.0.0-py3.4.egg
Algorithm Hash digest
SHA256 84a5b0726564770aee21aa110e03ec46debace5397d54a75b610ff1e91c80231
MD5 a353aad74a7522cc74394df929c4a845
BLAKE2b-256 40ed13b6718ecf2d10294d6b38a7afadc792fe92f3996b224a61473400dbd416

See more details on using hashes here.

Provenance

File details

Details for the file uncompyle6-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for uncompyle6-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 714f5febd1e541acb68c125d0946b9e1035bfb7e2c2f38fc4c5a3e4a9270d78f
MD5 e31ff236c16bac7f8ef7090ebad75934
BLAKE2b-256 b3996f7341ca74c11a0ffd0dca454ffa9fba40630f24f86d3d9ef59c00960790

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for uncompyle6-2.0.0-py2.7.egg
Algorithm Hash digest
SHA256 73dc0de7372d657138072ac39b17315d291a945876e4954bc077cb7ec41fa655
MD5 3fbbd339699434b141ca8aef38ab5bc3
BLAKE2b-256 a45349fab33c0e332d3398f5aeeb19930e8a0a56ab953371d1d9958f0e9defd7

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for uncompyle6-2.0.0-py2.6.egg
Algorithm Hash digest
SHA256 73b3676b8df0ccbedd5166197ce0b91748716a75339bd8c8827894019485104a
MD5 dc954a843e6c25e951adceb9c0854cf9
BLAKE2b-256 54620a790b9d8e87cbea94f2dfa090e2bad34fac5cacf8fba6dc028c9116d734

See more details on using hashes here.

Provenance

File details

Details for the file uncompyle6-2.0.0-py2-none-any.whl.

File metadata

File hashes

Hashes for uncompyle6-2.0.0-py2-none-any.whl
Algorithm Hash digest
SHA256 d0aba96d97064f271857b3499a2181c338f103817c985e2649d1d3335b5cbfb2
MD5 11b59b5f237911f5545a3b4210f1e84d
BLAKE2b-256 a870b0580882bcaf73e79880a7ee5dc4ef3d8e3c06173267d1e927127d205580

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