Skip to main content

python binding for librsync

Project description

✨ pyrsync ✨

The python binding for librsync

pypi python implementation wheel license action

Install

pip install python-rsync

Usage

from io import BytesIO
from pyrsync import delta, get_signature_args, signature, patch

s = b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" * 50
d = b"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" * 50 + b"2"
src = BytesIO(s)
dst = BytesIO(d)
magic, block_len, strong_len = get_signature_args(len(s))
sig = BytesIO()
signature(dst, sig, strong_len, magic, block_len)  # sig由dst产生
dst.seek(0, 0)
sig.seek(0, 0)
_delta = BytesIO()
delta(src, sig, _delta)  # src和sig对比产生delta
src.seek(0, 0)
_delta.seek(0, 0)
out = BytesIO()
patch(dst, _delta, out)
assert out.getvalue() ==  src.getvalue()

Public functions

from typing import IO

class LibrsyncError(Exception):
    code: Any
    def __init__(self, result) -> None: ...

RS_JOB_BLOCKSIZE: int
RS_DELTA_MAGIC: int
RS_MD4_SIG_MAGIC: int
RS_BLAKE2_SIG_MAGIC: int
RS_RK_MD4_SIG_MAGIC: int
RS_RK_BLAKE2_SIG_MAGIC: int

def get_signature_args(old_fsize: int, magic: int = 0, block_len: int = 0, strong_len: int = 0) -> tuple: ...
def signature(input:IO, output:IO, strong_len: int, sig_magic: int, block_size: int = ...) -> None: ...
def delta(input:IO, sigfile:IO, output) -> None: ...
def patch(input:IO, delta:IO, output) -> None: ...

Compile

python -m pip install setuptools wheel cython cffi
git clone https://github.com/synodriver/pyrsync
cd pyrsync
git submodule update --init --recursive
python setup.py bdist_wheel --use-cython --use-cffi

Backend Choose

Use RSYNC_USE_CFFI env var to use cffi backend, otherwise it's depend on your python implementation.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

python_rsync-0.1.2-pp310-pypy310_pp73-win_amd64.whl (185.1 kB view hashes)

Uploaded PyPy Windows x86-64

python_rsync-0.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (211.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

python_rsync-0.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (211.8 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

python_rsync-0.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (186.2 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

python_rsync-0.1.2-pp39-pypy39_pp73-win_amd64.whl (185.1 kB view hashes)

Uploaded PyPy Windows x86-64

python_rsync-0.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (211.9 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

python_rsync-0.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (211.8 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

python_rsync-0.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (186.2 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

python_rsync-0.1.2-pp38-pypy38_pp73-win_amd64.whl (185.1 kB view hashes)

Uploaded PyPy Windows x86-64

python_rsync-0.1.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (211.6 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

python_rsync-0.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (211.5 kB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ ARM64

python_rsync-0.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (186.1 kB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

python_rsync-0.1.2-cp312-cp312-win_amd64.whl (197.0 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

python_rsync-0.1.2-cp312-cp312-win32.whl (202.5 kB view hashes)

Uploaded CPython 3.12 Windows x86

python_rsync-0.1.2-cp312-cp312-musllinux_1_1_x86_64.whl (235.7 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

python_rsync-0.1.2-cp312-cp312-musllinux_1_1_aarch64.whl (232.5 kB view hashes)

Uploaded CPython 3.12 musllinux: musl 1.1+ ARM64

python_rsync-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (233.5 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

python_rsync-0.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (229.6 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

python_rsync-0.1.2-cp312-cp312-macosx_11_0_arm64.whl (196.5 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

python_rsync-0.1.2-cp312-cp312-macosx_10_9_x86_64.whl (198.1 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

python_rsync-0.1.2-cp312-cp312-macosx_10_9_universal2.whl (289.8 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

python_rsync-0.1.2-cp311-cp311-win_amd64.whl (196.6 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

python_rsync-0.1.2-cp311-cp311-win32.whl (202.3 kB view hashes)

Uploaded CPython 3.11 Windows x86

python_rsync-0.1.2-cp311-cp311-musllinux_1_1_x86_64.whl (235.5 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

python_rsync-0.1.2-cp311-cp311-musllinux_1_1_aarch64.whl (232.1 kB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ ARM64

python_rsync-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (234.0 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

python_rsync-0.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (230.4 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

python_rsync-0.1.2-cp311-cp311-macosx_11_0_arm64.whl (196.4 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

python_rsync-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl (197.8 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

python_rsync-0.1.2-cp311-cp311-macosx_10_9_universal2.whl (289.4 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

python_rsync-0.1.2-cp310-cp310-win_amd64.whl (196.5 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

python_rsync-0.1.2-cp310-cp310-win32.whl (202.4 kB view hashes)

Uploaded CPython 3.10 Windows x86

python_rsync-0.1.2-cp310-cp310-musllinux_1_1_x86_64.whl (236.2 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

python_rsync-0.1.2-cp310-cp310-musllinux_1_1_aarch64.whl (232.6 kB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ ARM64

python_rsync-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (234.4 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

python_rsync-0.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (230.4 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

python_rsync-0.1.2-cp310-cp310-macosx_11_0_arm64.whl (196.3 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

python_rsync-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl (197.5 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

python_rsync-0.1.2-cp310-cp310-macosx_10_9_universal2.whl (289.1 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

python_rsync-0.1.2-cp39-cp39-win_amd64.whl (197.1 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

python_rsync-0.1.2-cp39-cp39-win32.whl (203.1 kB view hashes)

Uploaded CPython 3.9 Windows x86

python_rsync-0.1.2-cp39-cp39-musllinux_1_1_x86_64.whl (236.8 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

python_rsync-0.1.2-cp39-cp39-musllinux_1_1_aarch64.whl (233.6 kB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ ARM64

python_rsync-0.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (235.2 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

python_rsync-0.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (230.9 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

python_rsync-0.1.2-cp39-cp39-macosx_11_0_arm64.whl (197.1 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

python_rsync-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl (198.3 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

python_rsync-0.1.2-cp39-cp39-macosx_10_9_universal2.whl (290.7 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

python_rsync-0.1.2-cp38-cp38-win_amd64.whl (197.3 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

python_rsync-0.1.2-cp38-cp38-win32.whl (203.1 kB view hashes)

Uploaded CPython 3.8 Windows x86

python_rsync-0.1.2-cp38-cp38-musllinux_1_1_x86_64.whl (237.3 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

python_rsync-0.1.2-cp38-cp38-musllinux_1_1_aarch64.whl (233.7 kB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ ARM64

python_rsync-0.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (235.5 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

python_rsync-0.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (231.1 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

python_rsync-0.1.2-cp38-cp38-macosx_11_0_arm64.whl (197.1 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

python_rsync-0.1.2-cp38-cp38-macosx_10_9_x86_64.whl (198.5 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

python_rsync-0.1.2-cp38-cp38-macosx_10_9_universal2.whl (290.9 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

Supported by

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