Skip to content

A Python module written in Rust that implements the zsync algorithm

License

Notifications You must be signed in to change notification settings

opsi-org/pyzsync

Repository files navigation

pyzsync

A Python module written in Rust that implements the zsync algorithm.

Usage

Use the Python module as a script

# Show help.
python -m pyzsync --help

# Create a zsync file.
poetry run python -m pyzsync zsyncmake bigfile

# Compare two files and show how much data from the first file
# can be used to create the second file using the zsync algorithm.
python -m pyzsync compare bigfile1 bigfile2

# Download a file using zsync.
# This will automatically use blocks from the local files
# noble-desktop-amd64.iso and noble-desktop-amd64.iso.zsync-tmp-*
# if available.
python -m pyzsync zsync https://cdimage.ubuntu.com/daily-live/current/noble-desktop-amd64.iso.zsync

Use the Python module in a script

from pyzsync import create_zsync_file

create_zsync_file("bigfile", "bigfile.zsync")

See tests/test_pyzsync.py and pyzsync/__main__.py for more examples.

Build / Development

Based on PyO3

# Install toolchain (linux)
rustup toolchain install beta-x86_64-unknown-linux-gnu

# Build package in debug mode and install it to virtualenv
poetry install
poetry run maturin develop --release

# Run clippy
cargo clippy

# Run cargo test
cargo test --no-default-features

# Run pytest
poetry run pytest -vv

# Build release package
poetry run maturin build --release

About

A Python module written in Rust that implements the zsync algorithm

Resources

License

Stars

Watchers

Forks

Packages

No packages published