python binding for librsync
Project description
✨ pyrsync ✨
The python binding for librsync
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
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
python-rsync-0.1.0.dev2.tar.gz
(138.7 kB
view hashes)
Built Distributions
Close
Hashes for python_rsync-0.1.0.dev2-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8494a97291d73e015c80d936bf4541ba45cd9f5d753d13549d7a79b427cfdc43 |
|
MD5 | 7bbfb80cebd2e732d5987353916ca268 |
|
BLAKE2b-256 | b3f94684bf18cfde40fc2453bd4ca53e3b2feb60c6c44dddba42c232618f4309 |
Close
Hashes for python_rsync-0.1.0.dev2-pp38-pypy38_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e966003332933d9611e59093f1270c2525c95e28ed7b29689b8c2d345a472a3e |
|
MD5 | 5f920d895e1919d21e63f2e8045c2a39 |
|
BLAKE2b-256 | ca9f02a8eee3611b865db3bb92d4b321a75f2829a61ee19b87a8938aa2e06be0 |
Close
Hashes for python_rsync-0.1.0.dev2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0cda1fc757132ecbf66b3028a2a2c0c146eb3926826dd670e7ab818b45ecd49a |
|
MD5 | cd793cd995818b0b585284868b62c597 |
|
BLAKE2b-256 | e27527d74a87800280abb0c112047b0865158a227f67dd2791bf9cdd0a507220 |
Close
Hashes for python_rsync-0.1.0.dev2-pp37-pypy37_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ef8c1fb7fae20dd56c20cb03096f0bf8666951db198ce7c83d5232298585ea2 |
|
MD5 | 435cf3197ad37b40dbdca7e57ba7bca0 |
|
BLAKE2b-256 | cbcafc5844f6e212ff3ae380d4eb35346663a134c8ff5415a33f9746f4a27ed3 |
Close
Hashes for python_rsync-0.1.0.dev2-pp37-pypy37_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d8737a393f7116b7843e3a7b5dd6c0abb369c881214c5fec4b74d2908ac2f67c |
|
MD5 | 4e05d928964ca09f837a9c74b46a5961 |
|
BLAKE2b-256 | fdb54212c88d7757074239547918cc8a0a27a1b289623c65523e52f245cfed1d |
Close
Hashes for python_rsync-0.1.0.dev2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28279a2ebb6cb5f3f8255be80aaa86d8e01b15c3c304465ea5f4fd0d8881e728 |
|
MD5 | aa446a4e6ddfed664f3a71b2f21d40ff |
|
BLAKE2b-256 | 36d96f1803e5485ce60279db83264e9a8624abc1f79c74a188e7b12615ec67ac |
Close
Hashes for python_rsync-0.1.0.dev2-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 805b552ac8986063e1e9cbb564c09bd5632e0bbd43b333307ba9862a5599947e |
|
MD5 | 3b7c74d17beb824d1c383db6e1151cbf |
|
BLAKE2b-256 | 8d69ccf601f16fb268519e694d2b944f2e1dc8e7647db28bc2a5f00f341baa9a |
Close
Hashes for python_rsync-0.1.0.dev2-cp310-cp310-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55fc94ac90fc444d41b55d317aae1f936443e22ce4819d5542be2a3cc9569633 |
|
MD5 | 595dcfe9f633c8522214d9758cdf5667 |
|
BLAKE2b-256 | 8d174b587f3580877fdd05d6f35a1bc4190cadd0a2a39fab73bc1331e4df86f9 |
Close
Hashes for python_rsync-0.1.0.dev2-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca2390228f38fb509e8bf3c60a5ef27100d6f3caca27b40b362e05f239f1927d |
|
MD5 | 91b80886e9d552b74c39f340c0d56f29 |
|
BLAKE2b-256 | 883f1b865bdc6c5209a888546339cb1779bfa0b5b7d3ccc48d13ad1b10f66fd1 |
Close
Hashes for python_rsync-0.1.0.dev2-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b1c23ccc6c4abd0277717cdf51e3fb09962104a8ca731fbfa0b22b631f4773b |
|
MD5 | 62fbc9417beed8c3aecff5115211fc65 |
|
BLAKE2b-256 | aa4c3df9366624fe4d181b32f7c919894c081b6c10fbade3e32281cf4f52e104 |
Close
Hashes for python_rsync-0.1.0.dev2-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8bd392744b9656fbae5873f8d77616843cc8be0583428cdee8242a3d76abaee4 |
|
MD5 | 32462722a2025820225fd2117583b25e |
|
BLAKE2b-256 | a8e7fa5651d4465417f49fe2bda9f480332c6bcb0670f28c00b552ca356623d6 |
Close
Hashes for python_rsync-0.1.0.dev2-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1496d7cb12f256fa3133992285926d0a91c7f462125a8093b60c8fa3f58639a4 |
|
MD5 | 49a985bddeabfb512a57f0fc1682b069 |
|
BLAKE2b-256 | 354fc549e7519dcdf99d13bae73d14ba98c33a2d645fe19e9cd15ebfb0cf6cda |
Close
Hashes for python_rsync-0.1.0.dev2-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3620af1f72c1bd47259ad21e757f8c239e16f48d6672f3dc46bed0b92b6565f3 |
|
MD5 | bae71187bf07f597b5241043ea4c24e5 |
|
BLAKE2b-256 | 9a82f57895412cd614047e179a2319e9c0bc21bfe52a4ab1b61b6304ef0dfa89 |
Close
Hashes for python_rsync-0.1.0.dev2-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ff1b263e8eb97215ffe98aef6ffe7412448299ee41a8aacffa7b5c25f9a0f03f |
|
MD5 | d5f1839427516b8ea92f400cabcd9826 |
|
BLAKE2b-256 | bfa996b0533933116202b1b62ed620312bdb7661e68c455530cc1b12a5843b18 |
Close
Hashes for python_rsync-0.1.0.dev2-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d0f2ceb1dcedeaffccf299a0de8be506424b1c7ab67008d5e202a4dffa5d2f0 |
|
MD5 | 0fe2f90acc37e78d8562bbaa95970230 |
|
BLAKE2b-256 | d232d03bc020d273a9d03d97d61ea98cc0552ab05448841fd46457d7d0482f2d |
Close
Hashes for python_rsync-0.1.0.dev2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48f9d338fc2e2d60b59dab34480ab770c304503500642963fd2a24ddc2c4a986 |
|
MD5 | aeaf6d152e2b54132ae39327af793f34 |
|
BLAKE2b-256 | a0637fe52be4f7b84fcbf43f424ea70b162c52949d3fa6647cbf4ce3ae872c22 |
Close
Hashes for python_rsync-0.1.0.dev2-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6f0789e2ce60cd8e0dc1c0bfac9af01d43d07fe5832fe3a5170a9a7e763969e8 |
|
MD5 | efa959c4c0908d8a4237713eb54a11f6 |
|
BLAKE2b-256 | 78f1d31fb62ecfd2db0b7d65d40c86139b8dace587128eddb803a68d00f9b2fc |
Close
Hashes for python_rsync-0.1.0.dev2-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d14ab388154d4c97e765605fec3599cec5e77e133cb4094d4168306563af0b3c |
|
MD5 | fc4325f5a642980f678caf1137a819f4 |
|
BLAKE2b-256 | e2353eed880ce94e62c60ac922fcc33dd4f23ed58dd7e9448e27b917bcac5f3e |
Close
Hashes for python_rsync-0.1.0.dev2-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c96b8f0545bfb4d70d0460e9605d8f82949b2db2f8b7b304d9702b902e2817a7 |
|
MD5 | c4545ef52f2b8aaeba644e1073bbb56b |
|
BLAKE2b-256 | 415af7c5c2971ccf07ccc3f25f891005b01dce395cd902c800dddf8e48fa6a57 |
Close
Hashes for python_rsync-0.1.0.dev2-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c3294f77dafd0f126453d5b0f4a666aaf1c06ac0ec1bf30390d251b2a31ede86 |
|
MD5 | 15732522bfad26a9a124f35be903150f |
|
BLAKE2b-256 | 4a7831a2e98dae3c223ff0d314e7835cca912ff345ebc69589aff867cd222399 |
Close
Hashes for python_rsync-0.1.0.dev2-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68697b76072f0660d44195805f8d33f01dd632200d76d26b1e418bbd4dbca3bf |
|
MD5 | 06d33d83adf59cbd2028438b2888cd14 |
|
BLAKE2b-256 | 3ad1fab8a4e53d44f8f181ca0b1aa85024a3454e70945ba98f281465cd119a47 |