{ "info": { "author": "Seth Michael Larson", "author_email": "sethmichaellarson@protonmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet", "Topic :: System :: Networking" ], "description": "rfc6555\n=======\n\n.. image:: https://img.shields.io/travis/SethMichaelLarson/rfc6555/master.svg?style=flat-square\n :target: https://travis-ci.org/SethMichaelLarson/rfc6555\n\n.. image:: https://img.shields.io/appveyor/ci/SethMichaelLarson/rfc6555/master.svg?style=flat-square\n :target: https://ci.appveyor.com/project/SethMichaelLarson/rfc6555\n\n.. image:: https://img.shields.io/codecov/c/github/SethMichaelLarson/rfc6555/master.svg?style=flat-square\n :target: https://codecov.io/gh/SethMichaelLarson/rfc6555\n\n.. image:: https://img.shields.io/pypi/v/rfc6555.svg?style=flat-square\n :target: https://pypi.python.org/pypi/rfc6555\n\n.. image:: https://img.shields.io/badge/say-thanks-ff69b4.svg?style=flat-square\n :target: https://saythanks.io/to/SethMichaelLarson\n\nPython implementation of the Happy Eyeballs Algorithm described in `RFC 6555 `_.\nProvided with a single file and dead-simple API to allow easy vendoring\nand integration into other projects.\n\nAbstract\n--------\n\nWhen a server's IPv4 path and protocol are working, but the server's\nIPv6 path and protocol are not working, a dual-stack client\napplication experiences significant connection delay compared to an\nIPv4-only client. This is undesirable because it causes the dual-\nstack client to have a worse user experience. This document\nspecifies requirements for algorithms that reduce this user-visible\ndelay and provides an algorithm.\n\n~ `Abstract from RFC 6555 `_\n\nInstallation\n------------\n\n``$ python -m pip install rfc6555``\n\nUsage\n-----\n\nThe main API for the ``rfc6555`` module is via ``rfc6555.create_connection()`` which\nfunctions identically to ``socket.create_connection()`` with the same arguments.\nThis function will automatically fall back on a ``socket.create_connection()`` call if\nRFC 6555 is not supported (for instance on platforms not capable of IPv6) or if\nRFC 6555 is disabled via setting ``rfc6555.RFC6555_ENABLED`` equal to ``False``.\n\n**IMPORTANT:** Caching is **NOT** thread-safe by default. If you require thread-safe caching\none should create their own implementation of ``rfc6555._RFC6555CacheManager`` object that\nis thread-safe and assign an instance to ``rfc6555.cache``.\n\n .. code-block:: python\n\n import rfc6555\n sock = rfc6555.create_connection(('www.google.com', 80), timeout=10, source_address=('::1', 0))\n\n # This will disable the Happy Eyeballs algorithm for future\n # calls to create_connection()\n rfc6555.RFC6555_ENABLED = False\n\n # Use this to set a different duration for cache entries.\n rfc6555.cache.validity_duration = 10 # 10 second validity time.\n\n # Use this to disable caching.\n rfc6555.cache.enabled = False\n\nSupport\n-------\n\nThis module supports Python 2.6 or newer and supports all major platforms.\nAdditionally if you have ``selectors2>=2.0.0`` installed this module will\nalso support Jython in addition to CPython.\n\nLicense\n-------\n\nThe ``rfc6555`` package is released under the ``Apache-2.0`` license.\n\nSee `full license text in LICENSE file `_ for more information.\n\n .. code-block::\n\n Copyright 2017 Seth Michael Larson\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n\nChangelog\n=========\n\n1.0.0\n-----\n\n- Initial release of ``rfc6555``.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://www.github.com/SethMichaelLarson/rfc6555", "keywords": "", "license": "Apache-2.0", "maintainer": "Seth Michael Larson", "maintainer_email": "sethmichaellarson@protonmail.com", "name": "rfc6555", "package_url": "https://pypi.org/project/rfc6555/", "platform": "", "project_url": "https://pypi.org/project/rfc6555/", "project_urls": { "Homepage": "https://www.github.com/SethMichaelLarson/rfc6555" }, "release_url": "https://pypi.org/project/rfc6555/0.0.0/", "requires_dist": [ "selectors2" ], "requires_python": "", "summary": "Python implementation of the Happy Eyeballs Algorithm described in RFC 6555.", "version": "0.0.0" }, "last_serial": 4820760, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "8ed5f1e71eda3bcbc6ca2baf10bb7c44", "sha256": "b6ae3e773fa92b1e1169bf032fdada940dd070346cb55bb4a6aba6296677bedc" }, "downloads": -1, "filename": "rfc6555-0.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8ed5f1e71eda3bcbc6ca2baf10bb7c44", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10294, "upload_time": "2019-02-13T10:32:49", "url": "https://files.pythonhosted.org/packages/9a/03/1f49baf3db400bf5fc9dd29592d07e1ba0e2e9f98c9cd69be1456f0b0ead/rfc6555-0.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c3e9b221870252e32fc7ae4d52be6587", "sha256": "191cbba0315b53654155321e56a93466f42cd0a474b4f341df4d03264dcb5217" }, "downloads": -1, "filename": "rfc6555-0.0.0.tar.gz", "has_sig": false, "md5_digest": "c3e9b221870252e32fc7ae4d52be6587", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11218, "upload_time": "2019-02-13T10:32:51", "url": "https://files.pythonhosted.org/packages/58/a8/1dfba2db1f744657065562386069e547eefea9432d3f520d4af5b5fabd28/rfc6555-0.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8ed5f1e71eda3bcbc6ca2baf10bb7c44", "sha256": "b6ae3e773fa92b1e1169bf032fdada940dd070346cb55bb4a6aba6296677bedc" }, "downloads": -1, "filename": "rfc6555-0.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8ed5f1e71eda3bcbc6ca2baf10bb7c44", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10294, "upload_time": "2019-02-13T10:32:49", "url": "https://files.pythonhosted.org/packages/9a/03/1f49baf3db400bf5fc9dd29592d07e1ba0e2e9f98c9cd69be1456f0b0ead/rfc6555-0.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c3e9b221870252e32fc7ae4d52be6587", "sha256": "191cbba0315b53654155321e56a93466f42cd0a474b4f341df4d03264dcb5217" }, "downloads": -1, "filename": "rfc6555-0.0.0.tar.gz", "has_sig": false, "md5_digest": "c3e9b221870252e32fc7ae4d52be6587", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11218, "upload_time": "2019-02-13T10:32:51", "url": "https://files.pythonhosted.org/packages/58/a8/1dfba2db1f744657065562386069e547eefea9432d3f520d4af5b5fabd28/rfc6555-0.0.0.tar.gz" } ] }