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.0rc1.tar.gz
(140.4 kB
view hashes)
Built Distributions
Close
Hashes for python_rsync-0.1.0rc1-pp38-pypy38_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b21f705a7ef797d5afdc474714a5ac6669f3b122235d23d87841c3aaf6ec4de3 |
|
MD5 | 5fd495d038ab04da0197b2778eb53482 |
|
BLAKE2b-256 | 34e2ad6beb31365e92dd992b0fcc22a42b8c4694ba2a118669ad2210e7504871 |
Close
Hashes for python_rsync-0.1.0rc1-pp38-pypy38_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30e02c353d77106ced7f224295e0f2e15bb953db89bcb58cbb0ca772b7ec520f |
|
MD5 | a8e88e13fcbee6d63cb0a74081b31671 |
|
BLAKE2b-256 | 901630f73babb45ac986429ac9dc4f72bf7d2024d207f52d6b6c57288419cc28 |
Close
Hashes for python_rsync-0.1.0rc1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99c3334f4b0e72705e5db222e3573104467b9077a9c0d2b79f57a0d1e8404446 |
|
MD5 | ba8c31739380b1883d8c796f5eb9ffca |
|
BLAKE2b-256 | 368cf9ca9705665e3adfec57b2115e6ab943d9e9b56ca50b391de66d7c6d7873 |
Close
Hashes for python_rsync-0.1.0rc1-pp37-pypy37_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6adcaaf831bc68574f7243bf61b36d46758fa267f7f8853b41de87ef6d50e080 |
|
MD5 | acd15e195b5b6be7f794aaade9d615ad |
|
BLAKE2b-256 | 4f4cbc552229c242c838724be7200ed7fd4dbb977c74f85f196e98a953115655 |
Close
Hashes for python_rsync-0.1.0rc1-pp37-pypy37_pp73-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ca7d0901e4f7b979140bcbd7d50217b3f227fe1ab57083732ee5f59746774cdb |
|
MD5 | 6c036ecd39677dcac75a26b3fbb8d2ee |
|
BLAKE2b-256 | c45f9efac2baf98c91f06ad7b54d7661c6db899c8fd62ddc8093342c9e8904b3 |
Close
Hashes for python_rsync-0.1.0rc1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa689c52fe98a0063ce2d060ecaf85b11fa2e5503eaa60818dbd3e5ffdee69d8 |
|
MD5 | 834ce0afbb1c20269dbb96cf8608399b |
|
BLAKE2b-256 | 9b80303460843e02aff85aec4bbfe6b8759740b1fef9366e0e77e5aeae709353 |
Close
Hashes for python_rsync-0.1.0rc1-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e15e6aaddf0b122499baa9fd9048a4701623bdef8b3d56537df7189dfc1187a |
|
MD5 | 5e9ec7b3d8cd035f7b2614d05a3151cb |
|
BLAKE2b-256 | 6ff11fcf0d9d7897847967c07c35255d6ad6dfcc34672479881c1bc41e92abdf |
Close
Hashes for python_rsync-0.1.0rc1-cp311-cp311-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11713ad27c27e9f99c096fdeb335a61137fb6b77132e3876032a627069082448 |
|
MD5 | 2f9fb05309795a33cd35644a94860d60 |
|
BLAKE2b-256 | 134cf25676a54412265c8ed772d803ea6a62db1f7d47bf22bd58ce9d64c103df |
Close
Hashes for python_rsync-0.1.0rc1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 87535eb7bc33dc8a07f3eed4e1efca79ab0898bc63f36d6675cb617ca5557701 |
|
MD5 | 853d5d9fa73e8f3cf0917386f3b72878 |
|
BLAKE2b-256 | 91ea7429c78a1b39563737e847f95bd3b3121805d10e3c2808cd6474a3ee69a0 |
Close
Hashes for python_rsync-0.1.0rc1-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8a4e5d5d00935b0311853994837781bfdce04346162514baf8a14cc9b36cdd9b |
|
MD5 | adf7a0ec2e7c2e71a2b7632deec84b27 |
|
BLAKE2b-256 | f02746722d6a2ac8aa137fc94d674c408def7ec66b327563b770cd7e65a941dd |
Close
Hashes for python_rsync-0.1.0rc1-cp310-cp310-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38cae39cb3eda58ff2091e6af81b4c5d1e48ac7f886769efd32b360a7a68e673 |
|
MD5 | 463d855f09773d56e75a5a43c87376b1 |
|
BLAKE2b-256 | c52e2c60b02ccb778d20af764000c25590229ffa8b60510c769e4d7e53ddf9e6 |
Close
Hashes for python_rsync-0.1.0rc1-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7f9d31ec3accac855c685b4630be5faf39b68766edea25d718604308cd261c7b |
|
MD5 | 1f41a38d431f3496bcbd84895f3ab2e5 |
|
BLAKE2b-256 | fcecb1372d4a759f6d1219eb3c3ea9040139fd872ce16caf25f1a15ccc242ad2 |
Close
Hashes for python_rsync-0.1.0rc1-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | de1890d1d99824cada3b1d292e98da0d9f206d5506cc074f59d7130d299db056 |
|
MD5 | 06f422f041f58a711244c9e8ba9d1d3c |
|
BLAKE2b-256 | c8ef4e0c6279d0f88c5f43b33280e6ed2000fe25165e2c889a4ebafdd4b1121d |
Close
Hashes for python_rsync-0.1.0rc1-cp39-cp39-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3750818f8c41a9c49d77d435600d6208e5343b8afc5dbd08ee11b5507786aa49 |
|
MD5 | de2660dd8cd7cf5ebbaa3efee5e44e2a |
|
BLAKE2b-256 | d5042de20153b9329bce76106b516f2e8628c9f9ca0ecd3fb9123261b73ad4a1 |
Close
Hashes for python_rsync-0.1.0rc1-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e92a7a2968e9be453387003f6bbeb60f77f50d74b39801805b4e4259501142cf |
|
MD5 | 954373fc934fb8d6778ba9d3af223af3 |
|
BLAKE2b-256 | c061159b360520c9eb2560d8549b8d1a7b84d1c82ed4cd50378cc6428b334f77 |
Close
Hashes for python_rsync-0.1.0rc1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cc9be175b5e3379a0c6c2db8e56a0957d7c8495813573159f5ba99320a6f1d12 |
|
MD5 | 4738d8fbde7671cefd83b42c5dbe10fa |
|
BLAKE2b-256 | 6f425bcb4e93a2f0dc5265b64083c3bb5bdd8839f46d9e316af6b96e77d968a1 |
Close
Hashes for python_rsync-0.1.0rc1-cp38-cp38-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 98a020c44410d66dfbb2b5a9321a7f88a81237e3f94bd4b6f02411f866cc2fa6 |
|
MD5 | fa3e5189dca66f50f2d91957a23104f6 |
|
BLAKE2b-256 | 788441dedfc9bceefa7c4cda5b5a893e174c966b897502c46320b960a84113c4 |
Close
Hashes for python_rsync-0.1.0rc1-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71cb3b1e76bd1d7566893720a08517982137bc07fd2f796e59bdc45ca30d8635 |
|
MD5 | 23527ab20ef93be9d862eded183c5dec |
|
BLAKE2b-256 | ac07fb81bcd8f2b3831696dd75687436b87ec758781361be790b71349a28520e |
Close
Hashes for python_rsync-0.1.0rc1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8ba6f6c36769587d5e9de443a151eb8e124095ab1b697df924fe9d080168af9 |
|
MD5 | a5fafeeafa4f041d1e1a04ccc22dda02 |
|
BLAKE2b-256 | 9838db5ce63c44fffd535bae6a5450153e062457a1a1084fb8c809e7d030c1f1 |
Close
Hashes for python_rsync-0.1.0rc1-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c55151c65af9c11a1c75c6894aa84d07db9faf0fbb481bf2bd94f0b58f96fabc |
|
MD5 | d294369c964d52d434b17eae71baa313 |
|
BLAKE2b-256 | 4b89129fcc64a01b25a9ed1e0e61482b7133a808343abea9164a549f76516560 |
Close
Hashes for python_rsync-0.1.0rc1-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 650c56ef4fdf1d48df3b1b929cfabbd8ca0b12684ead311ba6634c8c16319ad2 |
|
MD5 | 4a22a0031fcd789bff3cd2bdf19bced7 |
|
BLAKE2b-256 | 1c7386346f1a8b8cb4df14cbcce613a68083fe4917179dc5bcaee2e5e10aafbc |
Close
Hashes for python_rsync-0.1.0rc1-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 77fa604a7ab8f663525205faf18b5ff437831bd30c799ea1c77c5a1444ab15f7 |
|
MD5 | 767a247546da2958ead0bb609e4b2cfb |
|
BLAKE2b-256 | d9a6d3ceec1ced7390435b6a41646e6b176dd07b876a8f420a77e85a4b5a4df0 |
Close
Hashes for python_rsync-0.1.0rc1-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7af520bcadc066fe01aa94192e41f201a962ad22885bfc47c1c0b1d81f28d000 |
|
MD5 | 192a614d2bc827074a815063ea66e6e7 |
|
BLAKE2b-256 | a47fabe8ebf6bb2c041439645d983f38512b0ba32ea1ff9941611aa1e3496295 |
Close
Hashes for python_rsync-0.1.0rc1-cp36-cp36m-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42335d45b97eee07a353934254b3942acb6ee3e6db16dab0a3ff3f500268d03d |
|
MD5 | 1c246a893fdea2311dc19b43dcb430ab |
|
BLAKE2b-256 | 90ba7faf824c06277b441acfcf31c16c38a5580982fbb7d9d0da2497edc2ede3 |