Lz4Inv is a Rust-backed Python module for decompressing data compressed with the modified LZ4 algorithm for an anime game. It leverages PyO3 to provide a high-performance decompression function directly from Python.
- Rust (edition 2021)
- Python (version 3.9 or higher)
- maturin for building the extension module
-
Clone the repository:
git clone https://github.com/MooncellWiki/lz4inv.git cd lz4inv
-
Build the module using maturin:
maturin develop --release -
Install the package (if not using
maturin develop):pip install .
Import the module in your Python code to decompress LZ4 compressed data.
The function accepts any object implementing Buffer protocol (for example bytes, bytearray, memoryview) as input for the compressed data.
import lz4inv
with open("compressed_data.bin", "rb") as f:
compressed_data = f.read()
decompressed_size = 131072
decompressed_data = lz4inv.decompress_buffer(compressed_data, decompressed_size)For Python versions before 3.11, use decompress() as the Buffer protocol doesn't have a stable ABI in those versions.
Note that decompress() specifically requires a bytes object as input.
import lz4inv
with open("compressed_data.bin", "rb") as f:
compressed_data = f.read()
decompressed_size = 131072
decompressed_data = lz4inv.decompress(compressed_data, decompressed_size)This project is licensed under the MIT License. See the LICENSE file for details.
- PyO3 for making Python/Rust interop simple.
- The LZ4 compression library for inspiration.