Lz4Inv
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.
Installation
Prerequisites
- Rust (edition 2021)
- Python (version 3.9 or higher)
- maturin for building the extension module
Build and Install
-
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 .
Usage
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)
License
This project is licensed under the MIT License. See the LICENSE file for details.
Acknowledgments
- PyO3 for making Python/Rust interop simple.
- The LZ4 compression library for inspiration.