{ "info": { "author": "Factual Front Team", "author_email": "front-eng@factual.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: Unix", "Programming Language :: Python :: 3", "Topic :: Security", "Topic :: Software Development", "Topic :: Software Development :: Version Control" ], "description": "# Patchwork -- Dependency Monitoring\n\n## Factual Hackathon 2017\n\nProject to help Factual's Front Team manage versioning upates and security vulnerabilities in 3rd party package dependencies.\nOffered as-is with no plans for further updates.\n\n## Setup Patchwork\n\n### Create VersionEye Account\n\n[Signup](https://www.versioneye.com/signup?utf8=%E2%9C%93) for an account at https://www.versioneye.com/signup?utf8=%E2%9C%93. Make note of your API Key and organization name.\nThe organization name is found at the top of your VersionEye dashboard when logged in and will be something like `[username]_orga`.\n\n### Create a SlackBot\n\nCreate a new app at https://api.slack.com/apps. Title it 'Patchwork'.\n\nIn 'Add Features and Functionality', click 'Incoming Webhooks'. At the bottom, click 'Add New Webhook to Team' and follow the instructions to choose the channel the app will post to. Make note of the generated webhook URL.\n\nUpload the Patchwork logo from `patchwork/assets/patchwork.png` under \"Basic Information > Display Information\". I chose \"Notices for Package Updates & Security Vulnerabilities\" for the description and `#c55100` for the background color.\n\n### Create your config file\n\nIn `patchwork/src`, copy `config.json.example` to `config.json` and edit the resulting file as necessary.\nThe API key, organization name, and Slack webhook URL you just generated are required.\nDelete any lines of this file that you do not want - they will override the default values if they are set.\n\n#### Other Config Options\n\n##### `directory`\n\nstr: Absolute path of the directory to search for outdated dependencies\n\n##### `directory_name`\n\nstr: Name of the directory to search for outdated dependencies. Used in place of the absolute path in reporting: for example, if a dependency is at `/Users/yourName/repo_name/dependency.type` and directory_name is set to `repo_name`, Slack and email notifications will refer to the file by `repo_name/dependency.type` instead of the full path on your machine.\n\n##### `traversal_depth`\n\nint: represents how deeply to search for dependency files. For example, the default `traversal_depth = 0` represents only searching in the top-level directory and will return files like `repository/package.json` but not `repository/src/package.json`.\n\n##### `subdirectory_blacklist`\n\nstr[]: Patchwork will ignore any subdirectories with the included names. By default, Patchwork blacklists `node_modules` subdirectories so you don't waste API calls looking up your dependencies' dependencies. For an even more thorough search that includes all these files, you can override this setting in your config file with `subdirectory_blacklist: []`.\n\n##### `data_directory`\n\nstr: If using the `-s` or `--save` option to save your dependency reports as JSON, this specifies the directory to use. By default, `data_directory` is `patchwork/data/`, meaning reports will be saved to `patchwork/data//`. The timestamp-based subdirectories allow you to find reports from a given day or time easily.\n\nYou can override with any absolute path if you wish to save the reports outside of the Patchwork folder.\n\n##### `test_webhook`\n\nstr: If using the `-t` or `--test` option, sends Slack notifications to this webhook. This option allows you to post to a different channel (I recommend your own slackbot channel) when testing so you don't overwhelm the real channel.\n\n##### `dependency_file_types`\n\nstr[]: Patchwork searches for and uploads to VersionEye only those files that match a file name in this array. Default is `['package.json']`. See below for more options:\n\n###### Supported Dependency Options\n\nFiles managed by the following package managers can be parsed with Patchwork through the VersionEye API. For example, both `Gemfile`s and `Gemfile.lock`s are supported under the Ruby Bundler.\n\n- Composer (PHP)\n- Bundler (Ruby)\n- PIP (Python)\n- NPM (Node.JS)\n- Yarn (Node.JS)\n- Bower (JavaScript)\n- CocoaPods (Objective-C)\n- Maven (Java)\n- SBT (Scala)\n- Gradle (Groovy)\n- Leiningen (Clojure)\n- Nuget (Microsoft .NET platform)\n- Cargo (Rust)\n- Biicode (C/C++)\n- Berkshelf (Chef)\n- Hex (Elixir)\n- Cpan (Perl)\n\n### Install Requirements\n\nPatchwork requires python3.\nInstall python3 from https://www.python.org/downloads/.\nPatchwork does not require any nonstandard libraries.\n\nIf your copy of python3 is anywhere other than `usr/local/bin/python3`, you may have to update the shebang on line 1 of `patchwork/src/patchwork.py` with the path to your copy. The path can be found with `which python3`.\n\n## Run Patchwork\n\n`cd` into `patchwork/src` and run `chmod +x patchwork.py` to make the dependency checker executable.\nRun via `./patchwork.py`, or `./patchwork.py -v` for verbose mode.\n\nUse the `-t` option to run in test mode (posts to a different Slack channel), `-s` to persist the JSON reports from VersionEye to the data_directory in your config file, or `-c` to specify a config file other than `patchwork/src/config.json`.\n\n## Types of Notifications\n### Versioning\n\n![Versioning Notification](https://user-images.githubusercontent.com/10542153/28694551-2936dc10-72df-11e7-9f27-8e223754fd03.png)\n\nDistinguishes between minor releases, middling releases, and new major version numbers.\n\n### Security\n\n![Security Notification](https://user-images.githubusercontent.com/10542153/28694576-58d56a86-72df-11e7-86ea-bf0a1eb7d925.png)\n\nOrange for security vulnerabilities published more than 2 weeks ago, red if published within the last two weeks (most recent sprint).\n\n## License\n\nMIT License\n\nCopyright (c) 2017 Factual, Inc\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Front/patchwork", "keywords": "patchwork packages security monitoring", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "factual-patchwork", "package_url": "https://pypi.org/project/factual-patchwork/", "platform": "", "project_url": "https://pypi.org/project/factual-patchwork/", "project_urls": { "Homepage": "https://github.com/Front/patchwork" }, "release_url": "https://pypi.org/project/factual-patchwork/1.0.0/", "requires_dist": null, "requires_python": "", "summary": "Dependency Monitoring Solution", "version": "1.0.0" }, "last_serial": 3104204, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "a75e55f60a72d67043f2b1bc53624cd1", "sha256": "6fab638cbbd3b865846c3bc0598d11b91ba9689a8f543db31a669737b7e979ec" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.tar.gz", "has_sig": false, "md5_digest": "a75e55f60a72d67043f2b1bc53624cd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59069, "upload_time": "2017-08-17T17:24:03", "url": "https://files.pythonhosted.org/packages/7c/44/02493c8d845051cb7447fb5f950dcf863aab6a4cab639f205b594eb8f32c/factual-patchwork-1.0.0.tar.gz" } ], "1.0.0.dev10": [ { "comment_text": "", "digests": { "md5": "7e29861bc8ee875144d06da14c746386", "sha256": "80c30a150b2a76cdb01fea9161f8b6236964170f02ae1bc487f4b3524ac65418" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev10.tar.gz", "has_sig": false, "md5_digest": "7e29861bc8ee875144d06da14c746386", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58940, "upload_time": "2017-08-16T22:56:03", "url": "https://files.pythonhosted.org/packages/a9/76/52c7508e9f354f7f005df58b287b22555b2a96a0f4940ba58fd09814ca04/factual-patchwork-1.0.0.dev10.tar.gz" } ], "1.0.0.dev11": [ { "comment_text": "", "digests": { "md5": "ebefd946240aeebaa60308c58c98d0ee", "sha256": "027d42fe768463784228ba5fdf8d633e9b9e8ecb62dcd0c9811f5a1e1e901839" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev11.tar.gz", "has_sig": false, "md5_digest": "ebefd946240aeebaa60308c58c98d0ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58993, "upload_time": "2017-08-16T23:06:07", "url": "https://files.pythonhosted.org/packages/c1/3a/f920d07a01b9f9bf90ef67bdee7f35ac4be7ea8699680cb7105aea8fac4e/factual-patchwork-1.0.0.dev11.tar.gz" } ], "1.0.0.dev12": [ { "comment_text": "", "digests": { "md5": "3aed50e6467f0760d8cfe166730d6abf", "sha256": "0ebb9eed32b0352496ff825cd3a0f408471b17dd6c92194fae15f3ac1d3eeb9d" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev12.tar.gz", "has_sig": false, "md5_digest": "3aed50e6467f0760d8cfe166730d6abf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58990, "upload_time": "2017-08-16T23:08:01", "url": "https://files.pythonhosted.org/packages/52/5c/239d3fedd6588cc082f471a3d4ed9b514de378e2ce5e36108ab854d96dbb/factual-patchwork-1.0.0.dev12.tar.gz" } ], "1.0.0.dev13": [ { "comment_text": "", "digests": { "md5": "235ded002108399b7733766b2e72b8e8", "sha256": "fc88462f6bcd2a93a4c945e2ccd832645d728f2f97136550735250fa2680f1b6" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev13.tar.gz", "has_sig": false, "md5_digest": "235ded002108399b7733766b2e72b8e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58997, "upload_time": "2017-08-17T16:27:08", "url": "https://files.pythonhosted.org/packages/c9/a7/24ddacda8c6cfe37de48f0c4ef9e12a0f9e51c6fb9882b82fbb60be1f182/factual-patchwork-1.0.0.dev13.tar.gz" } ], "1.0.0.dev14": [ { "comment_text": "", "digests": { "md5": "fc65f35e3aae97fb8adfd84498d49c65", "sha256": "c7b9e4f1f960934a2f14b6bd23b3e387475214aa2fbbe17e757543b74bb66055" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev14.tar.gz", "has_sig": false, "md5_digest": "fc65f35e3aae97fb8adfd84498d49c65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58997, "upload_time": "2017-08-17T16:46:01", "url": "https://files.pythonhosted.org/packages/90/4e/666153ab7f1d6dc7b6eaa46337fd974df5e2b70c88ee5f1c14f277f07f2f/factual-patchwork-1.0.0.dev14.tar.gz" } ], "1.0.0.dev15": [ { "comment_text": "", "digests": { "md5": "756b322c7003ae39e9211bbeb7869c7d", "sha256": "6cb30b11d597fa449825e611b42b3eb5d9d08a8332f2d43db0ed4c0a61d07798" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev15.tar.gz", "has_sig": false, "md5_digest": "756b322c7003ae39e9211bbeb7869c7d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59000, "upload_time": "2017-08-17T16:48:23", "url": "https://files.pythonhosted.org/packages/06/bc/a562f59ac06ced1b48494b9154dd4d0cd59a47360485ae35d33b4fea9001/factual-patchwork-1.0.0.dev15.tar.gz" } ], "1.0.0.dev16": [ { "comment_text": "", "digests": { "md5": "423237d3c4845debfa13fb79d6d5b4a2", "sha256": "68f1faf62f7a13221e5b481e15087b0d122e8922d5eb7f6f2047cdb880861197" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev16.tar.gz", "has_sig": false, "md5_digest": "423237d3c4845debfa13fb79d6d5b4a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59004, "upload_time": "2017-08-17T16:50:22", "url": "https://files.pythonhosted.org/packages/b7/a5/82df02cee766ab77d46b241b4e7d79bd812bfbb46496e36d9f7e8aa24238/factual-patchwork-1.0.0.dev16.tar.gz" } ], "1.0.0.dev17": [ { "comment_text": "", "digests": { "md5": "0d2b0f782dc144c2fc23f190f2fa3b51", "sha256": "ad4c8ead4cd7c3dfa03e6df6b080abfcc12ada8114dab622c84e3f0ed3220b9c" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev17.tar.gz", "has_sig": false, "md5_digest": "0d2b0f782dc144c2fc23f190f2fa3b51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59080, "upload_time": "2017-08-17T17:02:27", "url": "https://files.pythonhosted.org/packages/e7/44/79acbafb95c2477241cca5d1c9b46672737443144333699428c6fdd88180/factual-patchwork-1.0.0.dev17.tar.gz" } ], "1.0.0.dev18": [ { "comment_text": "", "digests": { "md5": "0f51cc072de62e1c98e293aaf5e7f78b", "sha256": "527f705c35314ec632b656b1e013bb2b0ef43adf4556b2b8bb135d06917de8df" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev18.tar.gz", "has_sig": false, "md5_digest": "0f51cc072de62e1c98e293aaf5e7f78b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59073, "upload_time": "2017-08-17T17:04:04", "url": "https://files.pythonhosted.org/packages/c4/fc/571cb4b2825e44c9e6a1dc0b249ea0922197a1e13905fdcc085729be4d07/factual-patchwork-1.0.0.dev18.tar.gz" } ], "1.0.0.dev19": [ { "comment_text": "", "digests": { "md5": "1bc63a8757d30ed493524c72d70d5f8d", "sha256": "2b17a270b4169e16492f15641ee49f019e5fd2cf7742edbd3c656f1c7adea17c" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev19.tar.gz", "has_sig": false, "md5_digest": "1bc63a8757d30ed493524c72d70d5f8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59131, "upload_time": "2017-08-17T17:08:20", "url": "https://files.pythonhosted.org/packages/ff/c2/ec5eb0841ecb2e74b46c575b1d36ee66e07f0c3e470f5b5794aeb84e24b9/factual-patchwork-1.0.0.dev19.tar.gz" } ], "1.0.0.dev2": [ { "comment_text": "", "digests": { "md5": "5d5983726d7229b1a3ca0d93c50a813f", "sha256": "532bbcda242f85217f68b48010bb04e58ab503ec2e546cf30896f137528d0f42" }, "downloads": -1, "filename": "factual_patchwork-1.0.0.dev2-py3-none-any.whl", "has_sig": false, "md5_digest": "5d5983726d7229b1a3ca0d93c50a813f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8731, "upload_time": "2017-08-11T23:11:03", "url": "https://files.pythonhosted.org/packages/36/2c/e1349a534df4e60ec57593e973af44cbe3d56a776482eab8d379ae77b4a7/factual_patchwork-1.0.0.dev2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "50f3770d708f2a4b51bdd7f11493fa26", "sha256": "fcf257947eddad2049ada45d16820b220133fba33ebed7defc937dbad8f3b2f4" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev2.tar.gz", "has_sig": false, "md5_digest": "50f3770d708f2a4b51bdd7f11493fa26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5004, "upload_time": "2017-08-11T23:11:04", "url": "https://files.pythonhosted.org/packages/fe/74/a38c36552d67b136ceb1093d1249651cefa327308c8909b483a2bfbde8a8/factual-patchwork-1.0.0.dev2.tar.gz" } ], "1.0.0.dev20": [ { "comment_text": "", "digests": { "md5": "702d4b3b2ece678285a29730b1ba8c83", "sha256": "2e8a5c5808880330b4db7acb78a5f129959762085423dd2c66ca198f63e9cff7" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev20.tar.gz", "has_sig": false, "md5_digest": "702d4b3b2ece678285a29730b1ba8c83", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59137, "upload_time": "2017-08-17T17:09:44", "url": "https://files.pythonhosted.org/packages/47/f1/eca5abb1c4b17c01ba9d8695a6a734da579b1cd65e6dd4c52868f5696e8f/factual-patchwork-1.0.0.dev20.tar.gz" } ], "1.0.0.dev21": [ { "comment_text": "", "digests": { "md5": "de66b5843d566887987200e756639b9d", "sha256": "8d2fcb747fbd51b1f6b3c36aa416435fdc8514c4d2dbc5a042877e750d3b05b3" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev21.tar.gz", "has_sig": false, "md5_digest": "de66b5843d566887987200e756639b9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59138, "upload_time": "2017-08-17T17:11:35", "url": "https://files.pythonhosted.org/packages/f1/5b/7e662459c5b198625c9c41af7be9faa265fdc5e6e981091726ed6a3d0f2b/factual-patchwork-1.0.0.dev21.tar.gz" } ], "1.0.0.dev22": [ { "comment_text": "", "digests": { "md5": "ec0c6dd33bb3b949a8e60a14e3e68d9a", "sha256": "ff70a6c7582a07be043e3a3c90b66ed567626c0a406ddaa62ceb28225bb71fff" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev22.tar.gz", "has_sig": false, "md5_digest": "ec0c6dd33bb3b949a8e60a14e3e68d9a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59133, "upload_time": "2017-08-17T17:14:39", "url": "https://files.pythonhosted.org/packages/8e/8a/f8076a03826a006e803d8a3928b63e0c247c3a931453f62653a9e1059993/factual-patchwork-1.0.0.dev22.tar.gz" } ], "1.0.0.dev23": [ { "comment_text": "", "digests": { "md5": "7ae8a91efc3a62d5f81ab69ab0293877", "sha256": "61423ccf3a4f36c0fd56697b4e58125b208afdbb77d757fd7f54b3d5303cbb78" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev23.tar.gz", "has_sig": false, "md5_digest": "7ae8a91efc3a62d5f81ab69ab0293877", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59147, "upload_time": "2017-08-17T17:19:19", "url": "https://files.pythonhosted.org/packages/1e/d9/0162ffe7806fc90b49a7fe23cc27f34399dfd38ad96f62dbf59620fa23de/factual-patchwork-1.0.0.dev23.tar.gz" } ], "1.0.0.dev24": [ { "comment_text": "", "digests": { "md5": "10b6c03f2b97291839102253cdff40b7", "sha256": "26a72a74214db3ef08d2a386884185910958f0cbd13c8f6c0dc723522ea68f30" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev24.tar.gz", "has_sig": false, "md5_digest": "10b6c03f2b97291839102253cdff40b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59144, "upload_time": "2017-08-17T17:21:53", "url": "https://files.pythonhosted.org/packages/e9/17/9f9b052751fa8447f5492b31e6b04a97400bb77bfe8a8847eabbaa4257a7/factual-patchwork-1.0.0.dev24.tar.gz" } ], "1.0.0.dev3": [ { "comment_text": "", "digests": { "md5": "75f6be86d157b1e1f9c6a037d140a4d6", "sha256": "1d1c27924f0392f1ecbe4606cd35a08d12dee0c4aac23dadda55ccc280d5bbdd" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev3.tar.gz", "has_sig": false, "md5_digest": "75f6be86d157b1e1f9c6a037d140a4d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56152, "upload_time": "2017-08-16T22:13:14", "url": "https://files.pythonhosted.org/packages/bc/d8/50b5a54d6bca9357bce1c51826d79a527406b88d9dc6bf84d7f64de9f194/factual-patchwork-1.0.0.dev3.tar.gz" } ], "1.0.0.dev4": [ { "comment_text": "", "digests": { "md5": "6b8b4820139bad05bf20ec9a49a300b8", "sha256": "10ab66c695625210c7bb0adff7db0d43f58748b9f0c7c47225de87e24af57542" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev4.tar.gz", "has_sig": false, "md5_digest": "6b8b4820139bad05bf20ec9a49a300b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56175, "upload_time": "2017-08-16T22:17:28", "url": "https://files.pythonhosted.org/packages/a4/c9/58d97769d3e1c3aaebe75b2cf5b790867f265754a3c4d1ce92ff3f396ca5/factual-patchwork-1.0.0.dev4.tar.gz" } ], "1.0.0.dev5": [ { "comment_text": "", "digests": { "md5": "8da4257ab87348e0f2267de0c3319e79", "sha256": "0d19540346e6f41dcd44788eb9e2c1b8345094984c7f53f00407b696e3c0e4e1" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev5.tar.gz", "has_sig": false, "md5_digest": "8da4257ab87348e0f2267de0c3319e79", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56313, "upload_time": "2017-08-16T22:23:51", "url": "https://files.pythonhosted.org/packages/af/2c/93551675972ffa8ce327dc44a3947bb24889801973a70fa7cd5885f27adc/factual-patchwork-1.0.0.dev5.tar.gz" } ], "1.0.0.dev6": [ { "comment_text": "", "digests": { "md5": "9c50d04b0848ce68604ebb73d38f0d61", "sha256": "fb9e3b2d797aebc28397fc4bb9f8b4796d52c91e7b06c88118473a2bbe2fe7c8" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev6.tar.gz", "has_sig": false, "md5_digest": "9c50d04b0848ce68604ebb73d38f0d61", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58818, "upload_time": "2017-08-16T22:32:28", "url": "https://files.pythonhosted.org/packages/6d/83/0a51610afbda0e635d9b88a4340463db58bcb2f35df1972d203cc679344a/factual-patchwork-1.0.0.dev6.tar.gz" } ], "1.0.0.dev7": [ { "comment_text": "", "digests": { "md5": "98ca0d8c811851d2fdb4dffbd92ba70d", "sha256": "d65b4c88e400174430d74074ed3b4d0d9dab88e32e8501fa2e5259e5884adda4" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev7.tar.gz", "has_sig": false, "md5_digest": "98ca0d8c811851d2fdb4dffbd92ba70d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58958, "upload_time": "2017-08-16T22:41:18", "url": "https://files.pythonhosted.org/packages/c9/42/d753d207d75cde010bbac369982a2d55a2f28554ba72c9d1f14a84f7bba9/factual-patchwork-1.0.0.dev7.tar.gz" } ], "1.0.0.dev8": [ { "comment_text": "", "digests": { "md5": "fdd0b7228e71b3049311c47da8a783ab", "sha256": "15a2ca5737084cda379b4ba6ef0e767a40f423e728beaf830043e38a51e75f98" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev8.tar.gz", "has_sig": false, "md5_digest": "fdd0b7228e71b3049311c47da8a783ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58978, "upload_time": "2017-08-16T22:47:23", "url": "https://files.pythonhosted.org/packages/3d/95/8e2e9c998696e493cb28a88996084c48334b186809fabe5c79772140dd05/factual-patchwork-1.0.0.dev8.tar.gz" } ], "1.0.0.dev9": [ { "comment_text": "", "digests": { "md5": "bcbf90ec2d1509f7139eaabb246751b3", "sha256": "c2670ce1957c26d895018fd4667cdc0a39359e77b3e8d8b31aa9ed6728ea77c6" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.dev9.tar.gz", "has_sig": false, "md5_digest": "bcbf90ec2d1509f7139eaabb246751b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58981, "upload_time": "2017-08-16T22:52:11", "url": "https://files.pythonhosted.org/packages/07/87/40d5230c3f26e7cb68ccde325b1ce94f1649079301ef07a95daf95a20bc6/factual-patchwork-1.0.0.dev9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a75e55f60a72d67043f2b1bc53624cd1", "sha256": "6fab638cbbd3b865846c3bc0598d11b91ba9689a8f543db31a669737b7e979ec" }, "downloads": -1, "filename": "factual-patchwork-1.0.0.tar.gz", "has_sig": false, "md5_digest": "a75e55f60a72d67043f2b1bc53624cd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59069, "upload_time": "2017-08-17T17:24:03", "url": "https://files.pythonhosted.org/packages/7c/44/02493c8d845051cb7447fb5f950dcf863aab6a4cab639f205b594eb8f32c/factual-patchwork-1.0.0.tar.gz" } ] }