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 datanew_data(bytes): New dataenable_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 datadelta(bytes): Delta patch created byencode()
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
xpatch achieves exceptional compression ratios on real-world data:
- 99.8% compression on typical code changes
- 2 byte median delta for sequential edits
- Instant decoding (<1µs for most patches)
- 40-55 GB/s throughput for encoding
Use Cases
Perfect for:
- Version control systems
- Document synchronization
- Incremental backups
- Network-efficient updates
- Real-time collaborative editing
License
This project is dual-licensed:
- AGPL-3.0-or-later for open-source use
- Commercial license available at xpatch-commercial@alias.oseifert.ch
See LICENSE-AGPL.txt and LICENSE-COMMERCIAL.txt for details.
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xpatch_rs-0.3.1.tar.gz.
File metadata
- Download URL: xpatch_rs-0.3.1.tar.gz
- Upload date:
- Size: 113.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
381d5c9252e682b0d6e350894dcda96129849d3965771d4cd67841f110c911ee
|
|
| MD5 |
84061345d4b43337334696f583312571
|
|
| BLAKE2b-256 |
005b25ee731abfa6f7ffe5dcbc83c63f77593440ba4bb780fbdca5ab62c52396
|
File details
Details for the file xpatch_rs-0.3.1-cp313-cp313-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: xpatch_rs-0.3.1-cp313-cp313-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 746.8 kB
- Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.10.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c00df78fe6c45cbcf4546c01a301f23c5c66098c31e541d3b716b5516f8e9c70
|
|
| MD5 |
997e2db72dd9b7d94512181e389d6953
|
|
| BLAKE2b-256 |
f207bf547bc8faa46063e358fffb35e14336cf63eab948cb87f3e31dcb2e4039
|