pylingual
→ View on GitHubAI Summary: PyLingual is a Python bytecode decompiler specifically designed for versions 3.6 and later, allowing users to convert Python bytecode back into source code. Notable features include the ability to run locally or through a web service, support for different Python versions via pyenv, and adjustable options for decompilation settings, such as output directory and segmentation preferences. This tool is optimized for readability and extensibility, though it may initially exhibit some control flow accuracy regressions compared to its web service counterpart.
README
PyLingual - Python Decompiler for 3.6+
PyLingual is a CPython bytecode decompiler supporting all released Python versions since 3.6. For information about the design and implementation of PyLingual, please refer to our research paper.
PyLingual can be run through our web service or run locally.
This codebase is optimized for readability and future extension, so there may initially be some control flow accuracy regression compared to the version hosted on the web service.
Requirements
- Python 3.12
Compiling bytecode
Some parts of PyLingual require the ability to compile bytecode in a different Python version (equivalence check and model training). For this, you will need the following:
Setup
Install from source, using Poetry:
git clone https://github.com/syssec-utd/pylingual
cd pylingual
python -m venv venv
source venv/bin/activate
pip install poetry>=2.0
poetry lock
poetry install
Usage
Usage: pylingual [OPTIONS] [FILES]...
End to end pipeline to decompile Python bytecode into source code.
Options:
-o, --out-dir PATH The directory to export results to.
-c, --config-file PATH Config file for model information.
-v, --version VERSION Python version of the .pyc, default is auto
detection.
-k, --top-k INT Maximum number of additional segmentations to
consider.
-q, --quiet Suppress console output.
--trust-lnotab Use the lnotab for segmentation instead of the
segmentation model.
--init-pyenv Install pyenv before decompiling.
-h, --help Show this message and exit.
Demo

Support
If you have any issues for installing and using PyLingual, please create an issue or send your message via our support email at pylingual.io@gmail.com.