{ "info": { "author": "Georgy Angelov, Eric Pruitt, Isis Lovecruft", "author_email": "georgyangelov@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Environment :: MacOS X", "Environment :: Win32 (MS Windows)", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Topic :: Security :: Cryptography", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Archiving", "Topic :: System :: Archiving :: Backup", "Topic :: System :: Archiving :: Compression" ], "description": "===============================\n#pyrsync2\n===============================\nThis is a fork of the `pyrsync` package with some changes such as:\n\n - The functions `blockchecksums` and `rsyncdelta` are now generators\n which make it easier to send through the network\n - Some unittests are added\n - Implementation changes (uses bytearray instead of a deque, faster hash lookup etc.)\n - The block size is no longer in the delta itself, it needs to be passed\n to the patchstream function\n - Does not use try/except for programming logic\n\nIt's a Python 3 only package!\n\npyrsync2 is a Python module which implements the [rsync algorithm] [1],\nwritten in pure Python. It *is not* a wrapper for rsync, but a set of\nfunctions which apply full rsync functionality through Python.\n\nThe majority of the code for this module is taken from [Eric Pruitt's\npost at ActiveState] [2]. It was orginally licensed under an [MIT license]\n[3], and this license has been kept wthout modifications.\n\n## Installation\n--------------------------------\nYou need to have PIP:\n\n $ sudo pip install pyrsync2\n\n## Use\n--------------------------------\nAn example use case for this module:\n\n # On the system containing the file that needs to be patched\n >>> import pyrsync2\n >>> unpatched = open(\"unpatched.file\", \"rb\")\n >>> hashes = pyrsync2.blockchecksums(unpatched)\n\n # On the remote system after having received hashes\n >>> import pyrsync2\n >>> patchedfile = open(\"patched.file\", \"rb\")\n >>> delta = pyrsync2.rsyncdelta(patchedfile, hashes)\n\n # System with the unpatched file after receiving delta\n >>> unpatched.seek(0)\n >>> save_to = open(\"locally-patched.file\", \"wb\")\n >>> pyrsync2.patchstream(unpatched, save_to, delta)\n\n[1]: http://samba.anu.edu.au/rsync/ \"Andrew Tridgell and Paul Mackerras. The rsync algorithm. Technical Report TR-CS-96-05, Canberra 0200 ACT, Australia, 1996.\"\n[2]: https://code.activestate.com/recipes/577518-rsync-algorithm/ \"Rsync Algorithm (Python Recipe)\"\n[3]: http://www.opensource.org/licenses/mit-license.php \"OSI MIT License\"", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/stormbreakerbg/pyrsync", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "pyrsync2", "package_url": "https://pypi.org/project/pyrsync2/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pyrsync2/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/stormbreakerbg/pyrsync" }, "release_url": "https://pypi.org/project/pyrsync2/0.2.6/", "requires_dist": null, "requires_python": null, "summary": "A Python 3 module which implements rsync binary diff\n algorithm.", "version": "0.2.6" }, "last_serial": 775550, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "f653fcf3e19de0440e4870b8ba1ddf5b", "sha256": "e8e786c7bc3c4b48151b9835061c4db9a1e64b0f452ac5ed55d1701a27480952" }, "downloads": -1, "filename": "pyrsync2-0.2.0.zip", "has_sig": false, "md5_digest": "f653fcf3e19de0440e4870b8ba1ddf5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7186, "upload_time": "2013-06-19T16:40:05", "url": "https://files.pythonhosted.org/packages/e5/a9/ae6552a4a5674550a5a2af5928f4d6260b2385e5c54e1cd338de087272ee/pyrsync2-0.2.0.zip" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "c4bfb3a06be1d53c84d3db5d210dfb5a", "sha256": "88fa6fdf5d7b3fe6b72c10f4ded25bfd2c9d2575c73d63e551e8a3439f20885d" }, "downloads": -1, "filename": "pyrsync2-0.2.1.zip", "has_sig": false, "md5_digest": "c4bfb3a06be1d53c84d3db5d210dfb5a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7184, "upload_time": "2013-06-19T16:42:15", "url": "https://files.pythonhosted.org/packages/9b/de/0d3e57ec48462ef274441895531ab7d8ac71788abc3d1ebbba4e6a2345cb/pyrsync2-0.2.1.zip" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "be6b20755182174a29ea9992684f656d", "sha256": "017a9e072a0214f58f4148ff29c84a4c561b07ab9710a85f699ceda79e096e8d" }, "downloads": -1, "filename": "pyrsync2-0.2.2.zip", "has_sig": false, "md5_digest": "be6b20755182174a29ea9992684f656d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7202, "upload_time": "2013-06-20T16:41:31", "url": "https://files.pythonhosted.org/packages/d7/a7/48e7e88b89be6af675e9d8da6de27e266b4cc9b647cf4b5f2b0d12c92f86/pyrsync2-0.2.2.zip" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "bcb68580165fc3a438cd46079b5464bf", "sha256": "17c112b4890cd145d4d5f3e130283efdb0549e2a8565dd36b10b3d4db30869ce" }, "downloads": -1, "filename": "pyrsync2-0.2.3.zip", "has_sig": false, "md5_digest": "bcb68580165fc3a438cd46079b5464bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6879, "upload_time": "2013-06-20T17:31:51", "url": "https://files.pythonhosted.org/packages/a4/11/dcfe115889e99c859fd4b3cbdbb0b9b5c366f18fd9ca02260ae8412a6e1e/pyrsync2-0.2.3.zip" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "d842d1cd5dad116d4cd7829439ce72fa", "sha256": "c9fef0796ac86f9a43064f055baf42ba5351ade27be75b6437d12f0ca5acf143" }, "downloads": -1, "filename": "pyrsync2-0.2.4.zip", "has_sig": false, "md5_digest": "d842d1cd5dad116d4cd7829439ce72fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6880, "upload_time": "2013-06-20T19:24:03", "url": "https://files.pythonhosted.org/packages/4c/68/79413b2f45fe88e8bf9849b55c0abeade9502f7f2f94bad3ab011fc50733/pyrsync2-0.2.4.zip" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "18857f9ccbb183e59e8dd99730766983", "sha256": "d4d57b5ea3718b251a45593eb2f141b98b0c9b66ab09e9d467dd7ab26c36b3fe" }, "downloads": -1, "filename": "pyrsync2-0.2.5.zip", "has_sig": false, "md5_digest": "18857f9ccbb183e59e8dd99730766983", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6883, "upload_time": "2013-06-20T19:27:29", "url": "https://files.pythonhosted.org/packages/f2/3a/bd7420eb5b263184ad04bd675254cf0503e9fbac8c5ca6bad32fbfa27483/pyrsync2-0.2.5.zip" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "ccf2a029cba9bbb808d33b7b53ff5a52", "sha256": "4660b700e7d785cb126853466c206304b7194c32cee120859a5683c2271ea243" }, "downloads": -1, "filename": "pyrsync2-0.2.6.zip", "has_sig": false, "md5_digest": "ccf2a029cba9bbb808d33b7b53ff5a52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6885, "upload_time": "2013-06-20T19:30:20", "url": "https://files.pythonhosted.org/packages/38/90/28217b119819a76ecb7e8f09050a61a459a1df18e457d041ec43f4ec5a76/pyrsync2-0.2.6.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "ccf2a029cba9bbb808d33b7b53ff5a52", "sha256": "4660b700e7d785cb126853466c206304b7194c32cee120859a5683c2271ea243" }, "downloads": -1, "filename": "pyrsync2-0.2.6.zip", "has_sig": false, "md5_digest": "ccf2a029cba9bbb808d33b7b53ff5a52", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6885, "upload_time": "2013-06-20T19:30:20", "url": "https://files.pythonhosted.org/packages/38/90/28217b119819a76ecb7e8f09050a61a459a1df18e457d041ec43f4ec5a76/pyrsync2-0.2.6.zip" } ] }