Skip to main content

High-performance delta compression library with automatic algorithm selection

Project description

xpatch-rs - Python Bindings

High-performance delta compression library for Python with automatic algorithm selection.

Installation

pip install xpatch-rs

Note: The package is named xpatch-rs on PyPI, but you import it as xpatch in your code.

Or build from source:

cd crates/xpatch-python
pip install maturin
maturin develop

Quick Start

import xpatch

# Create a delta patch
base = b"Hello, World!"
new = b"Hello, Rust!"
delta = xpatch.encode(tag=0, base_data=base, new_data=new)

# Apply the patch
reconstructed = xpatch.decode(base_data=base, delta=delta)
assert reconstructed == new

# Extract metadata tag
tag = xpatch.get_tag(delta)
print(f"Tag: {tag}")

API Reference

encode(tag, base_data, new_data, enable_zstd=True) -> bytes

Creates a delta patch between base_data and new_data.

Parameters:

  • tag (int): Metadata tag to embed (0-15 for no overhead, larger values supported)
  • base_data (bytes): Original data
  • new_data (bytes): New data
  • enable_zstd (bool): Enable zstd compression (default: True)

Returns: bytes - The encoded delta patch

decode(base_data, delta) -> bytes

Reconstructs new_data from base_data and a delta patch.

Parameters:

  • base_data (bytes): Original data
  • delta (bytes): Delta patch created by encode()

Returns: bytes - The reconstructed new data

Raises: ValueError if delta is invalid

get_tag(delta) -> int

Extracts the metadata tag from a delta patch without decoding.

Parameters:

  • delta (bytes): Delta patch

Returns: int - The embedded tag

Raises: ValueError if delta is invalid

Performance

Native Python bindings provide excellent performance:

  • Small data (~13 bytes): ~7 µs encode, <0.1 µs decode
  • Medium data (10KB): ~8 µs encode, ~0.5 µs decode
  • Large data (100KB): ~12 µs encode, ~4 µs decode
  • Tag extraction: <0.1 µs

Compression ratios on test data:

  • 1 byte change in 10KB file: 11 bytes delta (99.89% compression)
  • 1 byte change in 100KB file: 14 bytes delta (99.99% compression)

Use Cases

Perfect for:

  • Version control systems
  • Document synchronization
  • Incremental backups
  • Network-efficient updates
  • Real-time collaborative editing

License

This project is dual-licensed:

See LICENSE-AGPL.txt and LICENSE-COMMERCIAL.txt for details.

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xpatch_rs-0.4.2.tar.gz (114.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xpatch_rs-0.4.2-cp313-cp313-manylinux_2_34_x86_64.whl (747.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

File details

Details for the file xpatch_rs-0.4.2.tar.gz.

File metadata

  • Download URL: xpatch_rs-0.4.2.tar.gz
  • Upload date:
  • Size: 114.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.11.5

File hashes

Hashes for xpatch_rs-0.4.2.tar.gz
Algorithm Hash digest
SHA256 0ba4ea71d5f7cc747967c4abbae2dc99df58468b19a84d29654378e5379f7123
MD5 4128b81ab4350f02885339a5c10c53f5
BLAKE2b-256 7817dfabaf57e6724f44a8a283b5e9da91a81781d6679b30a28945f13a2f7b16

See more details on using hashes here.

File details

Details for the file xpatch_rs-0.4.2-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for xpatch_rs-0.4.2-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 ad428d916e25a3aa4e3c108e1f33d0679102f73748a32c04362c7180b4dd44f8
MD5 8a1df2e7aaae2ba5b30a6918730f16af
BLAKE2b-256 f128e201a7a24164ccd99b9eb06bb3eb40106303ca842e927653b525e9bcc78b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page