Skip to content

MooncellWiki/lz4inv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

  1. Clone the repository:

    git clone https://github.com/MooncellWiki/lz4inv.git
    cd lz4inv
  2. Build the module using maturin:

    maturin develop --release
  3. 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.

About

Rust-backed modified LZ4 python library for an anime game

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors