{ "info": { "author": "Jason R. Coombs", "author_email": "jaraco@jaraco.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only" ], "description": ".. image:: https://img.shields.io/pypi/v/portend.svg\n :target: `PyPI link`_\n\n.. image:: https://img.shields.io/pypi/pyversions/portend.svg\n :target: `PyPI link`_\n\n.. _PyPI link: https://pypi.org/project/portend\n\n.. image:: https://github.com/jaraco/portend/workflows/tests/badge.svg\n :target: https://github.com/jaraco/portend/actions?query=workflow%3A%22tests%22\n :alt: tests\n\n.. image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/psf/black\n :alt: Code style: Black\n\n.. image:: https://readthedocs.org/projects/portend/badge/?version=latest\n :target: https://portend.readthedocs.io/en/latest/?badge=latest\n\n.. image:: https://img.shields.io/badge/skeleton-2021-informational\n :target: https://blog.jaraco.com/skeleton\n\npor\u00b7tend\np\u00f4r\u02c8tend/\nverb\n\n be a sign or warning that (something, especially something momentous or calamitous) is likely to happen.\n\nUsage\n=====\n\nUse portend to monitor TCP ports for bound or unbound states.\n\nFor example, to wait for a port to be occupied, timing out after 3 seconds::\n\n portend.occupied('www.google.com', 80, timeout=3)\n\nOr to wait for a port to be free, timing out after 5 seconds::\n\n portend.free('::1', 80, timeout=5)\n\nThe portend may also be executed directly. If the function succeeds, it\nreturns nothing and exits with a status of 0. If it fails, it prints a\nmessage and exits with a status of 1. For example::\n\n python -m portend localhost:31923 free\n (exits immediately)\n\n python -m portend -t 1 localhost:31923 occupied\n (one second passes)\n Port 31923 not bound on localhost.\n\nPortend also exposes a ``find_available_local_port`` for identifying\na suitable port for binding locally::\n\n port = portend.find_available_local_port()\n print(port, \"is available for binding\")\n\nPortend additionally exposes the lower-level port checking functionality\nin the ``Checker`` class, which currently exposes only one public\nmethod, ``assert_free``::\n\n portend.Checker().assert_free('localhost', 31923)\n\nIf assert_free is passed a host/port combination that is occupied by\na bound listener (i.e. a TCP connection is established to that host/port),\nassert_free will raise a ``PortNotFree`` exception.\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/jaraco/portend", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "portend", "package_url": "https://pypi.org/project/portend/", "platform": "", "project_url": "https://pypi.org/project/portend/", "project_urls": { "Homepage": "https://github.com/jaraco/portend" }, "release_url": "https://pypi.org/project/portend/3.1.0/", "requires_dist": [ "tempora (>=1.8)", "sphinx ; extra == 'docs'", "jaraco.packaging (>=8.2) ; extra == 'docs'", "rst.linker (>=1.9) ; extra == 'docs'", "pytest (>=6) ; extra == 'testing'", "pytest-checkdocs (>=2.4) ; extra == 'testing'", "pytest-flake8 ; extra == 'testing'", "pytest-cov ; extra == 'testing'", "pytest-enabler (>=1.0.1) ; extra == 'testing'", "pytest-black (>=0.3.7) ; (platform_python_implementation != \"PyPy\") and extra == 'testing'", "pytest-mypy ; (platform_python_implementation != \"PyPy\") and extra == 'testing'" ], "requires_python": ">=3.7", "summary": "TCP port monitoring and discovery", "version": "3.1.0", "yanked": false, "yanked_reason": null }, "last_serial": 12118644, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "8573bec575564094f3d8e1137ba0f642", "sha256": "11e416cb92fa27fe268bffab9649a727fabbb1c32846473859e3bca84f9ae26f" }, "downloads": -1, "filename": "portend-0.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8573bec575564094f3d8e1137ba0f642", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5010, "upload_time": "2018-12-05T18:35:04", "upload_time_iso_8601": "2018-12-05T18:35:04.198959Z", "url": "https://files.pythonhosted.org/packages/30/f3/26e5a111d2c90b381501113c4f5e4aac2cb66d22d8fbcec3ff53fed7df01/portend-0.0.0-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d45efa49956a132d524f1a4904c174c0", "sha256": "21d21174c16451fe74f083b15c09fc8f408f5e45b5dd7720e5b69a3dec7b78a4" }, "downloads": -1, "filename": "portend-0.0.0.tar.gz", "has_sig": false, "md5_digest": "d45efa49956a132d524f1a4904c174c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4162, "upload_time": "2018-12-05T18:35:13", "upload_time_iso_8601": "2018-12-05T18:35:13.163913Z", "url": "https://files.pythonhosted.org/packages/9e/d6/6406b7ebb6281deee2cef67d09982fe0b07aa1663b7710d5304cdf7dc87b/portend-0.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "1.0": [ { "comment_text": "", "digests": { "md5": "f2fb113e2b66148314ee83ba444a6967", "sha256": "448d218a9296173331cc000a6085ef3df17e4897f3e6a78d183aa438e56730e2" }, "downloads": -1, "filename": "portend-1.0.zip", "has_sig": false, "md5_digest": "f2fb113e2b66148314ee83ba444a6967", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5239, "upload_time": "2014-07-13T15:55:18", "upload_time_iso_8601": "2014-07-13T15:55:18.025271Z", "url": "https://files.pythonhosted.org/packages/8c/61/bbbc3bc61dc7ad04483036d0bbb9fc7e5bbca804d104ad6f06232aa707ee/portend-1.0.zip", "yanked": false, "yanked_reason": null } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "b499f50036b177bebd7092aa7946e37c", "sha256": "d9d02877d7278118f1e5ca4033ae3569de18d37b757652d764abf3cd09d65d56" }, "downloads": -1, "filename": "portend-1.0.1.zip", "has_sig": false, "md5_digest": "b499f50036b177bebd7092aa7946e37c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5335, "upload_time": "2014-07-13T17:57:51", "upload_time_iso_8601": "2014-07-13T17:57:51.543734Z", "url": "https://files.pythonhosted.org/packages/d9/9d/25ad0d064c6397a5c9342f0a1aef4c51109b26fc976b65c6ea91efe329a5/portend-1.0.1.zip", "yanked": false, "yanked_reason": null } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "31a8dbb5ff91304f2c0e0c2321c66c9c", "sha256": "30c65eb4ab6f00ffdf6f3cb831f5aaf89f1203b68729fbb4c4db91146cee971d" }, "downloads": -1, "filename": "portend-1.0.2.zip", "has_sig": false, "md5_digest": "31a8dbb5ff91304f2c0e0c2321c66c9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5378, "upload_time": "2014-07-14T15:45:55", "upload_time_iso_8601": "2014-07-14T15:45:55.517239Z", "url": "https://files.pythonhosted.org/packages/33/c9/12e6cc7ff2dcc19bdfd163cc1b1bf08cfd568c8aa895017e92a4f4e00965/portend-1.0.2.zip", "yanked": false, "yanked_reason": null } ], "1.1": [ { "comment_text": "", "digests": { "md5": "26c468ad322450ef15ef720bc2699cf2", "sha256": "a06c608e6f9928c20571ed917284add1493ca0ad86a99e1779fa2fcfc71c0903" }, "downloads": -1, "filename": "portend-1.1.zip", "has_sig": false, "md5_digest": "26c468ad322450ef15ef720bc2699cf2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6481, "upload_time": "2014-08-06T22:27:21", "upload_time_iso_8601": "2014-08-06T22:27:21.042193Z", "url": "https://files.pythonhosted.org/packages/0d/22/6450557f3e7099b69bdb45f4a43a1d2ebe0e02dbb764661ef649673ffbba/portend-1.1.zip", "yanked": false, "yanked_reason": null } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "aedcf8d7e97818b8c051fc2e33797bd4", "sha256": "dd54a0f8427bd0788b6607e3cc310e9d6b610e9bdb1de462b79c3b780deb5feb" }, "downloads": -1, "filename": "portend-1.1.1.zip", "has_sig": false, "md5_digest": "aedcf8d7e97818b8c051fc2e33797bd4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6579, "upload_time": "2014-08-06T22:36:17", "upload_time_iso_8601": "2014-08-06T22:36:17.886231Z", "url": "https://files.pythonhosted.org/packages/04/59/76b21605d5d03435524202467a2fcc29bc46456f470095720b5475aa0982/portend-1.1.1.zip", "yanked": false, "yanked_reason": null } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "1f17d2a702ec39d31b0844bc404c63c2", "sha256": "1bd9180633aed438f433e9ed0be739b27ec85f15d551ea10816dcfd7a26cdb11" }, "downloads": -1, "filename": "portend-1.1.3.zip", "has_sig": false, "md5_digest": "1f17d2a702ec39d31b0844bc404c63c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6636, "upload_time": "2014-08-12T02:06:17", "upload_time_iso_8601": "2014-08-12T02:06:17.617603Z", "url": "https://files.pythonhosted.org/packages/5b/99/cd6353ab17036b698401a5ac3417493b8b871fbdc135f6e2a81418dbf8f7/portend-1.1.3.zip", "yanked": false, "yanked_reason": null } ], "1.2": [ { "comment_text": "", "digests": { "md5": "0229c171dd1abe1e673ce2764151461f", "sha256": "bf78fd954d233b692fa0fe4d662ed0fd3c52cefa58d0170290c7e766c696f56f" }, "downloads": -1, "filename": "portend-1.2.zip", "has_sig": false, "md5_digest": "0229c171dd1abe1e673ce2764151461f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6944, "upload_time": "2015-02-23T00:44:58", "upload_time_iso_8601": "2015-02-23T00:44:58.466316Z", "url": "https://files.pythonhosted.org/packages/e1/a8/f19e4097f98c0ccc54e0fa98a15911610b45aac85dc45ae27d28a40c75c6/portend-1.2.zip", "yanked": false, "yanked_reason": null } ], "1.3": [ { "comment_text": "", "digests": { "md5": "6468d37d197a902ac4f84a43edcb68b8", "sha256": "07e24b9db49240b5b78eebc2d6033570f7741ed512330c586b870c8c51b4e7e0" }, "downloads": -1, "filename": "portend-1.3.zip", "has_sig": false, "md5_digest": "6468d37d197a902ac4f84a43edcb68b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7405, "upload_time": "2015-02-27T19:48:56", "upload_time_iso_8601": "2015-02-27T19:48:56.287049Z", "url": "https://files.pythonhosted.org/packages/7f/dd/0208d48d3b1f5afb3d9f60ba82902fb9ccdd71dab0e2211c270cedbefa90/portend-1.3.zip", "yanked": false, "yanked_reason": null } ], "1.4": [ { "comment_text": "", "digests": { "md5": "859c94f07d04f1805e4a84e3b0c050d1", "sha256": "ae06407f3df3aec6fa444c9761d29bbe4462f1aaddf8891fd4b0c1e069cd0668" }, "downloads": -1, "filename": "portend-1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "859c94f07d04f1805e4a84e3b0c050d1", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 4915, "upload_time": "2016-03-11T02:50:33", "upload_time_iso_8601": "2016-03-11T02:50:33.864924Z", "url": "https://files.pythonhosted.org/packages/ba/2f/7c2f95443df75dbe97594621833217bbfeed487bc00ea8dfbf26d7e76a20/portend-1.4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "2ae50d5f73871462cb6162402deee058", "sha256": "885818771ba01f260a0f4f3cec098cd6af348175092d23f948b08e042cf7cbe3" }, "downloads": -1, "filename": "portend-1.4.tar.gz", "has_sig": false, "md5_digest": "2ae50d5f73871462cb6162402deee058", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4995, "upload_time": "2016-03-11T02:50:14", "upload_time_iso_8601": "2016-03-11T02:50:14.899079Z", "url": "https://files.pythonhosted.org/packages/55/af/cdd5e709dfb3ece4068875320327dbdf7ab8b3d296302e49540b28185ebb/portend-1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "2a8453937fa2bd77091b0373c93c7444", "sha256": "295f4e8a9781e53f6df3edf8a932fa64b75a953ea1ee10a54f1239924c719538" }, "downloads": -1, "filename": "portend-1.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a8453937fa2bd77091b0373c93c7444", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 5083, "upload_time": "2016-07-24T02:24:09", "upload_time_iso_8601": "2016-07-24T02:24:09.302144Z", "url": "https://files.pythonhosted.org/packages/5f/29/498557dfcf002a4e321974aae1d2813b041f3a584a2e827d810b5811a926/portend-1.5.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "47e061ac908cedc218633bde6b48984a", "sha256": "45c2d12c0db82fb8bd3b0c82a16cc565540edefed30c540387041b3bfda0b3c2" }, "downloads": -1, "filename": "portend-1.5.1.tar.gz", "has_sig": false, "md5_digest": "47e061ac908cedc218633bde6b48984a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6098, "upload_time": "2016-07-24T02:24:06", "upload_time_iso_8601": "2016-07-24T02:24:06.917668Z", "url": "https://files.pythonhosted.org/packages/fa/04/7eaccbb3f64df4616136986f3104edcd8228a9f48b8b0f3d6112251999d6/portend-1.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6": [ { "comment_text": "", "digests": { "md5": "c23f25ae2f1753b13c12b9b83d608977", "sha256": "c9c84a6aa0915be511dbee1dbf163d4997ee75d075c39fe57163a2fae7f5dd39" }, "downloads": -1, "filename": "portend-1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c23f25ae2f1753b13c12b9b83d608977", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5419, "upload_time": "2017-01-19T16:26:01", "upload_time_iso_8601": "2017-01-19T16:26:01.503126Z", "url": "https://files.pythonhosted.org/packages/7d/95/67a9990d7e1b90a8407a8210f85522ed8e74f9edd12b3f185385cea8a743/portend-1.6-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "11120c7bf5e51e68e16917f662a31608", "sha256": "d99f14790cbac1729c6e6c9e95faa0249c6310ff735e5bb50c15a2f651dc946f" }, "downloads": -1, "filename": "portend-1.6.tar.gz", "has_sig": false, "md5_digest": "11120c7bf5e51e68e16917f662a31608", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6034, "upload_time": "2017-01-19T16:26:03", "upload_time_iso_8601": "2017-01-19T16:26:03.053757Z", "url": "https://files.pythonhosted.org/packages/55/47/14d35b860c726764bdad675fb881a70347c6a83d473ebc69499d783a1854/portend-1.6.tar.gz", "yanked": false, "yanked_reason": null } ], "1.6.1": [ { "comment_text": "", "digests": { "md5": "1b09d0f6f1041f0d4efb7e2021bc8db4", "sha256": "28945c12102785b0c6a22984915a44ff121fddb4902eb2b859df69a025287b95" }, "downloads": -1, "filename": "portend-1.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1b09d0f6f1041f0d4efb7e2021bc8db4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5637, "upload_time": "2017-01-19T17:02:17", "upload_time_iso_8601": "2017-01-19T17:02:17.598903Z", "url": "https://files.pythonhosted.org/packages/90/f6/cdb9994376c30b686be08105759d8cfe35a90b151a75e2c85a2981c82f56/portend-1.6.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f64e04dfcaab626a2039d65a869ce2b8", "sha256": "4f87c6db9aedebcf3e1e61a8374a5cecbd4152b59ad782b08d6a39662d1cceaa" }, "downloads": -1, "filename": "portend-1.6.1.tar.gz", "has_sig": false, "md5_digest": "f64e04dfcaab626a2039d65a869ce2b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6247, "upload_time": "2017-01-19T17:02:19", "upload_time_iso_8601": "2017-01-19T17:02:19.536878Z", "url": "https://files.pythonhosted.org/packages/c8/77/7c29d19c4ea576ec734397580c4d8b1bced177ccf76ef625ea9eb4f8625e/portend-1.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.7": [ { "comment_text": "", "digests": { "md5": "672d4938414763d676c986ca83f3c0e6", "sha256": "6dd8573deaa7f0232919eae1cdbbec2dc1cd87208f17e288d32cd9b46a5a103c" }, "downloads": -1, "filename": "portend-1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "672d4938414763d676c986ca83f3c0e6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6373, "upload_time": "2017-01-20T14:55:09", "upload_time_iso_8601": "2017-01-20T14:55:09.695058Z", "url": "https://files.pythonhosted.org/packages/54/28/d235975b6b8af317d4af20d398e9ea6fb3bd8e3ea27b4d5dad1cc448ebf9/portend-1.7-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6731cafc8a5050e608a5a4df40e1500f", "sha256": "321681608b084fe2c12b881da5a2fa58ccf4fd41979852540cb9344172d73f15" }, "downloads": -1, "filename": "portend-1.7.tar.gz", "has_sig": false, "md5_digest": "6731cafc8a5050e608a5a4df40e1500f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7216, "upload_time": "2017-01-20T14:55:10", "upload_time_iso_8601": "2017-01-20T14:55:10.685548Z", "url": "https://files.pythonhosted.org/packages/2c/08/472e3574d9b735006e42d0b008d789db0134e7b9eea11191bb4ae406cc21/portend-1.7.tar.gz", "yanked": false, "yanked_reason": null } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "2d0246f522773092f0e65aa62cbe520f", "sha256": "e2124690565923434c2e4b2a4c27685a7cc27db5163e50f260070fc65b5756f4" }, "downloads": -1, "filename": "portend-1.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2d0246f522773092f0e65aa62cbe520f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6405, "upload_time": "2017-01-23T13:35:15", "upload_time_iso_8601": "2017-01-23T13:35:15.414702Z", "url": "https://files.pythonhosted.org/packages/9b/5c/f8742e07db353eed049b403c73c98285868ee74de21dfa94127a38b5ab44/portend-1.7.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "de1921d181a466c995954c1d98ee3b3e", "sha256": "4620748afe6911cbde64b78d12837c30f637171b0339d7107438bbe2ea0c339b" }, "downloads": -1, "filename": "portend-1.7.1.tar.gz", "has_sig": false, "md5_digest": "de1921d181a466c995954c1d98ee3b3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7251, "upload_time": "2017-01-23T13:35:16", "upload_time_iso_8601": "2017-01-23T13:35:16.582828Z", "url": "https://files.pythonhosted.org/packages/c4/c9/275edabebac579f1a5d702a88ce7961eb77f75d42072f33fea7fd31b85bc/portend-1.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "1.8": [ { "comment_text": "", "digests": { "md5": "416115a35d1ae936c9b8d8a10f952d66", "sha256": "25a4c4516f791893e13dd1903ceed869155588921a942588a534d3c4b8e72121" }, "downloads": -1, "filename": "portend-1.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "416115a35d1ae936c9b8d8a10f952d66", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6505, "upload_time": "2017-01-23T14:32:48", "upload_time_iso_8601": "2017-01-23T14:32:48.018021Z", "url": "https://files.pythonhosted.org/packages/1b/2c/7a20d186c029b96a296a47eb28d9644d6b3b20deccfede2567f1ec61d0d6/portend-1.8-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "a45e001d40227c4529b1a7186f4442f5", "sha256": "7de919b82c4ac60d4768fe80a2557290661aa665b7c427de6249d8cb2fde5561" }, "downloads": -1, "filename": "portend-1.8.tar.gz", "has_sig": false, "md5_digest": "a45e001d40227c4529b1a7186f4442f5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7418, "upload_time": "2017-01-23T14:32:48", "upload_time_iso_8601": "2017-01-23T14:32:48.744436Z", "url": "https://files.pythonhosted.org/packages/3f/37/f3ab6c4a00632d53d7dfb74ba4a695e86605b92b0a94bd41fa443b60ccb6/portend-1.8.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1": [ { "comment_text": "", "digests": { "md5": "7a99d3659b977ecb97e5f34e832f1467", "sha256": "36b163ec9e218dd121025b2ee89064a132af39ef9d3b8a344738866f30c10447" }, "downloads": -1, "filename": "portend-2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a99d3659b977ecb97e5f34e832f1467", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 6005, "upload_time": "2017-06-25T16:22:31", "upload_time_iso_8601": "2017-06-25T16:22:31.849550Z", "url": "https://files.pythonhosted.org/packages/36/05/d3d282be6d8f50f17f1cbc0dc77b41685079222f58609fe2560875143ed3/portend-2.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f73f039a26c65a746026dfbefa953359", "sha256": "e1c94fb2b9d6712e1477ef3abfecb417af4120a7e935444c880b6614056b86e1" }, "downloads": -1, "filename": "portend-2.1.tar.gz", "has_sig": false, "md5_digest": "f73f039a26c65a746026dfbefa953359", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7069, "upload_time": "2017-06-25T16:22:33", "upload_time_iso_8601": "2017-06-25T16:22:33.180090Z", "url": "https://files.pythonhosted.org/packages/ea/82/195aacc36d26a3ad1bd1ba4045d2e61c0a73a19cf02ed94f4ec233ae308b/portend-2.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "9be5620e5beb4e506297c90af0c3cbaa", "sha256": "301ff115590c1d63458e45e70d1284698eb3ac153f9b2093dfe854102c59c9db" }, "downloads": -1, "filename": "portend-2.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9be5620e5beb4e506297c90af0c3cbaa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 6060, "upload_time": "2017-06-28T20:15:41", "upload_time_iso_8601": "2017-06-28T20:15:41.448082Z", "url": "https://files.pythonhosted.org/packages/02/cd/b8e6780ad93e158ddf68855116996ae075f6ef0f30be7a3d367819e7a229/portend-2.1.1-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "21574e25e078c9b4b8acc83c57cd1e1e", "sha256": "519db7ea41da35b2b3600cf6298e11affb4343206daae92cf2ad96e00c0ab0a5" }, "downloads": -1, "filename": "portend-2.1.1.tar.gz", "has_sig": false, "md5_digest": "21574e25e078c9b4b8acc83c57cd1e1e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7162, "upload_time": "2017-06-28T20:15:43", "upload_time_iso_8601": "2017-06-28T20:15:43.128481Z", "url": "https://files.pythonhosted.org/packages/8a/48/d3b5bfc036383716413fe41b3874e5840f800383bda9e98825c64fd5a8cb/portend-2.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.1.2": [ { "comment_text": "", "digests": { "md5": "2c583c1baa298163c29c536d528d07ce", "sha256": "2a802107888ab122a9e77697b2d8cf9fca237aa37312b26edb9ae36cfb45154b" }, "downloads": -1, "filename": "portend-2.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2c583c1baa298163c29c536d528d07ce", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 6051, "upload_time": "2017-06-28T20:30:53", "upload_time_iso_8601": "2017-06-28T20:30:53.952751Z", "url": "https://files.pythonhosted.org/packages/33/16/48136fb49df23fa180b6110a7a93768078d5652408a7e3cdb92dd4b8c09c/portend-2.1.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e0d1469994a1b12fdb4104e14996ccd6", "sha256": "8407621ba5f095439b19dedaf38f0911a7f261e1f4b74a74e9d513637358a837" }, "downloads": -1, "filename": "portend-2.1.2.tar.gz", "has_sig": false, "md5_digest": "e0d1469994a1b12fdb4104e14996ccd6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7182, "upload_time": "2017-06-28T20:30:56", "upload_time_iso_8601": "2017-06-28T20:30:56.310718Z", "url": "https://files.pythonhosted.org/packages/0a/be/db3acda03e226ae9d53a7221ffa110eac1e5ca8024dda3a2683960d9aefd/portend-2.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "2.2": [ { "comment_text": "", "digests": { "md5": "7e22d47e44a71879b964000269247603", "sha256": "99c265340a5bb46a037c0bbc76556416d7eef47f87ea0f1f6c0f9185b6faf154" }, "downloads": -1, "filename": "portend-2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7e22d47e44a71879b964000269247603", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 6075, "upload_time": "2017-09-26T11:12:02", "upload_time_iso_8601": "2017-09-26T11:12:02.258344Z", "url": "https://files.pythonhosted.org/packages/16/20/d98f22a2a5b1d7f5ab3a38154f7a1dd87846f2c5881f4b6929bdd1624e72/portend-2.2-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "55bbcc8825925755b21968f1ab53dcc1", "sha256": "bc48d3d99e1eaf2e9406c729f8848bfdaf87876cd3560dc3ec6c16714f529586" }, "downloads": -1, "filename": "portend-2.2.tar.gz", "has_sig": false, "md5_digest": "55bbcc8825925755b21968f1ab53dcc1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 7974, "upload_time": "2017-09-26T11:12:04", "upload_time_iso_8601": "2017-09-26T11:12:04.618683Z", "url": "https://files.pythonhosted.org/packages/51/8a/b283d250525e797dbc70f923f1e841c52fd9fd3d97aa4cc3637ec4701150/portend-2.2.tar.gz", "yanked": false, "yanked_reason": null } ], "2.3": [ { "comment_text": "", "digests": { "md5": "21f9c233d3aa6f2e9d9017e447c18e66", "sha256": "f5c99a1aa1655733736bb0283fee6a1e115e18db500332bec8e24c43f320d8e8" }, "downloads": -1, "filename": "portend-2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "21f9c233d3aa6f2e9d9017e447c18e66", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 5189, "upload_time": "2018-06-09T20:03:12", "upload_time_iso_8601": "2018-06-09T20:03:12.365787Z", "url": "https://files.pythonhosted.org/packages/81/43/21afd5914b74d4271184ee76f4093b45aa6a580dc6627d72dfc33664c6ac/portend-2.3-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c1f36f2126da940ca5192dd1488b4f28", "sha256": "b7ce7d35ea262415297cbfea86226513e77b9ee5f631d3baa11992d663963719" }, "downloads": -1, "filename": "portend-2.3.tar.gz", "has_sig": false, "md5_digest": "c1f36f2126da940ca5192dd1488b4f28", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 8585, "upload_time": "2018-06-09T20:03:13", "upload_time_iso_8601": "2018-06-09T20:03:13.800617Z", "url": "https://files.pythonhosted.org/packages/ab/8f/70f5babd4a6a7c6a471e834c53be3ee3c89a6b3b16d6a85b2d25f2dc2671/portend-2.3.tar.gz", "yanked": false, "yanked_reason": null } ], "2.4": [ { "comment_text": "", "digests": { "md5": "18feae903e05b08880a28bda09f2544f", "sha256": "853d69e61d86aa1bc7a4976cb2f67efe1c92d3b41c47a5e6b8771d3c51b5bfd3" }, "downloads": -1, "filename": "portend-2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "18feae903e05b08880a28bda09f2544f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 4988, "upload_time": "2019-04-04T19:45:37", "upload_time_iso_8601": "2019-04-04T19:45:37.432486Z", "url": "https://files.pythonhosted.org/packages/54/18/d288ef3cfcaac40c9c3674d92ef8313bf137deeced810d60d9722c0a327a/portend-2.4-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e94615afb90d4cd36553ef0f761703d0", "sha256": "507e1f76eb6deec0cc15045d1140a07874f44d02eec021e8fd383557d99fe93d" }, "downloads": -1, "filename": "portend-2.4.tar.gz", "has_sig": false, "md5_digest": "e94615afb90d4cd36553ef0f761703d0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 11846, "upload_time": "2019-04-04T19:45:38", "upload_time_iso_8601": "2019-04-04T19:45:38.806260Z", "url": "https://files.pythonhosted.org/packages/17/80/57ab4b39a6538734d975a823818657c61ad20a728377a430f54b7d3e40aa/portend-2.4.tar.gz", "yanked": false, "yanked_reason": null } ], "2.5": [ { "comment_text": "", "digests": { "md5": "ceb077a234bef1394163ab503da3152b", "sha256": "d2dca12e585ce29fc357b31ce424a27c16e2d485029252bbf8ddcc9696207976" }, "downloads": -1, "filename": "portend-2.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ceb077a234bef1394163ab503da3152b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 5086, "upload_time": "2019-06-11T00:57:19", "upload_time_iso_8601": "2019-06-11T00:57:19.902796Z", "url": "https://files.pythonhosted.org/packages/0a/f5/0e5fe0bba1450034f023519aed3ca326bc42981475a93e3645ab868f351c/portend-2.5-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "0ab51a12b7462a5275946a3645a71e92", "sha256": "19dc27bfb3c72471bd30a235a4d5fbefef8a7e31cab367744b5d87a205e7bfd9" }, "downloads": -1, "filename": "portend-2.5.tar.gz", "has_sig": false, "md5_digest": "0ab51a12b7462a5275946a3645a71e92", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 12237, "upload_time": "2019-06-11T00:57:21", "upload_time_iso_8601": "2019-06-11T00:57:21.401738Z", "url": "https://files.pythonhosted.org/packages/2c/59/948666fc2455ae471efd40cb2a9a990f5f6f2354a9a6b228e29b9fb4a307/portend-2.5.tar.gz", "yanked": false, "yanked_reason": null } ], "2.6": [ { "comment_text": "", "digests": { "md5": "bf2c356b2dba5f76cf8d9bed77cc9107", "sha256": "62dd00b94a6a55fbf0320365fbdeba37f0d1fe14d613841037dc4780bedfda8f" }, "downloads": -1, "filename": "portend-2.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bf2c356b2dba5f76cf8d9bed77cc9107", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7", "size": 5092, "upload_time": "2019-10-30T23:59:51", "upload_time_iso_8601": "2019-10-30T23:59:51.030688Z", "url": "https://files.pythonhosted.org/packages/d7/79/eee70a512bffe5ceb5008f8e3326581948f50ca393c3bcb4d557e4818bd1/portend-2.6-py2.py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f0c866649b4b9758f75ef6641907bfe7", "sha256": "600dd54175e17e9347e5f3d4217aa8bcf4bf4fa5ffbc4df034e5ec1ba7cdaff5" }, "downloads": -1, "filename": "portend-2.6.tar.gz", "has_sig": false, "md5_digest": "f0c866649b4b9758f75ef6641907bfe7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7", "size": 12295, "upload_time": "2019-10-30T23:59:52", "upload_time_iso_8601": "2019-10-30T23:59:52.386784Z", "url": "https://files.pythonhosted.org/packages/04/98/997f8668b11292f13d3e69fc626232c497228306c764523c5a3a3b59c775/portend-2.6.tar.gz", "yanked": false, "yanked_reason": null } ], "2.7.0": [ { "comment_text": "", "digests": { "md5": "1cb22867af58c6c6f30de2d5e0c5cd67", "sha256": "f101c1aa58ef0718dcf591017adecbdcb54cf528721ecc5a138421511b80a285" }, "downloads": -1, "filename": "portend-2.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1cb22867af58c6c6f30de2d5e0c5cd67", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 5305, "upload_time": "2020-11-17T02:58:45", "upload_time_iso_8601": "2020-11-17T02:58:45.208107Z", "url": "https://files.pythonhosted.org/packages/71/72/25a9f466c3672e09fbfb2dcf87cbf688976de4d4ad6e5fe48cf5afd85690/portend-2.7.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "4d669c1af633027245cf78d9cdc9365c", "sha256": "ac0e57ae557f75dc47467579980af152e8f60bc2139547eff8469777d9110379" }, "downloads": -1, "filename": "portend-2.7.0.tar.gz", "has_sig": false, "md5_digest": "4d669c1af633027245cf78d9cdc9365c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 12732, "upload_time": "2020-11-17T02:58:46", "upload_time_iso_8601": "2020-11-17T02:58:46.140516Z", "url": "https://files.pythonhosted.org/packages/c3/68/891f7e77cdee7a14a6bb5c28aa558067843e97aeb8f10d5c5e454acb54e4/portend-2.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "2.7.1": [ { "comment_text": "", "digests": { "md5": "9f0fa0f7d0979cbef25d67e53302a05d", "sha256": "add53a9e65d4022885f97de7895da583d0ed57df3eadb0b4d2ada594268cc0e6" }, "downloads": -1, "filename": "portend-2.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9f0fa0f7d0979cbef25d67e53302a05d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 5289, "upload_time": "2021-02-14T00:12:23", "upload_time_iso_8601": "2021-02-14T00:12:23.987979Z", "url": "https://files.pythonhosted.org/packages/b8/a1/fd29409cced540facdd29abb986d988cb1f22c8170d10022ea73af77fa55/portend-2.7.1-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "b6dd535b35c1838fb1552ce19910a5d7", "sha256": "986ed9a278e64a87b5b5f4c21e61c25bebdce9919a92238d9c14c37a7416482b" }, "downloads": -1, "filename": "portend-2.7.1.tar.gz", "has_sig": false, "md5_digest": "b6dd535b35c1838fb1552ce19910a5d7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 13538, "upload_time": "2021-02-14T00:12:24", "upload_time_iso_8601": "2021-02-14T00:12:24.780743Z", "url": "https://files.pythonhosted.org/packages/53/7f/dc51c3c73f1df9ae75e44a3f912147f0d83ef3a0999306e57ebd3ef2c738/portend-2.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "2.7.2": [ { "comment_text": "", "digests": { "md5": "9cbdf81dd0f88ec73e5bed455ec5e7fe", "sha256": "35a5bfbdb763d11aa701c3c2fa56d05399625ac2ee18220a429d0107936a465c" }, "downloads": -1, "filename": "portend-2.7.2-py3-none-any.whl", "has_sig": false, "md5_digest": "9cbdf81dd0f88ec73e5bed455ec5e7fe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 5330, "upload_time": "2021-10-08T00:09:01", "upload_time_iso_8601": "2021-10-08T00:09:01.127059Z", "url": "https://files.pythonhosted.org/packages/e3/68/f91e5e8c89eb55732bbd55055bd65c1ac012f66402cec825e363fe2e4608/portend-2.7.2-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "84411ed3f3c387c635385f1f20e77074", "sha256": "3fbc0df9e4970b661e4d7386a91fc7bcf34ebeaf0333ce15d819d515a71ba8b2" }, "downloads": -1, "filename": "portend-2.7.2.tar.gz", "has_sig": false, "md5_digest": "84411ed3f3c387c635385f1f20e77074", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9438, "upload_time": "2021-10-08T00:09:02", "upload_time_iso_8601": "2021-10-08T00:09:02.428085Z", "url": "https://files.pythonhosted.org/packages/39/88/b76ff05642da1641283bf702c752f4f4a9191c3a1302b25211ee802fc4f8/portend-2.7.2.tar.gz", "yanked": false, "yanked_reason": null } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "556d3c4c351a91a7014c2c6c9d39fa10", "sha256": "4c5a5a05fb31e5df7b73e08e96d55928d8a7f4ae6b4724de3777b06d0e8de693" }, "downloads": -1, "filename": "portend-3.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "556d3c4c351a91a7014c2c6c9d39fa10", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 5313, "upload_time": "2021-10-08T00:22:43", "upload_time_iso_8601": "2021-10-08T00:22:43.745752Z", "url": "https://files.pythonhosted.org/packages/4a/c3/4714b8eaf7f4c375e307f1d1a49628cc3f421d5a4112148b69933183ad2d/portend-3.0.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e43901e58c2ab3aa7eea3d4b896814f7", "sha256": "df891766ee4fd887d83051b5ee9524aaad95a626f56faf5790682b6250ef03b9" }, "downloads": -1, "filename": "portend-3.0.0.tar.gz", "has_sig": false, "md5_digest": "e43901e58c2ab3aa7eea3d4b896814f7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 9439, "upload_time": "2021-10-08T00:22:44", "upload_time_iso_8601": "2021-10-08T00:22:44.712886Z", "url": "https://files.pythonhosted.org/packages/0e/9f/7e986d9b32f75cb61f4030b98133aa197c73c546cfda7ac5f48d87418503/portend-3.0.0.tar.gz", "yanked": false, "yanked_reason": null } ], "3.1.0": [ { "comment_text": "", "digests": { "md5": "50637ee3f7ea9d201e96e35ddacb54cd", "sha256": "9e735cee3a5c1961f09e3f3ba6dc498198c2d70b473d98d0d1504b8d1e7a3d61" }, "downloads": -1, "filename": "portend-3.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "50637ee3f7ea9d201e96e35ddacb54cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 5310, "upload_time": "2021-11-25T01:16:40", "upload_time_iso_8601": "2021-11-25T01:16:40.943969Z", "url": "https://files.pythonhosted.org/packages/5e/d5/55f51adaa23038c8533cde602c79e314edd6525d1f7f6a15a1995abec91e/portend-3.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c37d676837505a6fc8dd33185c6d62a7", "sha256": "239e3116045ea823f6df87d6168107ad75ccc0590e37242af0cc1e98c5d224e4" }, "downloads": -1, "filename": "portend-3.1.0.tar.gz", "has_sig": false, "md5_digest": "c37d676837505a6fc8dd33185c6d62a7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 9448, "upload_time": "2021-11-25T01:16:42", "upload_time_iso_8601": "2021-11-25T01:16:42.068325Z", "url": "https://files.pythonhosted.org/packages/6e/0a/42bcc9c97744958ce72d33f526e972379b9e90adede8a151f338818c41d4/portend-3.1.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "50637ee3f7ea9d201e96e35ddacb54cd", "sha256": "9e735cee3a5c1961f09e3f3ba6dc498198c2d70b473d98d0d1504b8d1e7a3d61" }, "downloads": -1, "filename": "portend-3.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "50637ee3f7ea9d201e96e35ddacb54cd", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.7", "size": 5310, "upload_time": "2021-11-25T01:16:40", "upload_time_iso_8601": "2021-11-25T01:16:40.943969Z", "url": "https://files.pythonhosted.org/packages/5e/d5/55f51adaa23038c8533cde602c79e314edd6525d1f7f6a15a1995abec91e/portend-3.1.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c37d676837505a6fc8dd33185c6d62a7", "sha256": "239e3116045ea823f6df87d6168107ad75ccc0590e37242af0cc1e98c5d224e4" }, "downloads": -1, "filename": "portend-3.1.0.tar.gz", "has_sig": false, "md5_digest": "c37d676837505a6fc8dd33185c6d62a7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 9448, "upload_time": "2021-11-25T01:16:42", "upload_time_iso_8601": "2021-11-25T01:16:42.068325Z", "url": "https://files.pythonhosted.org/packages/6e/0a/42bcc9c97744958ce72d33f526e972379b9e90adede8a151f338818c41d4/portend-3.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }