{ "info": { "author": "Ben Timby", "author_email": "btimby@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. image:: https://d2xtrvzo9unrru.cloudfront.net/brands/smartfile/logo.png\n :alt: SmartFile\n\nA `SmartFile`_ Open Source project. `Read more`_ about how SmartFile\nuses and contributes to Open Source software.\n\n.. image:: https://travis-ci.org/smartfile/python-librsync.png\n :target: https://travis-ci.org/smartfile/python-librsync\n :alt: Travis CI Status\n\n.. image:: https://coveralls.io/repos/smartfile/python-librsync/badge.png?branch=master\n :target: https://coveralls.io/r/smartfile/python-librsync\n :alt: Code Coverage\n\n.. image:: https://pypip.in/v/python-librsync/badge.png\n :target: https://crate.io/packages/python-librsync/\n :alt: Latest PyPI version\n\n.. image:: https://pypip.in/d/python-librsync/badge.png\n :target: https://crate.io/packages/python-librsync/\n :alt: Number of PyPI downloads\n\nIntroduction\n------------\n\nA ctypes wrapper for librsync. Provides ``signature()``, ``delta()``, and\n``patch()`` functions.\n\nThere are three steps necessary to synchronize a file. Two steps are performed\non the source file and one on the destination.\n\n1. Generate a signature for the destination file.\n2. Generate a delta for the source file (using the signature).\n3. Patch the destination file using the generated delta.\n\nUsually, these steps involve remote systems. Here is an example of synchronizing\ntwo local files.\n\n.. code:: python\n\n import librsync\n\n # The destination file.\n dst = file('Resume-v1.0.pdf', 'rb')\n\n # The source file.\n src = file('Resume-v1.2.pdf', 'rb')\n\n # Where we will write the synchronized copy.\n synced = file('Resume-latest.pdf', 'wb')\n\n # Step 1: prepare signature of the destination file\n signature = librsync.signature(dst)\n\n # Step 2: prepare a delta of the source file\n delta = librsync.delta(src, signature)\n\n # Step 3: synchronize the files.\n # In many cases, you would overwrite the destination with the result of\n # synchronization. However, by default a new file is created.\n librsync.patch(dst, delta, synced)\n\nExtending\n---------\n\nThis wrapper only exposes the most common operations that librsync provides. It\nis not meant to be a full wrapper, but should cover most use-cases. You can\neasily extend this wrapper. Information about librsync is available in it's\nmanual which is linked below (I wish I had found this BEFORE writing this\nwrapper!)\n\nhttp://rproxy.samba.org/doxygen/librsync/refman.pdf\n\n.. _SmartFile: http://www.smartfile.com/\n.. _Read more: http://www.smartfile.com/open-source.html", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/smartfile/python-librsync/", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "python-librsync", "package_url": "https://pypi.org/project/python-librsync/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/python-librsync/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/smartfile/python-librsync/" }, "release_url": "https://pypi.org/project/python-librsync/0.1-5/", "requires_dist": null, "requires_python": null, "summary": "Python ctypes wrapper for librsync.", "version": "0.1-5" }, "last_serial": 797976, "releases": { "0.1-1": [ { "comment_text": "", "digests": { "md5": "ee86e25d0b6b323224793b0c9a0daad0", "sha256": "22157750999778b6d26848b2b38311e3abac3c3b5e9adda4dba6db17f621e51a" }, "downloads": -1, "filename": "python-librsync-0.1-1.tar.gz", "has_sig": false, "md5_digest": "ee86e25d0b6b323224793b0c9a0daad0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3868, "upload_time": "2013-05-04T02:35:04", "url": "https://files.pythonhosted.org/packages/06/a8/338c71cd584d3a75ac5f75ab7a485a65127b4e8d95c2829522f8102c2c1c/python-librsync-0.1-1.tar.gz" } ], "0.1-2": [ { "comment_text": "", "digests": { "md5": "5ea711fbc211124c44728b38123c72c6", "sha256": "beb8e6fa5d804161c62637ec23b151e30ac0e8271899157cf052bc6dfee96dde" }, "downloads": -1, "filename": "python-librsync-0.1-2.tar.gz", "has_sig": false, "md5_digest": "5ea711fbc211124c44728b38123c72c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4363, "upload_time": "2013-05-06T15:46:19", "url": "https://files.pythonhosted.org/packages/c9/cd/8b474fd4118bd314330d41857e21ce989f87c1494426cc447f8d8e3b1308/python-librsync-0.1-2.tar.gz" } ], "0.1-3": [ { "comment_text": "", "digests": { "md5": "4aec7ab004deed04a630101233f6ce0c", "sha256": "489a33dfe1c72928cb9393b12b37969009aa67051cd6141c8a2a572baf6e4b37" }, "downloads": -1, "filename": "python-librsync-0.1-3.tar.gz", "has_sig": false, "md5_digest": "4aec7ab004deed04a630101233f6ce0c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4847, "upload_time": "2013-05-07T02:35:09", "url": "https://files.pythonhosted.org/packages/10/29/c9606fae30a3597e28c4155c22311e5ae11317ba5ee9dd750ffc1ffaacf0/python-librsync-0.1-3.tar.gz" } ], "0.1-4": [ { "comment_text": "", "digests": { "md5": "fdf56a663bbfebf260eac6e67b4d5724", "sha256": "424828568eb61ed605e7c9ab887529ea5681f21afd52a3b85b4a7a3cdc754a3b" }, "downloads": -1, "filename": "python-librsync-0.1-4.tar.gz", "has_sig": false, "md5_digest": "fdf56a663bbfebf260eac6e67b4d5724", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5059, "upload_time": "2013-05-07T12:58:51", "url": "https://files.pythonhosted.org/packages/80/30/9c2074ea86a46bdd05d0ab202d26dfe138ebb1d5f8089b8d2a94a8d9a5ef/python-librsync-0.1-4.tar.gz" } ], "0.1-5": [ { "comment_text": "", "digests": { "md5": "2ef0ae3aff4f91003a8e4b98190cc2af", "sha256": "9f4fcb94f5cbffb281b2c8caafe635c0859809e3f9fddac5f1b717b10c78e776" }, "downloads": -1, "filename": "python-librsync-0.1-5.tar.gz", "has_sig": false, "md5_digest": "2ef0ae3aff4f91003a8e4b98190cc2af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5041, "upload_time": "2013-06-04T05:54:35", "url": "https://files.pythonhosted.org/packages/c3/41/dddea6524fb9d8a8444946fc63d7b6b5bc0686e1323e0823aee2bf4cf333/python-librsync-0.1-5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "2ef0ae3aff4f91003a8e4b98190cc2af", "sha256": "9f4fcb94f5cbffb281b2c8caafe635c0859809e3f9fddac5f1b717b10c78e776" }, "downloads": -1, "filename": "python-librsync-0.1-5.tar.gz", "has_sig": false, "md5_digest": "2ef0ae3aff4f91003a8e4b98190cc2af", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5041, "upload_time": "2013-06-04T05:54:35", "url": "https://files.pythonhosted.org/packages/c3/41/dddea6524fb9d8a8444946fc63d7b6b5bc0686e1323e0823aee2bf4cf333/python-librsync-0.1-5.tar.gz" } ] }