Skip to main content

Python cross-version byte-code disassembler and marshal routines

Project description

TravisCI CircleCI PyPI Installs Latest Version Supported Python Versions

packagestatus

xdis

A Cross-Python bytecode disassembler, bytecode/wordcode and magic-number manipulation library/package.

Introduction

The Python dis module allows you to disassemble bytecode from the same version of Python that you are running on. But what about bytecode from different versions?

That’s what this package is for. It can “marshal load” Python bytecodes from different versions of Python. The command-line routine pydisasm will show disassembly output using Python 3.8 disassembly conventions.

Also, if you need to modify and write bytecode, the routines here can be of help. There are routines to pack and unpack the read-only tuples in Python’s Code type. For interoperability between Python 2 and 3 we provide our own versions of the Code type, and we provide routines to reduce the tedium in writing a bytecode file.

This package also has an extensive knowledge of Python bytecode magic numbers, including Pypy and others, and how to translate from sys.sys_info major, minor, and release numbers to the corresponding magic value.

So If you want to write a cross-version assembler, or a bytecode-level optimizer this package may also be useful. In addition to the kinds of instruction categorization that dis offers, we have additional categories for things that would be useful in such a bytecode optimizer.

The programs here accept bytecodes from Python version 1.0 to 3.8 or so. The code requires Python 2.4 or later and has been tested on Python running lots of Python versions.

To install versions for Python before 2.6 install via eggs or use the python-2.4 branch of git in github.

Installation

The standard Python routine:

$ pip install -e .
$ pip install -r requirements-dev.txt

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/pydisasm -h

for usage help.

As a drop-in replacement for dis

xdis also provides some support as a drop in replacement for the the Python library dis module. This is may be desirable when you want to use the improved API from Python 3.4 or later from an earlier Python version.

For example:

>>> # works in Python 2 and 3
>>> import xdis.std as dis
>>> [x.opname for x in dis.Bytecode('a = 10')]
['LOAD_CONST', 'STORE_NAME', 'LOAD_CONST', 'RETURN_VALUE']

There may some small differences in output produced for formatted disassembly or how we show compiler flags. We expect you’ll find the xdis output more informative though.

See Also

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

xdis-5.0.13.tar.gz (293.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

xdis-5.0.13-py39-none-any.whl (130.1 kB view details)

Uploaded Python 3.9

xdis-5.0.13-py38-none-any.whl (130.1 kB view details)

Uploaded Python 3.8

xdis-5.0.13-py37-none-any.whl (130.1 kB view details)

Uploaded Python 3.7

xdis-5.0.13-py35-none-any.whl (130.0 kB view details)

Uploaded Python 3.5

xdis-5.0.13-py34-none-any.whl (130.0 kB view details)

Uploaded Python 3.4

xdis-5.0.13-py33-none-any.whl (125.9 kB view details)

Uploaded Python 3.3

xdis-5.0.13-py3.9.egg (248.3 kB view details)

Uploaded Egg

xdis-5.0.13-py3.8.egg (248.6 kB view details)

Uploaded Egg

xdis-5.0.13-py3.7.egg (250.3 kB view details)

Uploaded Egg

xdis-5.0.13-py3.6.egg (250.4 kB view details)

Uploaded Egg

xdis-5.0.13-py3.5.egg (252.7 kB view details)

Uploaded Egg

xdis-5.0.13-py3.4.egg (253.6 kB view details)

Uploaded Egg

xdis-5.0.13-py3.3.egg (254.9 kB view details)

Uploaded Egg

xdis-5.0.13-py3.2.egg (251.9 kB view details)

Uploaded Egg

xdis-5.0.13-py3.1.egg (249.0 kB view details)

Uploaded Egg

xdis-5.0.13-py2.7.egg (258.9 kB view details)

Uploaded Egg

xdis-5.0.13-py2.6.egg (259.4 kB view details)

Uploaded Egg

xdis-5.0.13-py2.5.egg (259.6 kB view details)

Uploaded Egg

xdis-5.0.13-py2.4.egg (264.5 kB view details)

Uploaded Egg

File details

Details for the file xdis-5.0.13.tar.gz.

File metadata

  • Download URL: xdis-5.0.13.tar.gz
  • Upload date:
  • Size: 293.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13.tar.gz
Algorithm Hash digest
SHA256 5b8e767a8c38a8d5f45ddaefd3a616808c326a703ce0e51eb71b7ea2fd1f5632
MD5 d995372d719cfe932ee12ec5e20244de
BLAKE2b-256 99cc730e0f4a1c1865b7a6dabde883ccd987f28d02848c8995e66bf6b397b4d2

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py39-none-any.whl.

File metadata

  • Download URL: xdis-5.0.13-py39-none-any.whl
  • Upload date:
  • Size: 130.1 kB
  • Tags: Python 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py39-none-any.whl
Algorithm Hash digest
SHA256 88f43fa3938d4ecc51ff39b3788785e915dbbb7701262c1623e18a14be4cb4f3
MD5 09452341e5e1d86a7339d7d704655bc5
BLAKE2b-256 914e32233ca4f4c1cd9b712494affa1b179fc2b3c0cb131bb19d0e35370b9c03

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py38-none-any.whl.

File metadata

  • Download URL: xdis-5.0.13-py38-none-any.whl
  • Upload date:
  • Size: 130.1 kB
  • Tags: Python 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py38-none-any.whl
Algorithm Hash digest
SHA256 12fba740517e4db0d7a5b463f658edd70f1bef9d7dfe85a631af59deaf862efb
MD5 e6698eb5a358f75d7e8268fbc497ac92
BLAKE2b-256 21afa888770305868206ccdd0e9c43f7a776d82ae6a81882d4e521ffb4dabbfb

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py37-none-any.whl.

File metadata

  • Download URL: xdis-5.0.13-py37-none-any.whl
  • Upload date:
  • Size: 130.1 kB
  • Tags: Python 3.7
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py37-none-any.whl
Algorithm Hash digest
SHA256 1fada0258090133dc8576cb68d772e2b3e819433cc740bf66cd0bfaac81d4c60
MD5 3f22883c003160ccc3422f473ab503c1
BLAKE2b-256 74a6e954b6b9be8938082452bcf082121c1a43cef3ea61555ae4e1e942f79ada

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py35-none-any.whl.

File metadata

  • Download URL: xdis-5.0.13-py35-none-any.whl
  • Upload date:
  • Size: 130.0 kB
  • Tags: Python 3.5
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py35-none-any.whl
Algorithm Hash digest
SHA256 fe597be2f81231bac777b77c7a2df58b67b848e35c6195e504692ba3fb86d42b
MD5 4ecd14eef6139a90c4825fb979706386
BLAKE2b-256 52a6e5cdf7b557882b459994814d1aa89cbfc793412524bb093e59ac219fff5d

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py34-none-any.whl.

File metadata

  • Download URL: xdis-5.0.13-py34-none-any.whl
  • Upload date:
  • Size: 130.0 kB
  • Tags: Python 3.4
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py34-none-any.whl
Algorithm Hash digest
SHA256 62346108f13d421367bd68c310003836c0e508e3e0063f028b2dbffd8cce5cba
MD5 55fae7dad45c9efa1cc987c7fd592945
BLAKE2b-256 f1fb8a117838e2c8354573765c207eb06259379c21a960c572c9b9f592101569

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py33-none-any.whl.

File metadata

  • Download URL: xdis-5.0.13-py33-none-any.whl
  • Upload date:
  • Size: 125.9 kB
  • Tags: Python 3.3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py33-none-any.whl
Algorithm Hash digest
SHA256 b6325129b9de31dd9992688b70a07f9dc65aff7f28f3e65774af49966fcf1396
MD5 942855835075adbbbe4b335e2df2ac27
BLAKE2b-256 0910008bf87c82e43189bacf16d310c5d135804deca4473f4ace6b74d5532bf0

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py3.9.egg.

File metadata

  • Download URL: xdis-5.0.13-py3.9.egg
  • Upload date:
  • Size: 248.3 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py3.9.egg
Algorithm Hash digest
SHA256 aee621b9cda7627281b32449a2fe30ed9fac7724a5fd295b55ef0cd700a310a6
MD5 8a0240465e89e9cf95f2bf31d055a8f5
BLAKE2b-256 1d8f9c1c2228dfe3d625d1dfb679fb4006235851e1fc231d557c44d9bd25ec8b

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py3.8.egg.

File metadata

  • Download URL: xdis-5.0.13-py3.8.egg
  • Upload date:
  • Size: 248.6 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py3.8.egg
Algorithm Hash digest
SHA256 f2aaccbf84f487f80803bfe70c393652a1153c7ece784f28d9b6006b803abc57
MD5 99fd116c2db782ae944d7837d294575c
BLAKE2b-256 bc5c54ad7144ccb9cd876f6f5a62b9054941a5926732c28627a317268dd12c9c

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py3.7.egg.

File metadata

  • Download URL: xdis-5.0.13-py3.7.egg
  • Upload date:
  • Size: 250.3 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py3.7.egg
Algorithm Hash digest
SHA256 d9758683753629b82adfd70facde3de2fd6238a5532d8d1f59baa62aa659b71f
MD5 0d9fc81a18b17393d2d359e3c71626c4
BLAKE2b-256 506fd7ce0f06819f6d54d89b679a6dd99204ab5bd3f552cd1b3af3bf8870958b

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py3.6.egg.

File metadata

  • Download URL: xdis-5.0.13-py3.6.egg
  • Upload date:
  • Size: 250.4 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py3.6.egg
Algorithm Hash digest
SHA256 ff1485cf6cbb325567c8e1913bee8070cd39d0b77fd9a9e6a970c8b12dfdd3a0
MD5 4aa78c0597f894382d56a201e434c9f9
BLAKE2b-256 42b70d8a65e0b58a8f656ea73362dd372ad37276eeeae359a32150f3e08dfc24

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py3.5.egg.

File metadata

  • Download URL: xdis-5.0.13-py3.5.egg
  • Upload date:
  • Size: 252.7 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py3.5.egg
Algorithm Hash digest
SHA256 0655fc3a208d417e28265b27cb873ad4815eda60cecd46fda055d366991fb0b3
MD5 d3a1c89f4e892b4e0874208144f56a03
BLAKE2b-256 504ae566767b85453d871f407ee62692c4ac5b7284ceb9595dc7ac75a5baf933

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py3.4.egg.

File metadata

  • Download URL: xdis-5.0.13-py3.4.egg
  • Upload date:
  • Size: 253.6 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py3.4.egg
Algorithm Hash digest
SHA256 326d68ddd540b68d146e4906e014dd9e5bb2dd1240d6001abb21308a48ed2eae
MD5 2a3e53a39af561245a0235110f587677
BLAKE2b-256 7e607970442e81ca79e90364a0d813aee4cd6f22a572497910c9ee376530f0ab

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py3.3.egg.

File metadata

  • Download URL: xdis-5.0.13-py3.3.egg
  • Upload date:
  • Size: 254.9 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py3.3.egg
Algorithm Hash digest
SHA256 7c5c30dfc4165d66d5a0ed516a61bbc89e69addacaecd5c923543b222dec7b93
MD5 65b7e590a33fbad9c19261fc5fb74ab3
BLAKE2b-256 c4bf01765cb85555fbf5cb78f3f7595993ff48bdd2d6288eeec9deb99f918ba2

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py3.2.egg.

File metadata

  • Download URL: xdis-5.0.13-py3.2.egg
  • Upload date:
  • Size: 251.9 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py3.2.egg
Algorithm Hash digest
SHA256 415bf4cfa6d204c95ae919cf993f701b324dd4212baab911c6c4d9fb52e09e1a
MD5 835c282e827497c814124ea4472206cb
BLAKE2b-256 3b3c41712512bc436526fd67aacefe3c12d0e8af8c87f9557f3eb304e032199e

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py3.1.egg.

File metadata

  • Download URL: xdis-5.0.13-py3.1.egg
  • Upload date:
  • Size: 249.0 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py3.1.egg
Algorithm Hash digest
SHA256 37b550aba8172191df963d75d1acdcb6e6bb89e7fee9e061a82259340d91c351
MD5 c6690a35fb46bd4254a063b110481cce
BLAKE2b-256 e82c95ac9d63b44fb0a5d591acac4208a800b0808a1255f7a40e85830de38e90

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py2.7.egg.

File metadata

  • Download URL: xdis-5.0.13-py2.7.egg
  • Upload date:
  • Size: 258.9 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py2.7.egg
Algorithm Hash digest
SHA256 9af2b0dc0cf9ad71dbc2613500168066cabe13aa1c44c03d1a5b4d38ec8bcb0c
MD5 aa8c41d07d53519f94d6b95d6e53f305
BLAKE2b-256 8ffda79c54a924de63b5933096338cafd2413c7bbb3421d2b7d68b671443ed0e

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py2.6.egg.

File metadata

  • Download URL: xdis-5.0.13-py2.6.egg
  • Upload date:
  • Size: 259.4 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py2.6.egg
Algorithm Hash digest
SHA256 8e7494421c8c9e15ab487e802a27206d31d25c53c846627e7c1faa900ace037a
MD5 b02e184f406ecd5ddefa228cd690edf4
BLAKE2b-256 01d6efe44ccdf53ca47cf9ba892c2ebbaaf0d23c588697ee37b2bd3c5c2a9658

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py2.5.egg.

File metadata

  • Download URL: xdis-5.0.13-py2.5.egg
  • Upload date:
  • Size: 259.6 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py2.5.egg
Algorithm Hash digest
SHA256 46087316a9dec2294f03ed14c4828c8a6e538a6a7a8741658ad55077a464e5f4
MD5 c254ec5ce993b6964ec759ee570d6517
BLAKE2b-256 1b8387bfde5c941133a2b1a1ae4a552b3546a253b110616e61102f1be3b1ba18

See more details on using hashes here.

File details

Details for the file xdis-5.0.13-py2.4.egg.

File metadata

  • Download URL: xdis-5.0.13-py2.4.egg
  • Upload date:
  • Size: 264.5 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.7

File hashes

Hashes for xdis-5.0.13-py2.4.egg
Algorithm Hash digest
SHA256 4290f74032cc7763773b1670e82b3b52e9c1e89e3cf594e8108571ff30ce0117
MD5 d8192e1ed0918ad42ce492dbd3488542
BLAKE2b-256 1e1a75cb317604d4f0219e1bd1cb020696d666e5968b67ba3d188b64cd020701

See more details on using hashes here.

Supported by

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