{ "info": { "author": "Thomas Guettler", "author_email": "info.subx@thomas-guettler.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Information Technology", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6" ], "description": ".. image:: https://travis-ci.org/guettli/subx.svg?branch=master\n :target: https://travis-ci.org/guettli/subx\n \nsubx: Data structure SubprocessResult - for the Python programming language\n===========================================================================\n\n\nhttps://github.com/guettli/subx\n\nSubprocessResult\n================\n\nThis library gives you a data structure called `SubprocessResult`. It combines stdout, stderr and ret (the exit status).\n\nThis is handy if you do \"one shot\" calling of processes.\n\nWhy?\n====\n\nIf subx fails, you get a meaningful exception message that helps you. You see the first bytes of stdout and stderr. This is the main reason\nwhy I wrote this library.\n\nGracefull handling of timeouts. You get a meaningful error message, even if a timeout happens: You see all stdin and stdout which was emitted\nuntil the timeout occured.\n\nPassing in a string as stdin of a subprocess is easy. Just use the kwarg `input`.\n\n\nExamples\n========\n\nThe method `call()` returns an instance of `SubprocessResult`.\n\nresult = subx.call(['date'])\n\nJust replace `subprocess.check_call(cmd)` with `subx.call(cmd)` and you get all you want plus a helpful exception messages.\n\nOr replace `subprocess.check_output(cmd)` with `subx.call(cmd).stdout`.\n\nIf you want to ignore the status code like shell scripts do, and you want to see the head of stdout/stderr you can use this:\n\n`logging.info(subx.call(assert_zero_exit_status=False))`\n\nThis will use repr(result). Which looks like roughly this:\n\n``\n\nMethod subx.call()\n==================\n\nArguments::\n\n call(cmd, input=None, assert_zero_exit_status=True, warn_on_non_zero_exist_status=False, **kwargs)\n\n input: String which gets send to stdin of the subprocess.\n assert_zero_exit_status: raise an exception if exist status is non-zero?\n warn_on_non_zero_exist_status: warn on non zero exit status?\n\n Returns: SubprocessResult instance\n\nClass SubprocessResult\n======================\n\nThe class `SubprocessResult` has the following attributes:\n\n * stdout\n * stderr\n * ret (exit status)\n * cmd\n\nAdditional Features\n===================\n\nIf available the subprocess32 library gets used. This provides the timeout parameter for Python 2.7.\n\n\nNot suited for ...\n==================\n\nThis library is not usefull if you want to read streamed data **from** your subprocess. But the library is usefull, if\nyou want to stream data **to** your subprocess.\n\nInstall\n=======\n\nInstall from `pypi `_::\n\n pip install subx\n\n\n\nsubprocess.check_output() vs subx.call()\n========================================\n\nLook, compare, think and decide what message helps your more.\n\nsubprocess.check_output()::\n\n CalledProcessError: Command '['cat', 'some-file']' returned non-zero exit status 1\n\nsub.call()::\n\n SubprocessError: Command '['cat', 'some-file']' returned non-zero exit status 1:\n stdout='' stderr='cat: some-file: No such file or directory'\n\n\n... especially if the code fails in a production environment where reproducing the error is not easy,\nsubx can call help you to spot the source of the failure.\n\nDevelopment Install on Python2\n==============================\n\nInstall subx for development on Python2::\n\n virtualenv subx-env\n cd subx-env\n . ./bin/activate\n pip install -e git+https://github.com/guettli/subx.git#egg=subx\n\nDevelopment Install on Python3\n==============================\n\nInstall subx for development on Python3::\n\n python3 -m venv subx-py3env\n cd subx-py3env\n . ./bin/activate\n pip install --upgrade pip\n pip install -e git+https://github.com/guettli/subx.git#egg=subx\n\nDevelopment Testing\n===================\n\nTesting::\n\n pip install -r src/subx/requirements.txt\n cd src/subx\n pytest # all test ok?\n pyCharm src/subx/...\n pytest # all test still ok?\n .... I am waiting for your pull request :-)", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/guettli/subx/", "keywords": "", "license": "Apache Software License 2.0", "maintainer": "", "maintainer_email": "", "name": "subx", "package_url": "https://pypi.org/project/subx/", "platform": "", "project_url": "https://pypi.org/project/subx/", "project_urls": { "Homepage": "https://github.com/guettli/subx/" }, "release_url": "https://pypi.org/project/subx/2019.35.0/", "requires_dist": null, "requires_python": ">=2.7", "summary": "subx: Datastructure SubprocessResult", "version": "2019.35.0" }, "last_serial": 5906482, "releases": { "2017.1.0": [ { "comment_text": "", "digests": { "md5": "74e701446561df120109e833dad01201", "sha256": "674f35c9b30274e78f63cd1ae2d3e7a8a2493ff36f334e0044dc564b3bb1ed7a" }, "downloads": -1, "filename": "subx-2017.1.0.tar.gz", "has_sig": false, "md5_digest": "74e701446561df120109e833dad01201", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2848, "upload_time": "2017-11-02T12:34:28", "url": "https://files.pythonhosted.org/packages/42/4f/4f98163c5ca6b824d870ee57af0b46b984c1086838fc909def81cb0ac840/subx-2017.1.0.tar.gz" } ], "2017.10.0": [ { "comment_text": "", "digests": { "md5": "a733103e50ca9a3e78b55908b86b72d9", "sha256": "8fb114e36220c0a996e93cd5d90ac930846d7d9e9a57ffd3ae31241e83c58b04" }, "downloads": -1, "filename": "subx-2017.10.0.tar.gz", "has_sig": false, "md5_digest": "a733103e50ca9a3e78b55908b86b72d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4004, "upload_time": "2017-11-15T13:54:30", "url": "https://files.pythonhosted.org/packages/26/cb/a922ab9a855e991fb201b8cbef9e90d5dcf44d0d545314cffbffc7009c56/subx-2017.10.0.tar.gz" } ], "2017.11.0": [ { "comment_text": "", "digests": { "md5": "6136d000ba3855062868c60be17015c5", "sha256": "98d7c8559760eb10e4f7f8656862ec5d34832c279a289e0807841fba180c0fdd" }, "downloads": -1, "filename": "subx-2017.11.0.tar.gz", "has_sig": false, "md5_digest": "6136d000ba3855062868c60be17015c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4095, "upload_time": "2017-12-20T13:59:02", "url": "https://files.pythonhosted.org/packages/d4/75/36424175be05897cf50389d81aed750b01169f11cfd082664091bb6a1b7b/subx-2017.11.0.tar.gz" } ], "2017.12.0": [ { "comment_text": "", "digests": { "md5": "b65f55071636a0347eec48c681dbc1e6", "sha256": "7e503fd789b3a781a58fc0caa85668b32bb0f91e166ad5e3df44e0c6392d4148" }, "downloads": -1, "filename": "subx-2017.12.0.tar.gz", "has_sig": false, "md5_digest": "b65f55071636a0347eec48c681dbc1e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4094, "upload_time": "2017-12-20T14:15:30", "url": "https://files.pythonhosted.org/packages/e9/c6/6e3d7d1e66d96e7e5ddbde5b01027e97ba6d03102fe4677b7d20bcf72ba1/subx-2017.12.0.tar.gz" } ], "2017.13.0": [ { "comment_text": "", "digests": { "md5": "3035d05a1ad493a9d562f7c8a0c6a79d", "sha256": "0c0b6cf72fa6f1e4541eaacb33874c830a680d127cacf9c63ccea8335ac32a83" }, "downloads": -1, "filename": "subx-2017.13.0.tar.gz", "has_sig": false, "md5_digest": "3035d05a1ad493a9d562f7c8a0c6a79d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4130, "upload_time": "2017-12-21T10:31:57", "url": "https://files.pythonhosted.org/packages/5a/49/dab4418bbca49dc5dbb69730403c6dd76f172e916c65223f10d54f179865/subx-2017.13.0.tar.gz" } ], "2017.14.0": [ { "comment_text": "", "digests": { "md5": "2200ad441ba864a687c875a2d3a9430f", "sha256": "f9f3523dfcb3dd65d8fc5d1db540250ee27af64d40df901617478f4ca592e1a1" }, "downloads": -1, "filename": "subx-2017.14.0.tar.gz", "has_sig": false, "md5_digest": "2200ad441ba864a687c875a2d3a9430f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4129, "upload_time": "2017-12-22T11:25:14", "url": "https://files.pythonhosted.org/packages/9a/ac/79a6d86e278e50a6990da00d377cc31cea7202dfcd7d7c1f99bdffdb4e4f/subx-2017.14.0.tar.gz" } ], "2017.15.0": [ { "comment_text": "", "digests": { "md5": "df387f62c3f1ca365184ba9939d061e9", "sha256": "576c11b6a13dbcd7a6ffe3e8a7c03c6c078770c6720a4b4e8ac230f00fdef450" }, "downloads": -1, "filename": "subx-2017.15.0.tar.gz", "has_sig": false, "md5_digest": "df387f62c3f1ca365184ba9939d061e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4127, "upload_time": "2018-03-01T11:28:20", "url": "https://files.pythonhosted.org/packages/37/b9/a8b749fca356591377be5568146c6ef06092bd3fd23962f351a2891c92d6/subx-2017.15.0.tar.gz" } ], "2017.16.0": [ { "comment_text": "", "digests": { "md5": "fa0d393472ab2d3556e63ade33d2e169", "sha256": "e1abfeec1a04444f21e84eef0f625da70dcb64be477f7650d3515ded5b63e1c4" }, "downloads": -1, "filename": "subx-2017.16.0.tar.gz", "has_sig": false, "md5_digest": "fa0d393472ab2d3556e63ade33d2e169", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4139, "upload_time": "2018-03-01T11:34:40", "url": "https://files.pythonhosted.org/packages/bb/34/0a340c4dec8dc631a12e66dccf9e5a9a2c7e0308b7b4baffc2eb6d354899/subx-2017.16.0.tar.gz" } ], "2017.2.0": [ { "comment_text": "", "digests": { "md5": "b684a23362016c169d4b31f4d59e03ca", "sha256": "2e04cc63aa8462ca4c9d5c940df45dbc6ac4af5a4844851022a7f5e0a55ca550" }, "downloads": -1, "filename": "subx-2017.2.0.tar.gz", "has_sig": false, "md5_digest": "b684a23362016c169d4b31f4d59e03ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2828, "upload_time": "2017-11-02T12:32:23", "url": "https://files.pythonhosted.org/packages/87/a8/4be7bdeecec65bed988f2a8191ec5b4f6b5f5ce651d5b973dedad50784e9/subx-2017.2.0.tar.gz" } ], "2017.20.0": [ { "comment_text": "", "digests": { "md5": "3c4791fad12f2205f577174195262c63", "sha256": "a009396054332fc2ab2033d769b2659a231eb1373a5b153918d4c90396588e46" }, "downloads": -1, "filename": "subx-2017.20.0.tar.gz", "has_sig": false, "md5_digest": "3c4791fad12f2205f577174195262c63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4291, "upload_time": "2018-08-13T13:30:56", "url": "https://files.pythonhosted.org/packages/6a/3e/ec55fca03799c7e803c7c0ab9adff427a5a957b31e89c79a1253c5e7b27e/subx-2017.20.0.tar.gz" } ], "2017.21.0": [ { "comment_text": "", "digests": { "md5": "a1eee4f9ba1b1b375a0a4ae86597203a", "sha256": "7ccb7a940ef86e4d921b87a3cea5615e01d4e6585fd7c89d96449907c4eba403" }, "downloads": -1, "filename": "subx-2017.21.0.tar.gz", "has_sig": false, "md5_digest": "a1eee4f9ba1b1b375a0a4ae86597203a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4315, "upload_time": "2018-08-20T12:13:35", "url": "https://files.pythonhosted.org/packages/b6/51/56d561150f04a9f017810b6807fddfb4d1c899c840be8484f9e91ba7ab33/subx-2017.21.0.tar.gz" } ], "2017.22.0": [ { "comment_text": "", "digests": { "md5": "94cefa49cad5b553c7407e80adfe4303", "sha256": "794236654dab75fe10f70ddaff04a73464d669875079d33bf326abb73df6643a" }, "downloads": -1, "filename": "subx-2017.22.0.tar.gz", "has_sig": false, "md5_digest": "94cefa49cad5b553c7407e80adfe4303", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4467, "upload_time": "2018-08-24T11:11:00", "url": "https://files.pythonhosted.org/packages/5b/99/83b6337bd73bfd0828e72ac8e3796d54103dcdae8b8c2148cb3e450e70c0/subx-2017.22.0.tar.gz" } ], "2017.23.0": [ { "comment_text": "", "digests": { "md5": "33a153b3317bc96ad0831b1a6a2c7f8b", "sha256": "03998aee2b87a1b6011bd82c110420de2b200836ce826e8c77d8c1b0d34989b5" }, "downloads": -1, "filename": "subx-2017.23.0.tar.gz", "has_sig": false, "md5_digest": "33a153b3317bc96ad0831b1a6a2c7f8b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4479, "upload_time": "2018-08-28T08:39:18", "url": "https://files.pythonhosted.org/packages/de/58/ed9ce0fdb25f309bd23bea7ec86ace29eb69be0b96cb4cf8dde883c1f4eb/subx-2017.23.0.tar.gz" } ], "2017.24.0": [ { "comment_text": "", "digests": { "md5": "39847d625edc0fba1cba921a792cbe67", "sha256": "9028377a6e5e602bb32c079e01b4441f2a6fb0f8fcce78f1c4f8b60b97947709" }, "downloads": -1, "filename": "subx-2017.24.0.tar.gz", "has_sig": false, "md5_digest": "39847d625edc0fba1cba921a792cbe67", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4784, "upload_time": "2018-09-26T14:10:42", "url": "https://files.pythonhosted.org/packages/12/13/ae531dc2d055edcb58930e70a6682aa8f4e43ba2dfaa787fb33cb225bad6/subx-2017.24.0.tar.gz" } ], "2017.25.0": [ { "comment_text": "", "digests": { "md5": "4e191a5096bc5558d0056c792102f3a9", "sha256": "fafc52e6f9a2da1bf8e9a7d1a7a07b2278b31e0453e4fd7666a3f3207e2f75d1" }, "downloads": -1, "filename": "subx-2017.25.0.tar.gz", "has_sig": false, "md5_digest": "4e191a5096bc5558d0056c792102f3a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4906, "upload_time": "2019-03-06T08:25:04", "url": "https://files.pythonhosted.org/packages/d7/23/eb6241b40e22aa66bc94587b25cdea00756eaa522cbfca3fc4d89850a847/subx-2017.25.0.tar.gz" } ], "2017.26.0": [ { "comment_text": "", "digests": { "md5": "758d6fd82fae791ca8753ead52cabf45", "sha256": "1714b1aa338d13ad9f3ef959629f4bd4a44e0e428a799f85cdb2eb954317a026" }, "downloads": -1, "filename": "subx-2017.26.0.tar.gz", "has_sig": false, "md5_digest": "758d6fd82fae791ca8753ead52cabf45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4921, "upload_time": "2019-03-29T16:51:25", "url": "https://files.pythonhosted.org/packages/07/d6/336e86dc75e8c24ef0261eb93d72a2c09b13e1b975f4ba184c1e1f195a2d/subx-2017.26.0.tar.gz" } ], "2017.27.0": [ { "comment_text": "", "digests": { "md5": "cc446ebee4033fe5a008ce738369430a", "sha256": "7e33765c9ce9b607755ef335cabac139e20429870c0837be326a9f02064f6b6e" }, "downloads": -1, "filename": "subx-2017.27.0.tar.gz", "has_sig": false, "md5_digest": "cc446ebee4033fe5a008ce738369430a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4970, "upload_time": "2019-04-01T15:12:22", "url": "https://files.pythonhosted.org/packages/cb/fc/82de381ba979ae7f2c8d45bdab48954b02f1b890d1ff7e4c7834216d6a5c/subx-2017.27.0.tar.gz" } ], "2017.28.0": [ { "comment_text": "", "digests": { "md5": "e600489f4ebde7457e14d051816485da", "sha256": "946d1c1097bad9633f764e0417bf673b6add6cf220992cdf8f21d7ca8e5c5246" }, "downloads": -1, "filename": "subx-2017.28.0.tar.gz", "has_sig": false, "md5_digest": "e600489f4ebde7457e14d051816485da", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 4959, "upload_time": "2019-04-04T09:14:39", "url": "https://files.pythonhosted.org/packages/ca/df/27d54bd04ab435ced8ebb67bcaa3df190d013c778db71bb0e617e20a8cfd/subx-2017.28.0.tar.gz" } ], "2017.29.0": [ { "comment_text": "", "digests": { "md5": "2bce066554306fe40797534af9ae7827", "sha256": "18f83d172ffcb1370f11ebd25c748fe663f8f1a8f57d22553cdd3e44b3114320" }, "downloads": -1, "filename": "subx-2017.29.0.tar.gz", "has_sig": false, "md5_digest": "2bce066554306fe40797534af9ae7827", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 4963, "upload_time": "2019-04-04T09:43:15", "url": "https://files.pythonhosted.org/packages/51/37/d0262927b30172b0e1f1304acbb02733ed75f91514ef2535bfba10d3da2a/subx-2017.29.0.tar.gz" } ], "2017.3.0": [ { "comment_text": "", "digests": { "md5": "fc59740990e8d2c14679e06c359695e0", "sha256": "eca90ec2d08f70a05523e40e1a423f97d099f39e5402d1ba5c3dfe8529ed90de" }, "downloads": -1, "filename": "subx-2017.3.0.tar.gz", "has_sig": false, "md5_digest": "fc59740990e8d2c14679e06c359695e0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3594, "upload_time": "2017-11-02T12:54:35", "url": "https://files.pythonhosted.org/packages/d4/34/b369a5ff6fcfe5097a3427aa17d8c731c987102d372c29f77e570dc55146/subx-2017.3.0.tar.gz" } ], "2017.30.0": [ { "comment_text": "", "digests": { "md5": "17e4dcf67a3b3f327ff85c6908781bb8", "sha256": "311e3471a499d437f87f03dee44e32247798fd4e82416d93f16b5246e7415611" }, "downloads": -1, "filename": "subx-2017.30.0.tar.gz", "has_sig": false, "md5_digest": "17e4dcf67a3b3f327ff85c6908781bb8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 5031, "upload_time": "2019-04-05T12:45:37", "url": "https://files.pythonhosted.org/packages/7a/01/52b67509bcb4ebb20cc2149facea593b09a3bdec16e20f71baeb2ff3cd7e/subx-2017.30.0.tar.gz" } ], "2017.31.0": [ { "comment_text": "", "digests": { "md5": "47b33412da2bbaa8ad9290152825a3e4", "sha256": "e9c5b856afb05a317982d42565a0433a09205c6d5b4b994231cc2a461ddc7ee4" }, "downloads": -1, "filename": "subx-2017.31.0.tar.gz", "has_sig": false, "md5_digest": "47b33412da2bbaa8ad9290152825a3e4", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 5036, "upload_time": "2019-04-05T13:10:40", "url": "https://files.pythonhosted.org/packages/f1/2a/244adc1c9fc5ae7933326fc6d76176343e12981a8801ce54401ff109e00b/subx-2017.31.0.tar.gz" } ], "2017.32.0": [ { "comment_text": "", "digests": { "md5": "9897267168f0f8206a34a45e34fb9ed2", "sha256": "3df1bd5f81cd3bb5c5198ada6ed9fac3e7fdbe09e47a3a0f51f34b03a43b2f4f" }, "downloads": -1, "filename": "subx-2017.32.0.tar.gz", "has_sig": false, "md5_digest": "9897267168f0f8206a34a45e34fb9ed2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 5033, "upload_time": "2019-04-05T13:15:36", "url": "https://files.pythonhosted.org/packages/ac/2b/a3591257e96b72825ad65c79128c1fc93c7ddc36a77c353625f40298b579/subx-2017.32.0.tar.gz" } ], "2017.4.0": [ { "comment_text": "", "digests": { "md5": "2fbd2c7b52b755755ed52f6e7f97531e", "sha256": "926e6afc5a7ac9f585c253c461ef4454d1da5bbab9600b224143aa874dcaded0" }, "downloads": -1, "filename": "subx-2017.4.0.tar.gz", "has_sig": false, "md5_digest": "2fbd2c7b52b755755ed52f6e7f97531e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3590, "upload_time": "2017-11-02T14:41:11", "url": "https://files.pythonhosted.org/packages/e4/91/289e1910976ce1721ba8669474ccd22d6f796dbde225efce0448b0ea4c34/subx-2017.4.0.tar.gz" } ], "2017.5.0": [ { "comment_text": "", "digests": { "md5": "340044ccf74ecd234c3c3c4de113ff13", "sha256": "ce7226df9395236ec02f1d6d657e47bb1b0744ade643f766306d53c6805058db" }, "downloads": -1, "filename": "subx-2017.5.0.tar.gz", "has_sig": false, "md5_digest": "340044ccf74ecd234c3c3c4de113ff13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3774, "upload_time": "2017-11-02T16:15:00", "url": "https://files.pythonhosted.org/packages/5d/fa/c00f7d578850198ac60aedbc7969acd873ddaf8dfeef1d866e07629bef5f/subx-2017.5.0.tar.gz" } ], "2017.6.0": [ { "comment_text": "", "digests": { "md5": "beed4bb6021ceb742478f38a78318f8e", "sha256": "80ecff31076f286468b528703343ed489fd65171bd311bc6eb73110f3fc4e9fc" }, "downloads": -1, "filename": "subx-2017.6.0.tar.gz", "has_sig": false, "md5_digest": "beed4bb6021ceb742478f38a78318f8e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3903, "upload_time": "2017-11-03T14:12:41", "url": "https://files.pythonhosted.org/packages/8e/29/154a4abcd44923981100060e15e8689c498d7f3efcb37fd325a39b313de7/subx-2017.6.0.tar.gz" } ], "2017.7.0": [ { "comment_text": "", "digests": { "md5": "3d3a38fb9296815b157233b1c1cb4815", "sha256": "759cf3770e4ed9d76609a231c9190d2a86f8b8fe11e7966b8ced2e939e27d506" }, "downloads": -1, "filename": "subx-2017.7.0.tar.gz", "has_sig": false, "md5_digest": "3d3a38fb9296815b157233b1c1cb4815", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3947, "upload_time": "2017-11-03T15:21:00", "url": "https://files.pythonhosted.org/packages/05/c2/8d5d6108d7a3eecb14dbadf08c3c369d04e46515f69930afeea1e958c7e2/subx-2017.7.0.tar.gz" } ], "2017.8.0": [ { "comment_text": "", "digests": { "md5": "820403fce5aba2a57a6a0351af990f45", "sha256": "0fd5ed1adb5238fb9a33c04f4c8a462b3bbdb1e939a97119704cb903f863abbc" }, "downloads": -1, "filename": "subx-2017.8.0.tar.gz", "has_sig": false, "md5_digest": "820403fce5aba2a57a6a0351af990f45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3951, "upload_time": "2017-11-06T11:16:00", "url": "https://files.pythonhosted.org/packages/c2/cc/12ea62bfedfcf03565f012aaed55ed436f3f37ba80c12d147352175e6b12/subx-2017.8.0.tar.gz" } ], "2017.9.0": [ { "comment_text": "", "digests": { "md5": "eec228ece835486350a6e5382c2b0a8c", "sha256": "33cf2c68c884885d8766d4dc3429ff4537553fe3fc9f67d1a629ef951b314f9d" }, "downloads": -1, "filename": "subx-2017.9.0.tar.gz", "has_sig": false, "md5_digest": "eec228ece835486350a6e5382c2b0a8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4007, "upload_time": "2017-11-15T11:34:40", "url": "https://files.pythonhosted.org/packages/9f/28/273fc348684429e24c0a92d00618a5ce5f5e62e69b7e1660c1eb04b97300/subx-2017.9.0.tar.gz" } ], "2019.33.0": [ { "comment_text": "", "digests": { "md5": "218708f9c706ad2ef2727dd05194a99a", "sha256": "3621233987a0376e8b3ebb90b60bd3030e0bdf9205d1e85a279e93ab8b438aea" }, "downloads": -1, "filename": "subx-2019.33.0.tar.gz", "has_sig": false, "md5_digest": "218708f9c706ad2ef2727dd05194a99a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 5033, "upload_time": "2019-04-05T13:19:54", "url": "https://files.pythonhosted.org/packages/94/cb/74eeea2794d77aac0b986030f3aa283929e909534f9d7cbd7c063b066423/subx-2019.33.0.tar.gz" } ], "2019.34.0": [ { "comment_text": "", "digests": { "md5": "904d6dbe4f36bbdcb51933c6b4cbb663", "sha256": "2bde197964aff0710e7cfb615e10a6411b68e846470b16b31e1fef2d741d1ee3" }, "downloads": -1, "filename": "subx-2019.34.0.tar.gz", "has_sig": false, "md5_digest": "904d6dbe4f36bbdcb51933c6b4cbb663", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 4943, "upload_time": "2019-09-06T08:10:10", "url": "https://files.pythonhosted.org/packages/1c/25/cb1c306a58c1584113d613a527ebe2cb4288e0ff4dbf2a7d15b6b38f2b91/subx-2019.34.0.tar.gz" } ], "2019.35.0": [ { "comment_text": "", "digests": { "md5": "cd4a28aae2b0a3659bcc4e01b641f659", "sha256": "cf88f024ff359bca2bf82a0f7630517f4872caf357c11be6cf8cf3f3e156445a" }, "downloads": -1, "filename": "subx-2019.35.0.tar.gz", "has_sig": false, "md5_digest": "cd4a28aae2b0a3659bcc4e01b641f659", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 4963, "upload_time": "2019-09-30T11:03:16", "url": "https://files.pythonhosted.org/packages/84/e6/9a6f7b112947ce23b968f77a34acf7c604e667bd44bed927c66aeb31df3b/subx-2019.35.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cd4a28aae2b0a3659bcc4e01b641f659", "sha256": "cf88f024ff359bca2bf82a0f7630517f4872caf357c11be6cf8cf3f3e156445a" }, "downloads": -1, "filename": "subx-2019.35.0.tar.gz", "has_sig": false, "md5_digest": "cd4a28aae2b0a3659bcc4e01b641f659", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 4963, "upload_time": "2019-09-30T11:03:16", "url": "https://files.pythonhosted.org/packages/84/e6/9a6f7b112947ce23b968f77a34acf7c604e667bd44bed927c66aeb31df3b/subx-2019.35.0.tar.gz" } ] }