{ "info": { "author": "Yu Sun", "author_email": "sunyu0410@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: System :: Archiving :: Backup" ], "description": "AmendmentBackUp\n===============\n\nA Python class for file comparison and new file backup.\n\nAuthor: Yu Sun at University of Sydney\n\nEmail: sunyu0410@gmail.com\n\nWebsite: https://github.com/sunyu0410/AmendmentBackUp\n\nMotivations\n-----------\n\nWhen it comes to backing up a large amoumt of data, it is often\npreferable to only copy the modified and new files, rather than simply\ncoping the whole directory. The ``AmendmentBackUp`` (``ABU``) class\nprovides a simple interface to do that. No dependencies are required\napart from the Python 3 standard library.\n\nThe design\n----------\n\nSay we have two folders, a source folder ``dir1`` which you have your\nmost recent files and a reference folder ``dir2`` which holds some of\nyour previous backup. What the ``ABU`` does is to compare all files in\n``dir1`` with those in ``dir2``, and copy the files to a third\ndestination folder ``dst``.\n\nA quick example\n---------------\n\n.. code:: python\n\n from AmendmentBackUp import *\n createDemo()\n abu = AmendmentBackUp(dir1=r\"demo/dir1\",\n dir2=r\"demo/dir2\",\n dst=r\"demo/dst\")\n abu.compare()\n abu.backup()\n\nExplanations\n------------\n\nSay you have the ``dir1`` and ``dir2`` (along with a ``dst`` to copy the\nfiles to) with the following tree structures:\n\n::\n\n dir1 (source, recently updated)\n | file1.txt\n | file2.txt (modified)\n | file3.txt (new)\n | \n +---subfolder1\n | file4.txt\n | \n +---subfolder2\n | file5.txt\n | file6.txt (modified)\n | \n \\---subfolder3 (new)\n anyfile.txt\n\n dir2 (reference, e.g. a previous backup)\n | file1.txt\n | file2.txt\n | file7.txt\n | \n +---subfolder1\n | file4.txt\n | \n \\---subfolder2\n file5.txt\n file6.txt\n\n dst (destination)\n\n\nIn this case, we want to copy the modified and new file(s) in ``dir1``:\n\n::\n\n file2.txt\n file3.txt\n subfolder2/file6.txt\n\nand new folder(s):\n\n::\n\n subfolder3\n\nYou can initiate an ``ABU`` object by calling\n\n.. code:: python\n\n abu = AmendmentBackUp(dir1=r'path_to/dir1', \n dir2=r'path_to/dir2', \n dst=r'path_to/dst')\n\nBy the way, the ``createDemo()`` will create a demo folder with\nstructures shown above. After initiation, call the following ``ABU``\nmethods to proceed:\n\n- ``abu.compare()``: Compare files by walking through all files and\n folders in ``dir1`` and check the existence of the corresponding\n counterparts in ``dir2``.\n\n - If negative, it then adds the file or folder to the copy list;\n\n - If positive, it compares two corresponding files (from ``dir1``\n and ``dir2`` respectively, shallow comparison using the time stamp\n and the file size);\n\n - If two files don't match, it will add the file to the copy\n list;\n\n - Otherwise, it will continue to the next one.\n\n- ``abu.backup()``: Copy the files and folders in the copy list.\n\n - Folders will be copied first. If the parent folder has been\n copied, any child folder will be skipped;\n\n - Files will copied next. If the file falls under any folder copied\n in the previous step, it will be skipped.\n\n- The metadata of the backup process will be stored in a folder called\n ``_abu`` with a time stamp (year-month-day-hour-minute-second) in the\n ``dst`` folder. These include\n\n::\n\n\n - abu_log.txt Log file\n - abu_obj.pickle ABU object of this backup task\n - dir1_tree.txt Tree structure of dir1 (source)\n - dir2_tree.txt Tree structure of dir2 (reference)\n - dst_tree.txt Tree structure of dst (destination)\n\nResults\n-------\n\nHere is the tree structure of ``dst`` after the backup:\n\n::\n\n dst\n | file2.txt\n | file3.txt\n |\n +---subfolder2\n | file6.txt\n |\n +---subfolder3\n | anyfile.txt\n |\n \\---_abu_20190717101307\n abu_log.txt\n abu_obj.pickle\n dir1_tree.txt\n dir2_tree.txt\n dst_tree.txt\n\nIf you want to add the files to the previous back ``dir2``, you can\nsimply set ``dst`` to ``dir2``.\n\nLimitations\n-----------\n\nThe ``ABU`` is best suited when the source folder ``dir1`` is a natural\ngrowth of the reference folder ``dir2``. What *natural growth* means is\nthat there should not be too much renaming or move of the subfolders\nfrom ``dir2`` to ``dir1``. Otherwise, using a version control system is\nprobably a better option since ``ABU`` won't track the history of any\nfolder or file.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/sunyu0410/AmendmentBackUp", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "amendment-back-up", "package_url": "https://pypi.org/project/amendment-back-up/", "platform": "", "project_url": "https://pypi.org/project/amendment-back-up/", "project_urls": { "Homepage": "https://github.com/sunyu0410/AmendmentBackUp" }, "release_url": "https://pypi.org/project/amendment-back-up/0.1.5/", "requires_dist": null, "requires_python": "", "summary": "Incremental backup", "version": "0.1.5" }, "last_serial": 5543408, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "8cbd12be8920bfa153a1f0a2386d837e", "sha256": "f89417a96e86868796bc1f86c90538ba0aa5776eec0f34c1eb11e25e0f0d8b34" }, "downloads": -1, "filename": "amendment_back_up-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "8cbd12be8920bfa153a1f0a2386d837e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4916, "upload_time": "2019-07-15T07:24:04", "url": "https://files.pythonhosted.org/packages/39/ad/0fbd03c82e93b7b111c390b98cea5839e0ea65d783be799c43ab80b53965/amendment_back_up-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "676f8d4792dc76c6c43fd1d6c669da5f", "sha256": "bb1a6bf8cf915d9408d339a705aadb6d3c64f25d65b29628e303de6d45c399ca" }, "downloads": -1, "filename": "amendment-back-up-0.0.1.tar.gz", "has_sig": false, "md5_digest": "676f8d4792dc76c6c43fd1d6c669da5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4057, "upload_time": "2019-07-15T07:24:07", "url": "https://files.pythonhosted.org/packages/66/1f/2ebb99ce0340401815e80d31d7f8bc4c5b209d49d37d84da06c772be7a81/amendment-back-up-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "0b34dc366aa22f0efb949f71fa3c0431", "sha256": "0bee6689cb1faeeccc390c64d30638536822bd1e8375a2224aea6763c8ee7d07" }, "downloads": -1, "filename": "amendment_back_up-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "0b34dc366aa22f0efb949f71fa3c0431", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5622, "upload_time": "2019-07-16T05:30:42", "url": "https://files.pythonhosted.org/packages/ca/34/d698e03316bf4aa1e8ded3ab7252fb715ea76746d9db7981ed04bb3d3eec/amendment_back_up-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7d6ba699a05a71ec5d65a67147610701", "sha256": "5ad3ca76707bcdce46ba7ff908345d810bf50cca6c7cd916a61eba5866dd919c" }, "downloads": -1, "filename": "amendment-back-up-0.0.2.tar.gz", "has_sig": false, "md5_digest": "7d6ba699a05a71ec5d65a67147610701", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4171, "upload_time": "2019-07-16T05:30:44", "url": "https://files.pythonhosted.org/packages/05/4b/98ae606cb97d19317cf188d6813227a45467d23495e43f51db014758f5e6/amendment-back-up-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "1b1934499e8189f09c665c627610ea08", "sha256": "2ca50bb0a303e90434217418efcfea35dc1134c9150f02fb28aafb19641332ed" }, "downloads": -1, "filename": "amendment_back_up-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "1b1934499e8189f09c665c627610ea08", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6385, "upload_time": "2019-07-16T05:33:13", "url": "https://files.pythonhosted.org/packages/58/e2/f1057fb35dac4f75cedfa684c71246c1a8b855e4fca78ae4f2228818c7db/amendment_back_up-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9bcf7134a6a3c15346effb770d9102a", "sha256": "fe0bd658b2006a8156c0a2203268e6db7c561517b607aff34aa172ac793e8d0d" }, "downloads": -1, "filename": "amendment-back-up-0.0.3.tar.gz", "has_sig": false, "md5_digest": "a9bcf7134a6a3c15346effb770d9102a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4253, "upload_time": "2019-07-16T05:33:15", "url": "https://files.pythonhosted.org/packages/20/57/7a7f6729cf3d96c65ca8d4db7d83cb552183ac99b4abb4144b7833ee9723/amendment-back-up-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "6513af50c6c5073f6f6d5a68256ed1e5", "sha256": "84d8675796f08c20647ba28bab359d89d7d2ea444415496d3b0e9acf13dce1bb" }, "downloads": -1, "filename": "amendment_back_up-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "6513af50c6c5073f6f6d5a68256ed1e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6715, "upload_time": "2019-07-16T05:36:04", "url": "https://files.pythonhosted.org/packages/1a/e6/ce9567edf8946dd1622095304973aaf609d6613bc11cddb099fc32a33b79/amendment_back_up-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44d8c19d1a6b78cabc9d99e821d17dd3", "sha256": "dd42a1fe9e4f1cf50f0735e90dfcc36348ff4c9502e4f7af7ad4e083dc104010" }, "downloads": -1, "filename": "amendment-back-up-0.0.4.tar.gz", "has_sig": false, "md5_digest": "44d8c19d1a6b78cabc9d99e821d17dd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4304, "upload_time": "2019-07-16T05:36:06", "url": "https://files.pythonhosted.org/packages/09/60/5564437bab09d161a14f3aeacdcf1af97848ea2a34914d31d8322624831c/amendment-back-up-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "10ed59041b14a236369d618106ae3a65", "sha256": "17dd2736aa77a7c20f40f132d7503a4786d1c03f3cc4dc7a63ce9cf9a985cbfd" }, "downloads": -1, "filename": "amendment_back_up-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "10ed59041b14a236369d618106ae3a65", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8229, "upload_time": "2019-07-16T05:41:49", "url": "https://files.pythonhosted.org/packages/02/32/ea8ac5ac6c9eeb34493e1b8bc24806350e3f83cfe463f90d62307c051f90/amendment_back_up-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c4e9e5924137147fa4e9e1aacfa96921", "sha256": "2d612baf874fffd28446f6ed51526d6986ca8fe9e9762f2c176bb502ad572dfb" }, "downloads": -1, "filename": "amendment-back-up-0.0.5.tar.gz", "has_sig": false, "md5_digest": "c4e9e5924137147fa4e9e1aacfa96921", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5228, "upload_time": "2019-07-16T05:41:50", "url": "https://files.pythonhosted.org/packages/ce/fd/bf16b24202133f51d6911dfff494b4f7455a03699bf0c56496ca28d323f7/amendment-back-up-0.0.5.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "c085eacd54fae8f07665f4fd71aa2359", "sha256": "a6120e51595b39351624b9993fad08f647633e5b7f940651f029bba5fb63584e" }, "downloads": -1, "filename": "amendment_back_up-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "c085eacd54fae8f07665f4fd71aa2359", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8233, "upload_time": "2019-07-16T05:59:05", "url": "https://files.pythonhosted.org/packages/27/31/8006ff61686b5e7dd78e2955fa885aaa8938dbb388b9a04653de780075ee/amendment_back_up-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b440f3372d26bb5c62692c02e7f40619", "sha256": "cdac95457717be834f22fa0950961a14a392a5d4fe49fd100b0a2e8ea087f0fc" }, "downloads": -1, "filename": "amendment-back-up-0.0.7.tar.gz", "has_sig": false, "md5_digest": "b440f3372d26bb5c62692c02e7f40619", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5246, "upload_time": "2019-07-16T05:59:07", "url": "https://files.pythonhosted.org/packages/34/83/ed110b98bc78abebbd58ec799730f06992655bc83ee2e9d4367f568ad11f/amendment-back-up-0.0.7.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "4d856eb6e7bf00aa6d5a58db5b256133", "sha256": "ecbff9d02b711d21ec02c1dec7214293227350300be143178d836993c62aa3d2" }, "downloads": -1, "filename": "amendment_back_up-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "4d856eb6e7bf00aa6d5a58db5b256133", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8267, "upload_time": "2019-07-16T06:21:53", "url": "https://files.pythonhosted.org/packages/e6/c0/96df949f1b3664927455ee3a0bc3b6b94ce044bb14beb4642640791a362f/amendment_back_up-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b7a1e47b2e60832a0071ef1f43a217fa", "sha256": "33b8c9a0331c29668d057ca82cb1a943e410d5527d980b9907d6b3bc6b49427a" }, "downloads": -1, "filename": "amendment-back-up-0.1.0.tar.gz", "has_sig": false, "md5_digest": "b7a1e47b2e60832a0071ef1f43a217fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5244, "upload_time": "2019-07-16T06:21:54", "url": "https://files.pythonhosted.org/packages/3c/bd/69daf057967d0e715d6a6bbfd88bf2bd031ed714b60b6c5e99af75b54e20/amendment-back-up-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2bc5e43ca4245d2bd389b0ea7b6ec400", "sha256": "d07b90ad5ec78a358e267394faa2d0805274592523395987bef08726fbff8e8e" }, "downloads": -1, "filename": "amendment_back_up-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2bc5e43ca4245d2bd389b0ea7b6ec400", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8258, "upload_time": "2019-07-16T06:25:38", "url": "https://files.pythonhosted.org/packages/7d/7b/dc18fc22a0da326da9134a83791e076714551ad9d8d0b04787be9369f3ef/amendment_back_up-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "247cd389d0e5415d5cc6a021cdb3ee4c", "sha256": "28edccad8dddef5a0c70b473049ed2fd29326a4cafefeef7618d96912035de83" }, "downloads": -1, "filename": "amendment-back-up-0.1.1.tar.gz", "has_sig": false, "md5_digest": "247cd389d0e5415d5cc6a021cdb3ee4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5239, "upload_time": "2019-07-16T06:25:39", "url": "https://files.pythonhosted.org/packages/7c/18/bf19f8888691998c49aa43f49ccb97a713926899287e65080c1a4074a6c8/amendment-back-up-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "b7b254db0cbd320fc4b52286e746715b", "sha256": "781139d5321eaf0bbfcb1eb2f60a685861b994e7dd2d849b632b7c8cde581c67" }, "downloads": -1, "filename": "amendment_back_up-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "b7b254db0cbd320fc4b52286e746715b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8557, "upload_time": "2019-07-16T23:58:00", "url": "https://files.pythonhosted.org/packages/41/25/956d3011d656e4abebad0156a358118c8cb04a7907e5f200d880f8386f0b/amendment_back_up-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c73158998015ae3e35a2395369a3c970", "sha256": "fadf3b68ae1ea2df74bd1cf5af3d443a45bba2dced2c27cc9993c0aa8972a611" }, "downloads": -1, "filename": "amendment-back-up-0.1.2.tar.gz", "has_sig": false, "md5_digest": "c73158998015ae3e35a2395369a3c970", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5393, "upload_time": "2019-07-16T23:58:02", "url": "https://files.pythonhosted.org/packages/87/1a/05ccc402582ba49aea3a0da7093a48ae0f03a0141d547f065ced6a76779b/amendment-back-up-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "e3211f7c4aeb9e9b7e354af10d1eff02", "sha256": "b4a4e6f6fb1458b340f41f79ccd5ed463803526c4317aa2d4795a783e0b70b8d" }, "downloads": -1, "filename": "amendment_back_up-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "e3211f7c4aeb9e9b7e354af10d1eff02", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8663, "upload_time": "2019-07-17T00:10:13", "url": "https://files.pythonhosted.org/packages/5a/d4/ea46ead27feb4a26de5bdb3c90a3ceb5001681ef462581db905eb5d3700c/amendment_back_up-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7fb15de743d310c85324f619697323aa", "sha256": "6fdb6485dd176bb627abaec1cfbb90975f10e279d1650b56e4000c646ded326e" }, "downloads": -1, "filename": "amendment-back-up-0.1.3.tar.gz", "has_sig": false, "md5_digest": "7fb15de743d310c85324f619697323aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5459, "upload_time": "2019-07-17T00:10:15", "url": "https://files.pythonhosted.org/packages/45/15/661ce40d6259e33a40b01c66945164820a911eca6a046cd75516ab0b4e2c/amendment-back-up-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "4ff7d2ac107d117e1cec7586d4dd127c", "sha256": "ad391d3d91577fb6f492c3281915e147c71c3d6d5c61e77b17128f70f454baeb" }, "downloads": -1, "filename": "amendment_back_up-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4ff7d2ac107d117e1cec7586d4dd127c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8976, "upload_time": "2019-07-17T00:27:12", "url": "https://files.pythonhosted.org/packages/9d/cd/8ea62d07a6db1db400ef684a13f610c446701a030a3cbff1cd48cb5d92b4/amendment_back_up-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6779663751a31da2dd59ff3b0a5bac11", "sha256": "bd52e30bcc93ef53b4c6b8725fa350092f379fbdfeadf707561189d5739fd936" }, "downloads": -1, "filename": "amendment-back-up-0.1.4.tar.gz", "has_sig": false, "md5_digest": "6779663751a31da2dd59ff3b0a5bac11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5767, "upload_time": "2019-07-17T00:27:14", "url": "https://files.pythonhosted.org/packages/24/8e/4beddac672074c797bd464543668920863741140b4cff4ca901fd3ad96da/amendment-back-up-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "23ac8b19f7998d5f514d4b5ee71af37c", "sha256": "fa0065abd8220a778bfde76374f0306c49ac163edf8a57fa3709c1b4ba06c26e" }, "downloads": -1, "filename": "amendment_back_up-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "23ac8b19f7998d5f514d4b5ee71af37c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8980, "upload_time": "2019-07-17T00:46:13", "url": "https://files.pythonhosted.org/packages/40/c8/722684f6e617a6de0eb4e90f399c95431b2fc93bc57e378532d826647170/amendment_back_up-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b0397f0716bcf2c751a61658bfe722e", "sha256": "1d3470ee3a1b0fdabc5ae2f3eb9ebe5384d8f6bfa7c1fd38616d560a58f5cdf8" }, "downloads": -1, "filename": "amendment-back-up-0.1.5.tar.gz", "has_sig": false, "md5_digest": "2b0397f0716bcf2c751a61658bfe722e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5774, "upload_time": "2019-07-17T00:46:15", "url": "https://files.pythonhosted.org/packages/bd/05/bac161df2f9dcbe6c4162e3624c5b7811e2b4d5cb56058c0867a17f91fa9/amendment-back-up-0.1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "23ac8b19f7998d5f514d4b5ee71af37c", "sha256": "fa0065abd8220a778bfde76374f0306c49ac163edf8a57fa3709c1b4ba06c26e" }, "downloads": -1, "filename": "amendment_back_up-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "23ac8b19f7998d5f514d4b5ee71af37c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8980, "upload_time": "2019-07-17T00:46:13", "url": "https://files.pythonhosted.org/packages/40/c8/722684f6e617a6de0eb4e90f399c95431b2fc93bc57e378532d826647170/amendment_back_up-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b0397f0716bcf2c751a61658bfe722e", "sha256": "1d3470ee3a1b0fdabc5ae2f3eb9ebe5384d8f6bfa7c1fd38616d560a58f5cdf8" }, "downloads": -1, "filename": "amendment-back-up-0.1.5.tar.gz", "has_sig": false, "md5_digest": "2b0397f0716bcf2c751a61658bfe722e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5774, "upload_time": "2019-07-17T00:46:15", "url": "https://files.pythonhosted.org/packages/bd/05/bac161df2f9dcbe6c4162e3624c5b7811e2b4d5cb56058c0867a17f91fa9/amendment-back-up-0.1.5.tar.gz" } ] }