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.1.tar.gz
(168.0 kB
view hashes)
Built Distributions
Close
Hashes for python_rsync-0.1.1-pp310-pypy310_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c6873b99b61f75f6739bc886f22718fd9deab0c298271e496809d5867ccb0e95 |
|
MD5 | 54c722bf93d610a1de1d5fc25c02e8b9 |
|
BLAKE2b-256 | 92d8301e15110d78afa210a8e9a3a197347bbe6a4a2c3c9ac19cbeaef9a73b44 |
Close
Hashes for python_rsync-0.1.1-pp310-pypy310_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00dd8eae8c683f27e958ae529d25db35c2add1c7c433e27175879c00d619aa0e |
|
MD5 | 7bc48a6c421f2adab01882a242878f48 |
|
BLAKE2b-256 | d35d008c9e68f7e829680bd2c9034d19116449659db108dbfac01cfaf9e01fbb |
Close
Hashes for python_rsync-0.1.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc1623f79800b768db1fe8f32e369f986ab3ef33f4e85178341ced292c2c48ab |
|
MD5 | 9aae426fb245950903cb2768f158a187 |
|
BLAKE2b-256 | 636606623b6bb728b69aef13f28dcc53f1f7fccfea1776861135db3f737c4da8 |
Close
Hashes for python_rsync-0.1.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e271c0a9cf1373318e3c79f864c5f0639cb9a3c2a1ead377261f1bb35ef3f2fb |
|
MD5 | 3d514eb00ec652224f385f3e3570ec59 |
|
BLAKE2b-256 | 3427891b9627fe15896fccfe3e494b717a00456f84b0a4bade4cf6e480cc8af8 |
Close
Hashes for python_rsync-0.1.1-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 506bce184e7601b225d32d068b169601853f59ebdfff5143df11a5a986d29fe7 |
|
MD5 | 4423b1c3bf9b009adca301c08df4675d |
|
BLAKE2b-256 | f6267fbf2f2dd20d71e9985ec1c9946e796c719b950af5600ed3b1a0fa3571f0 |
Close
Hashes for python_rsync-0.1.1-pp39-pypy39_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4e678658a2ee3e9ab0240ce92532efa381afbea6887c96a523d49154d2ed26d |
|
MD5 | 06fe26df5a7c9ae962419b780a155f1b |
|
BLAKE2b-256 | 9949ad836efc159010b453d6acedd995bcf3a4a3d539548878a03e817b78dc02 |
Close
Hashes for python_rsync-0.1.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 754fa53456f9a50e2f35f808b12b62af276e72715d445a01ff9eab058785b873 |
|
MD5 | 63089f9443723e74011247c1b8b017d0 |
|
BLAKE2b-256 | a1c5e86b1ee015ea472fb53e4c902cf8502b2b4eab38c3c85cb1a76c67f03b16 |
Close
Hashes for python_rsync-0.1.1-pp39-pypy39_pp73-macosx_10_13_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 23f48116c8fc13e71acd47560898ea7487ad4ab3f29987b1a2257d45aab84106 |
|
MD5 | abfefc2bb83a57b072dc28b559ddb4e9 |
|
BLAKE2b-256 | 992ceb80e435a8fd417c5473ccfe93aa1b27bfb4c4d4f969ec61920bb26f5cc5 |
Close
Hashes for python_rsync-0.1.1-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d6d5e9d8e9bea41a299ec83d53ee04aaad69859f3e5c99a969e77abebb673bd7 |
|
MD5 | 26bfe88a5a96c31475c8dd2b181548e2 |
|
BLAKE2b-256 | f55c8d0c6656295a471cd4fa9ddda964a74384aba7ac6a7e9265613837049368 |
Close
Hashes for python_rsync-0.1.1-pp38-pypy38_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c175d816e2b42da9cfaf16ce82096b5dc68d5b745be26cbda713acaaf7df5d68 |
|
MD5 | b76a6cf0868d64562c0647491e5394d0 |
|
BLAKE2b-256 | dbb44c90be04037dabb9c98bbc25585de1500b511caef4f5e69bf629bae98a76 |
Close
Hashes for python_rsync-0.1.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bd37307b8905f22ac2f64734cb522e58ae04c7dbb20832f233d9e6998e1d8f1a |
|
MD5 | 4cff113c556be4611fc47a9b9ef46694 |
|
BLAKE2b-256 | 355d1088950de340af1b6d46c2fb52c49776a5206c0e74d580aa666ab462bca8 |
Close
Hashes for python_rsync-0.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 55bd19d7ee147e3c2484651be335be76b32da64409ef4a1dbca3c37285ecbe00 |
|
MD5 | b6ef411a0d33c1119c2f421f77683172 |
|
BLAKE2b-256 | 76f361eff1d4e41c61a555c2dd1fb3b18f45e82435ee197ab7e4db65279b9ceb |
Close
Hashes for python_rsync-0.1.1-pp37-pypy37_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05d079bbd639e8bac21a4bc3cbe3f7a86314fa1e10b6fb7343cc557896253716 |
|
MD5 | 8e8b6cdbaa31ba00f9949756c7ddea3b |
|
BLAKE2b-256 | f0211f4abab915de6d4d043fca650d6149e808e161e5690fcd4bb3c236854cc0 |
Close
Hashes for python_rsync-0.1.1-pp37-pypy37_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4967508d3fb96211d38d7d89216bdc03e79b14f70ee96a34f2811687452be256 |
|
MD5 | fb5fd02201c735edc7fa6722352d7656 |
|
BLAKE2b-256 | b05d70327b9a1d6ed4a53b0b1d083abbe41752219c07bec782447317487760a5 |
Close
Hashes for python_rsync-0.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2a69fe9c5267b75d7c2d57d635b08731571e866b9de277696dbd8accd077c28 |
|
MD5 | dd8f58bcd4305d4629ffa058803118b8 |
|
BLAKE2b-256 | 65bf62385278f8da58891f7d8fe2127e6db9f921078b5e13c663abf7cee81d34 |
Close
Hashes for python_rsync-0.1.1-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5d7c35a0eda93ade6f95ec27f8931b75550db0adfb689a7464ffb7389f3179b9 |
|
MD5 | f827bf91c5bb453c1ae9d7802a6b81e7 |
|
BLAKE2b-256 | 776a1a4739bbe2273cac5a763364662a497f59f27bb2c97c43656b4f56c39717 |
Close
Hashes for python_rsync-0.1.1-cp312-cp312-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d0b2254cb56c22d3be9c3346c5c0e60ca0a7a7ac88147e2f12823ae95a5ad39 |
|
MD5 | 78501db1b7a5b3a1ff6946eeb97fcdce |
|
BLAKE2b-256 | d71993d5b5d9926ea48f94ad918c4f0edf14012f24ef68d50b3d9d2a9f41512b |
Close
Hashes for python_rsync-0.1.1-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 254e114a1e5efb712b5201a315eb11b9787fddc12bb857fb5a308b7abb291958 |
|
MD5 | acec18ae19ac58d89102bf8efa9bb6ba |
|
BLAKE2b-256 | 26597031e68da9851cbc145cdb8fa8587fd26201798f5f33dd44d65e7f6e1e62 |
Close
Hashes for python_rsync-0.1.1-cp312-cp312-macosx_10_9_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 324be0845430d47f5544ef1be11789fbccf8da981f3122d012a1253a9f4881f8 |
|
MD5 | a89f08fa104c1fbce35fa826c2ee3cd3 |
|
BLAKE2b-256 | 8ff865b3bac0aea18f166d9299346d788426db845b24320917d92b333e3cfefc |
Close
Hashes for python_rsync-0.1.1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6711797c9e1033a38b9d3bfdb96dc0c2f0519b5d3925798187508a07c0a8b75a |
|
MD5 | a0a04dc4766e0a694dd8fc7c25b73b42 |
|
BLAKE2b-256 | 9ca82a8473ff9e32404c7bdb2845cdd87e0da0ffeea29a60387daa24554a88fe |
Close
Hashes for python_rsync-0.1.1-cp311-cp311-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | da289f5c2e26b6de387a95264c47b6589bcede573e189771d7d207b946dbdd11 |
|
MD5 | 4e2a7b414fc9850ac65ac93a39dc1fa6 |
|
BLAKE2b-256 | 7e71fc0afbd4370cdd18fc12c235cf75899fe0604e3b8de5eb38623348bd3809 |
Close
Hashes for python_rsync-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f3b7b53abc32c7b04b82be1d599ed4af22a4e2a315c8f7e08c7658c98585f234 |
|
MD5 | 7bb157acaeaa51d59945105c3a4359d9 |
|
BLAKE2b-256 | 4ea2c502f79319249e6356bf05923b129301f550319b00dca3a3ccbc9ee3b5c0 |
Close
Hashes for python_rsync-0.1.1-cp311-cp311-macosx_10_9_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 887de161c65f78bce9b18e375bea6f2396ae478578d1925723e250bcdd959c43 |
|
MD5 | 0b30b017a47742691201202984bb4bef |
|
BLAKE2b-256 | 769b5ab3f31572bba238932ae66e6fbb308725313fedd2b0248d0a66544e23d9 |
Close
Hashes for python_rsync-0.1.1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a57b7db054048672b9d28166c4dd3b7dd048ef94f15b176813487c82de1369c7 |
|
MD5 | 8511958c8b66ab3cef46596b5b6703bf |
|
BLAKE2b-256 | 575a514c924a4e87dc2f71cfb8cf4fe7df28938b643d457a23e8ad28387d7d03 |
Close
Hashes for python_rsync-0.1.1-cp310-cp310-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4f63cb2bf61dbaa783eea77f5e36282be259d4f3d4877be4225e92274f8628e3 |
|
MD5 | 654f2d80524d2e64bbea0cb551afd031 |
|
BLAKE2b-256 | 0eb2617f7e2622587a376e1304da14e2ef53df89e19b0023f9a956ff5e1c2e89 |
Close
Hashes for python_rsync-0.1.1-cp310-cp310-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9fc22839497fae6700e7ecbbcee3fe8c765e1f67af126b6b55fa10ec381500d |
|
MD5 | 166427e1566e58eccc9addeace1c721d |
|
BLAKE2b-256 | cfdde2e587f85b80ebe7361f2c4c06ba0e6704d2e0ab198903b3b9f3ef391e33 |
Close
Hashes for python_rsync-0.1.1-cp310-cp310-macosx_10_9_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 053718917515e26fbebfc98b7637a6a61cfc4d7cc0828dfcf233fbdd95ad00d7 |
|
MD5 | 38e6ce2d197f97498458373d95338426 |
|
BLAKE2b-256 | bf57ab43b2f6d2112a046b617aa57bc0f54217586ae9995173805a5c83a216f0 |
Close
Hashes for python_rsync-0.1.1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45c7ab6a809afe0ac227e438e04ba0739da28b02066b1c5ed85cd9f4981e93e6 |
|
MD5 | 7728ec6cd37fbab723a76286865b22d2 |
|
BLAKE2b-256 | ace5808ea54e2fceb32a4605d6fdc9b02d339c39fa959c1f8a44a60ca61986bd |
Close
Hashes for python_rsync-0.1.1-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2100575d354b8c0421115138b50440ef72c39963ae2f505515d54ef2f9872ba1 |
|
MD5 | d6a4d9efaa7b8c1c7e3a728c13e2302c |
|
BLAKE2b-256 | 4b583aa12921e6cc847cabfecce166c2f86849069d135c9cf39fe19418924277 |
Close
Hashes for python_rsync-0.1.1-cp39-cp39-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e36ae8d262cf38878690988c514796bb32b4697bb8b3b2e76cba1794ec4b1814 |
|
MD5 | c76732f436028a70e36438e1ef6d210b |
|
BLAKE2b-256 | 02c7488593bff35184bbfef0c429500f18653c230919544e62edee1c2d6d783d |
Close
Hashes for python_rsync-0.1.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a1e34d61ac9683d625faaf60b9cbc04897115a9315f4e3f7330a1e98ee6d481 |
|
MD5 | ee32055b2e1eca164fe1c33c238c8fb2 |
|
BLAKE2b-256 | e4671742bb3eab33b67e7bf202c908e3f149005b41853951f607123e16c97d68 |
Close
Hashes for python_rsync-0.1.1-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b26ff6f2d6f36cf459800af9519991aad541b890fc2ed3748ae0bc9fb21d6c83 |
|
MD5 | 492c540a88c03631a7905c529229ecd8 |
|
BLAKE2b-256 | be16babef0116153ea4cf0de612844794d32b9dba4775ed2d95ea4320baec377 |
Close
Hashes for python_rsync-0.1.1-cp38-cp38-macosx_11_0_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 223e4195a34bc0a5b46ebb82e3b9d71df0f370bf6e035b17714a5e18cf0b2db6 |
|
MD5 | 0e47734f595da7920b2d34347f7a083d |
|
BLAKE2b-256 | d282ec46687e3a6f0019e60014d9cf19fd4d6df8a9dc5089d794c422406232bf |