{ "info": { "author": "Dustin Oprea", "author_email": "myselfasunder@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "------------\nIntroduction\n------------\n\nThis project allows you to fingerprint a directory by dropping a manifest of relative filepaths and modified-times into it, and then build patches against it later and maintain a history of patching. Inclusions and exclusions can be specified and most of the commands can output JSON-encoded data so that they can be internalized from other tools.\n\nTo apply a patch, merely expand it in the directory. Obviously we don't manage files that have been removed.\n\n\n-----\nTools\n-----\n\npm_write_manifest\n=================\n\nWrite a manifest of the complete contents of a given directory to the root of the same directory. The path can be absolute or relative.\n\nCommand-Line Help::\n\n usage: pm_write_manifest [-h] [-f] [-mf MANIFEST_FILENAME] [-e REL-PATH]\n [-ef REL-FILEPATH] [-i REL-PATH] [-j]\n root_path\n\n Write file-manifest for the contents of the given path.\n\n positional arguments:\n root_path Root path\n\n optional arguments:\n -h, --help show this help message and exit\n -f, --force Force the replacement of an existing manifest\n -mf MANIFEST_FILENAME, --manifest-filename MANIFEST_FILENAME\n Manifest filename\n -e REL-PATH, --exclude-rel-path REL-PATH\n Ignore the contents of this child path\n -ef REL-FILEPATH, --exclude-rel-filepath REL-FILEPATH\n Ignore this filepath\n -i REL-PATH, --include-rel-path REL-PATH\n Constraint the matched files to one or more\n directories\n -j, --json Print result in JSON\n\nUsage::\n\n $ pm_write_manifest /application/root\n\n\npm_check_for_changes\n====================\n\nPrint a list of the changes since the manifest was written.\n\nCommand-Line Help::\n\n usage: pm_check_for_changes [-h] [-mf MANIFEST_FILENAME] [-e REL-PATH]\n [-ef REL-FILEPATH] [-i REL-PATH] [-ir]\n root_path\n\n Check the given path for changes since the manifest was written.\n\n positional arguments:\n root_path Root path\n\n optional arguments:\n -h, --help show this help message and exit\n -mf MANIFEST_FILENAME, --manifest-filename MANIFEST_FILENAME\n Manifest filename\n -e REL-PATH, --exclude-rel-path REL-PATH\n Ignore the contents of this child path\n -ef REL-FILEPATH, --exclude-rel-filepath REL-FILEPATH\n Ignore this filepath\n -i REL-PATH, --include-rel-path REL-PATH\n Constraint the matched files to one or more\n directories\n -ir, --ignore-removed\n Do not show removed files (helpful when we include\n specific subdirectories)\n\nUsage::\n\n $ pm_check_for_changes /application/root\n New\n ---\n new_directory/new_file2\n new_file\n\n Updated\n -------\n updated_file\n\n\npm_make_differential_patch\n==========================\n\nBuild a new patch with the difference between the current directory and the state when the manifest was written.\n\nCommand-Line Help::\n\n usage: pm_make_differential_patch [-h] [-mf MANIFEST_FILENAME] [-e REL-PATH]\n [-i REL-PATH] [-ef REL-FILEPATH] [-j]\n [-m COUNT]\n root_path patch_name output_path\n\n Create an archive with all differences since the manifest was written.\n\n positional arguments:\n root_path Root path\n patch_name Patch name\n output_path Output path\n\n optional arguments:\n -h, --help show this help message and exit\n -mf MANIFEST_FILENAME, --manifest-filename MANIFEST_FILENAME\n Manifest filename\n -e REL-PATH, --exclude-rel-path REL-PATH\n Ignore the contents of this child path\n -i REL-PATH, --include-rel-path REL-PATH\n Constraint the matched files to one or more\n directories\n -ef REL-FILEPATH, --exclude-rel-filepath REL-FILEPATH\n Ignore this filepath\n -j, --json Print result in JSON\n -m COUNT, --max-files COUNT\n A safe maximum for the number of allowed files in the\n patch (0 for unlimited)\n\nUsage::\n\n $ pm_make_differential_patch /application/root 201507282031 /tmp\n Created/Updated Files\n ---------------------\n\n new_directory/new_file2\n updated_file\n new_file\n\n Patch file-path:\n\n /tmp/pm-patch-201507282031.tar.bz2\n\n\npm_show_applied_patches\n=======================\n\nCommand-Line Help::\n\n usage: pm_show_applied_patches [-h] [-j] root_path\n\n Show the patches that have been applied to the application.\n\n positional arguments:\n root_path Root path\n\n optional arguments:\n -h, --help show this help message and exit\n -j, --json Print result in JSON\n\nUsage::\n\n $ pm_show_applied_patches /application/root\n Applied Patches\n ---------------\n\n 201507282031\n\n Affected Files\n --------------\n\n new_directory/new_file2\n updated_file\n new_file\n\nNotes\n-----\n\nThis is merely a tool of convenience. All patches will deposit a file that looks like \".patch_info.XYZ\" into the application root. For example, the patch that we created above deposited a file named \".patch_info.201507282031\". This holds JSON-encoded data that describes the patch.\n\nExample::\n\n $ cat .patch_info.201507282031 \n {\n \"created_timestamp\": \"2015-07-28 20:31:28\",\n \"files\": {\n \"new_directory/new_file2\": {\n \"filesize_b\": 0,\n \"mtime_epoch\": 1438129768\n },\n \"new_file\": {\n \"filesize_b\": 0,\n \"mtime_epoch\": 1438129731\n },\n \"updated_file\": {\n \"filesize_b\": 0,\n \"mtime_epoch\": 1438129728\n }\n },\n \"patch_name\": \"201507282031\"\n }\n\n Note that the filesizes were zero merely because we created empty-files for the purpose of these examples.\n\n\n-------------------------\nPatch Application Example\n-------------------------\n\nOnce you have a patch, simply expand it into the application root in order to apply it::\n\n $ tar xjf /tmp/pm-patch-201507282031.tar.bz2", "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/dsoprea/PathManifest", "keywords": "path manifest patch patches", "license": "GPL 2", "maintainer": null, "maintainer_email": null, "name": "path_manifest", "package_url": "https://pypi.org/project/path_manifest/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/path_manifest/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/dsoprea/PathManifest" }, "release_url": "https://pypi.org/project/path_manifest/0.2.24/", "requires_dist": null, "requires_python": null, "summary": "Inject a manifest of a directory structure and generate patches against it later.", "version": "0.2.24" }, "last_serial": 1732492, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "800e2b936d7c5becfd8f07499d694f61", "sha256": "c3929ab6831a057d43b49af6786f9fd276f4178c16e220ccab8a95e511c90e76" }, "downloads": -1, "filename": "path_manifest-0.2.0.tar.gz", "has_sig": false, "md5_digest": "800e2b936d7c5becfd8f07499d694f61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4846, "upload_time": "2015-07-23T04:41:39", "url": "https://files.pythonhosted.org/packages/77/80/8c77af1a52ce0627bfe7359f62ec9431366f97f02dc784fe744d558bdd3b/path_manifest-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "09787e78f37b078b329d3ca514b9262b", "sha256": "f3cb8bddc9c472c73c0dca453439a92ce0cdb15d9f25fbd9367fa331b8a736f0" }, "downloads": -1, "filename": "path_manifest-0.2.1.tar.gz", "has_sig": false, "md5_digest": "09787e78f37b078b329d3ca514b9262b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4940, "upload_time": "2015-07-23T04:46:46", "url": "https://files.pythonhosted.org/packages/39/51/27981101403738a1d03877e56416d9fec212e2e9e6b5e194c67d1198f114/path_manifest-0.2.1.tar.gz" } ], "0.2.10": [ { "comment_text": "", "digests": { "md5": "eacbacffedab3a588a644c63d3476b8f", "sha256": "aa8be66a40d4d24cb0031b3557bb080b8e78078a4c55fb861e0705d85e0484ec" }, "downloads": -1, "filename": "path_manifest-0.2.10.tar.gz", "has_sig": false, "md5_digest": "eacbacffedab3a588a644c63d3476b8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5694, "upload_time": "2015-07-23T23:16:22", "url": "https://files.pythonhosted.org/packages/f0/0b/f8c8811c4d1a75b92759a6cb900ad3780390da8d628c71edde16a33dd8b9/path_manifest-0.2.10.tar.gz" } ], "0.2.11": [ { "comment_text": "", "digests": { "md5": "496248383d65197a24329f4903fa5b55", "sha256": "e7fc8caa3b4f7652f0f516be01d9a7efa0e6e9b6c672d7230897af101962ebf7" }, "downloads": -1, "filename": "path_manifest-0.2.11.tar.gz", "has_sig": false, "md5_digest": "496248383d65197a24329f4903fa5b55", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6261, "upload_time": "2015-07-24T02:45:34", "url": "https://files.pythonhosted.org/packages/01/53/873a61df3f8d796256e6199fa9b69a89b25b0a4e29d2af95d3ff9505be2d/path_manifest-0.2.11.tar.gz" } ], "0.2.12": [ { "comment_text": "", "digests": { "md5": "bb82a313606fdcb149e18b7b5c298e2a", "sha256": "38653ff7bfc44ce78d232e73ec70d5bc9c0082b90c13700f7add4fbcfe592d43" }, "downloads": -1, "filename": "path_manifest-0.2.12.tar.gz", "has_sig": false, "md5_digest": "bb82a313606fdcb149e18b7b5c298e2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6290, "upload_time": "2015-07-24T06:32:17", "url": "https://files.pythonhosted.org/packages/b5/56/6dcbcca6f28428fae389ebf38b14e784aebe5c3d85e32912af7e753aedda/path_manifest-0.2.12.tar.gz" } ], "0.2.13": [ { "comment_text": "", "digests": { "md5": "564ab53f68d742f9f1ec3ffbd497651c", "sha256": "c0ee6c548934e6bbc3da490afcaf9c57edf9be0119c1e89bea4387f44daa4e53" }, "downloads": -1, "filename": "path_manifest-0.2.13.tar.gz", "has_sig": false, "md5_digest": "564ab53f68d742f9f1ec3ffbd497651c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6483, "upload_time": "2015-07-24T08:08:36", "url": "https://files.pythonhosted.org/packages/90/07/6a269e90e1d134c85d55abc8784356e603c974d75ae25b2d8e208dd8f999/path_manifest-0.2.13.tar.gz" } ], "0.2.14": [ { "comment_text": "", "digests": { "md5": "121653fa9e3adf29dd3126e868982330", "sha256": "36e606198aafcb0c23bc2438388fce4724ae7bfb04596f14594a2c0a04364e41" }, "downloads": -1, "filename": "path_manifest-0.2.14.tar.gz", "has_sig": false, "md5_digest": "121653fa9e3adf29dd3126e868982330", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6746, "upload_time": "2015-07-25T03:44:17", "url": "https://files.pythonhosted.org/packages/b6/f1/50bebf97b2f5584707875a360136ac0495d5dfc38b7542921da93704024e/path_manifest-0.2.14.tar.gz" } ], "0.2.15": [ { "comment_text": "", "digests": { "md5": "e943de8a7787e67e7b0ae7ec04f1954f", "sha256": "d23e4f9dc98d219913d753188e82a7f413802df457dd48c423b1f081be699681" }, "downloads": -1, "filename": "path_manifest-0.2.15.tar.gz", "has_sig": false, "md5_digest": "e943de8a7787e67e7b0ae7ec04f1954f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6831, "upload_time": "2015-07-28T20:49:35", "url": "https://files.pythonhosted.org/packages/ce/34/22194dd636c85f37ee27cd51bf4401a5dbe239bae7441f6fe55fef2ba974/path_manifest-0.2.15.tar.gz" } ], "0.2.16": [ { "comment_text": "", "digests": { "md5": "18dfd04d406248cb14dd431fca37e710", "sha256": "02fc7963c264b0d6374ab0c2a6f0c650986f5eb32cc9a89e45ac5d072a164426" }, "downloads": -1, "filename": "path_manifest-0.2.16.tar.gz", "has_sig": false, "md5_digest": "18dfd04d406248cb14dd431fca37e710", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6838, "upload_time": "2015-07-28T21:17:35", "url": "https://files.pythonhosted.org/packages/55/57/aa4cfa5234396321eb57538c681be40432aed5d48cc58b1a1b9f5ed38c54/path_manifest-0.2.16.tar.gz" } ], "0.2.17": [ { "comment_text": "", "digests": { "md5": "1a44e096e90ea87a731d2d1ba681f2c9", "sha256": "5d229d5caf6c693b87770bee9628b5e03c53337321ea89801bd99966ab7ba95a" }, "downloads": -1, "filename": "path_manifest-0.2.17.tar.gz", "has_sig": false, "md5_digest": "1a44e096e90ea87a731d2d1ba681f2c9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8824, "upload_time": "2015-07-29T17:41:33", "url": "https://files.pythonhosted.org/packages/ef/95/d232f602c163a466b80eb0b026405b56bfb18fb150d9ea78a2e9d7701227/path_manifest-0.2.17.tar.gz" } ], "0.2.18": [ { "comment_text": "", "digests": { "md5": "5404e6436b592488c4c422315d584776", "sha256": "7772773fff12bb85aa92ef8c5813414b522e5d59d8b71b3876241d936260c0ba" }, "downloads": -1, "filename": "path_manifest-0.2.18.tar.gz", "has_sig": false, "md5_digest": "5404e6436b592488c4c422315d584776", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8933, "upload_time": "2015-07-29T21:49:22", "url": "https://files.pythonhosted.org/packages/a7/3a/69c856f530c259724440b7f46c0fea9b65cd42dda05c208cc08cb564ff60/path_manifest-0.2.18.tar.gz" } ], "0.2.19": [ { "comment_text": "", "digests": { "md5": "93ea6ab687c92080ea40a488320bab19", "sha256": "fc74d42dbacf4090b85a2f37b89ca34e1c3190c74b3e42985c7864a0cc102937" }, "downloads": -1, "filename": "path_manifest-0.2.19.tar.gz", "has_sig": false, "md5_digest": "93ea6ab687c92080ea40a488320bab19", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9377, "upload_time": "2015-08-06T04:15:24", "url": "https://files.pythonhosted.org/packages/59/d5/49551170c58678502f1b7f6448ee3d31a8bcacc2684d3d80185f44e0e741/path_manifest-0.2.19.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "7370711cb177727d792e278ecad2b655", "sha256": "d4d42241358baa4b9e978c69c5a4435b7aec2a2879aae3f62077e86fd7b70d00" }, "downloads": -1, "filename": "path_manifest-0.2.2.tar.gz", "has_sig": false, "md5_digest": "7370711cb177727d792e278ecad2b655", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5416, "upload_time": "2015-07-23T13:48:17", "url": "https://files.pythonhosted.org/packages/2a/4e/be0035f71ea1bafc50a979db91952a21504722d911aeec43cdb532068452/path_manifest-0.2.2.tar.gz" } ], "0.2.20": [ { "comment_text": "", "digests": { "md5": "fd1a1bb1ed9dc81f9ec0b2b29e32e52b", "sha256": "d5f3673d287af7e042533ced759a1052c8e9e3ade580c2f4efc5b9e9d5bd9336" }, "downloads": -1, "filename": "path_manifest-0.2.20.tar.gz", "has_sig": false, "md5_digest": "fd1a1bb1ed9dc81f9ec0b2b29e32e52b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9494, "upload_time": "2015-08-07T00:31:19", "url": "https://files.pythonhosted.org/packages/29/41/d71fd0179eabff7f697448f92e61f12a93692554e102f6f781ce543e7cd9/path_manifest-0.2.20.tar.gz" } ], "0.2.21": [ { "comment_text": "", "digests": { "md5": "81e258929693d2a58cd69ee8d822faf1", "sha256": "a4c86c8acdee3239ec8c0982fbfb6947cf14da8385f3fd13e9e7133f18a61d37" }, "downloads": -1, "filename": "path_manifest-0.2.21.tar.gz", "has_sig": false, "md5_digest": "81e258929693d2a58cd69ee8d822faf1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9467, "upload_time": "2015-09-05T06:32:50", "url": "https://files.pythonhosted.org/packages/ee/80/5e56b0a043fe1154818efe7ac35c80e0c153166bf193adf8ce5a9fb0095a/path_manifest-0.2.21.tar.gz" } ], "0.2.22": [ { "comment_text": "", "digests": { "md5": "9456871df916b2dcea84b4560bb65a4b", "sha256": "fa54575e07c83822171a14f909f365f153499de80bba1ed18cf5751f53c1baff" }, "downloads": -1, "filename": "path_manifest-0.2.22.tar.gz", "has_sig": false, "md5_digest": "9456871df916b2dcea84b4560bb65a4b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9517, "upload_time": "2015-09-15T18:29:07", "url": "https://files.pythonhosted.org/packages/56/8f/04c15a2dabddded4271b020f6675f512eb68f747d2ac77ecaef28def63b7/path_manifest-0.2.22.tar.gz" } ], "0.2.23": [ { "comment_text": "", "digests": { "md5": "392532bf483ccae83c6d424d7266f955", "sha256": "fffae1608a602eee352176e6331b26b21afca344eb648d32bcc1fd5f56d96d2a" }, "downloads": -1, "filename": "path_manifest-0.2.23.tar.gz", "has_sig": false, "md5_digest": "392532bf483ccae83c6d424d7266f955", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9732, "upload_time": "2015-09-21T21:48:37", "url": "https://files.pythonhosted.org/packages/db/e5/ca497bff005cf053c4e021eb74e1eb8ff9d90420086435e98b90f16046bb/path_manifest-0.2.23.tar.gz" } ], "0.2.24": [ { "comment_text": "", "digests": { "md5": "e20e244d64b87bd728d51f26e0588f8c", "sha256": "7feb0741fcb4468f8f1ea45f5b75b2867a6c8aaba140bab1bf4c45c64a02d07b" }, "downloads": -1, "filename": "path_manifest-0.2.24.tar.gz", "has_sig": false, "md5_digest": "e20e244d64b87bd728d51f26e0588f8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9721, "upload_time": "2015-09-22T01:25:03", "url": "https://files.pythonhosted.org/packages/23/c8/65267ffeb4dbf6a1831fc508b515a22c35bb24cf1f129f4c631ed0d6611d/path_manifest-0.2.24.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "094fc4c64600cc065d048747d069bcf9", "sha256": "6165283769eb0c22567f2c787124bfa28cd4caa355e750c2d60e6d3cd32a0556" }, "downloads": -1, "filename": "path_manifest-0.2.3.tar.gz", "has_sig": false, "md5_digest": "094fc4c64600cc065d048747d069bcf9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5475, "upload_time": "2015-07-23T14:16:46", "url": "https://files.pythonhosted.org/packages/2e/e4/f8c36f1196602cbe7ecdd67d3846ca38df78d276620dd99e53c388dd9a15/path_manifest-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "389a6b3572fab10eef9b71defde45c16", "sha256": "ed32fce5afe3446e033f1d27c7531b5d525598246277d1dcbc01d4b67659de67" }, "downloads": -1, "filename": "path_manifest-0.2.4.tar.gz", "has_sig": false, "md5_digest": "389a6b3572fab10eef9b71defde45c16", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5467, "upload_time": "2015-07-23T14:41:28", "url": "https://files.pythonhosted.org/packages/c4/05/24fdc217ae0a635ad0261675cf162230ac6e07c9b184ffc2fbe497abbb95/path_manifest-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "18270690d7760c4f8379f16b28359b73", "sha256": "621dd4a55fcb9fc6f0c4cff5cfdec180dbb76ebbf446cfb4da9f37ec081eb936" }, "downloads": -1, "filename": "path_manifest-0.2.5.tar.gz", "has_sig": false, "md5_digest": "18270690d7760c4f8379f16b28359b73", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5783, "upload_time": "2015-07-23T15:06:18", "url": "https://files.pythonhosted.org/packages/94/f9/7d4b2412fbc161c98d6d182add32ca7ffcf3ee54ed73a93a3be8021d1616/path_manifest-0.2.5.tar.gz" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "1833b5a31c6332b710fd39cd7cd3160f", "sha256": "a7a066ec8ef9c2f48eff98337fdc49bc1b4843221eb26509625e0703a094a14d" }, "downloads": -1, "filename": "path_manifest-0.2.6.tar.gz", "has_sig": false, "md5_digest": "1833b5a31c6332b710fd39cd7cd3160f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5673, "upload_time": "2015-07-23T15:49:55", "url": "https://files.pythonhosted.org/packages/f7/af/7a37a977d22a9d67a931eb49c9a3e0294c455d53e9c5bf250a880e06a343/path_manifest-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "97e0c044467dd0062856f9b5ac74df57", "sha256": "e8fae95996d5f196666dead34a998d2cbd6f2e3428e506425e354daa00775bd2" }, "downloads": -1, "filename": "path_manifest-0.2.7.tar.gz", "has_sig": false, "md5_digest": "97e0c044467dd0062856f9b5ac74df57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5685, "upload_time": "2015-07-23T16:25:35", "url": "https://files.pythonhosted.org/packages/f6/3f/afc0b262a7c5cb7e64f5f28d61b6ce717b919ff13a80ae68729c901a5b33/path_manifest-0.2.7.tar.gz" } ], "0.2.9": [ { "comment_text": "", "digests": { "md5": "87402876b24fed2199742896bbf21069", "sha256": "aa3010843e013d700ab1c15e88732d37029b6ea59c2a5ae8faafd1742a2c7b4e" }, "downloads": -1, "filename": "path_manifest-0.2.9.tar.gz", "has_sig": false, "md5_digest": "87402876b24fed2199742896bbf21069", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5693, "upload_time": "2015-07-23T16:43:32", "url": "https://files.pythonhosted.org/packages/82/95/e0ad66bd52cbc0e86b4e214089f5d1aa4fc15df7c4c75c72046bb5d90029/path_manifest-0.2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e20e244d64b87bd728d51f26e0588f8c", "sha256": "7feb0741fcb4468f8f1ea45f5b75b2867a6c8aaba140bab1bf4c45c64a02d07b" }, "downloads": -1, "filename": "path_manifest-0.2.24.tar.gz", "has_sig": false, "md5_digest": "e20e244d64b87bd728d51f26e0588f8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9721, "upload_time": "2015-09-22T01:25:03", "url": "https://files.pythonhosted.org/packages/23/c8/65267ffeb4dbf6a1831fc508b515a22c35bb24cf1f129f4c631ed0d6611d/path_manifest-0.2.24.tar.gz" } ] }