{ "info": { "author": "Jeremy Lain\u00e9", "author_email": "jeremy.laine@m4x.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Topic :: Internet :: WWW/HTTP" ], "description": "aioquic\n=======\n\n|rtd| |pypi-v| |pypi-pyversions| |pypi-l| |travis| |codecov| |black|\n\n.. |rtd| image:: https://readthedocs.org/projects/aioquic/badge/?version=latest\n :target: https://aioquic.readthedocs.io/\n\n.. |pypi-v| image:: https://img.shields.io/pypi/v/aioquic.svg\n :target: https://pypi.python.org/pypi/aioquic\n\n.. |pypi-pyversions| image:: https://img.shields.io/pypi/pyversions/aioquic.svg\n :target: https://pypi.python.org/pypi/aioquic\n\n.. |pypi-l| image:: https://img.shields.io/pypi/l/aioquic.svg\n :target: https://pypi.python.org/pypi/aioquic\n\n.. |travis| image:: https://img.shields.io/travis/com/aiortc/aioquic.svg\n :target: https://travis-ci.com/aiortc/aioquic\n\n.. |codecov| image:: https://img.shields.io/codecov/c/github/aiortc/aioquic.svg\n :target: https://codecov.io/gh/aiortc/aioquic\n\n.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/python/black\n\nWhat is ``aioquic``?\n--------------------\n\n``aioquic`` is a library for the QUIC network protocol in Python. It features\na minimal TLS 1.3 implementation, a QUIC stack and an HTTP/3 stack.\n\nQUIC standardisation is not finalised yet, but ``aioquic`` closely tracks the\nspecification drafts and is regularly tested for interoperability against other\n`QUIC implementations`_.\n\nTo learn more about ``aioquic`` please `read the documentation`_.\n\nWhy should I use ``aioquic``?\n-----------------------------\n\n``aioquic`` has been designed to be embedded into Python client and server\nlibraries wishing to support QUIC and / or HTTP/3. The goal is to provide a\ncommon codebase for Python libraries in the hope of avoiding duplicated effort.\n\nBoth the QUIC and the HTTP/3 APIs follow the \"bring your own I/O\" pattern,\nleaving actual I/O operations to the API user. This approach has a number of\nadvantages including making the code testable and allowing integration with\ndifferent concurrency models.\n\nFeatures\n--------\n\n- QUIC stack conforming with draft-23\n- HTTP/3 stack conforming with draft-23\n- minimal TLS 1.3 implementation\n- IPv4 and IPv6 support\n- connection migration and NAT rebinding\n- logging TLS traffic secrets\n- logging QUIC events in QLOG format\n- HTTP/3 server push support\n\nRunning the examples\n--------------------\n\n``aioquic`` requires Python 3.6 or better, and the OpenSSL development headers.\n\n.. code-block:: console\n\n $ sudo apt install libssl-dev python3-dev\n\nAfter checking out the code using git you can run:\n\n.. code-block:: console\n\n $ pip install -e .\n $ pip install aiofiles asgiref httpbin starlette wsproto\n\nHTTP/3 server\n.............\n\nYou can run the example server, which handles both HTTP/0.9 and HTTP/3:\n\n.. code-block:: console\n\n $ python examples/http3_server.py --certificate tests/ssl_cert.pem --private-key tests/ssl_key.pem\n\nHTTP/3 client\n.............\n\nYou can run the example client to perform an HTTP/3 request:\n\n.. code-block:: console\n\n $ python examples/http3_client.py --ca-certs tests/pycacert.pem https://localhost:4433/\n\nAlternatively you can perform an HTTP/0.9 request:\n\n.. code-block:: console\n\n $ python examples/http3_client.py --ca-certs tests/pycacert.pem --legacy-http https://localhost:4433/\n\nYou can also open a WebSocket over HTTP/3:\n\n.. code-block:: console\n\n $ python examples/http3_client.py --ca-certs tests/pycacert.pem wss://localhost:4433/ws\n\nLicense\n-------\n\n``aioquic`` is released under the `BSD license`_.\n\n.. _read the documentation: https://aioquic.readthedocs.io/en/latest/\n.. _QUIC implementations: https://github.com/quicwg/base-drafts/wiki/Implementations\n.. _cryptography: https://cryptography.io/\n.. _BSD license: https://aioquic.readthedocs.io/en/latest/license.html", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/aiortc/aioquic", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "aioquic", "package_url": "https://pypi.org/project/aioquic/", "platform": "", "project_url": "https://pypi.org/project/aioquic/", "project_urls": { "Homepage": "https://github.com/aiortc/aioquic" }, "release_url": "https://pypi.org/project/aioquic/0.8.2/", "requires_dist": null, "requires_python": "", "summary": "An implementation of QUIC and HTTP/3", "version": "0.8.2" }, "last_serial": 5928077, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "34ad6a0ffa32871cf0445f999ab4e0ee", "sha256": "d275cae2fb848713444c0b1aebdf610d9c3b1e8319a3b55f9e2e3633f0a11e04" }, "downloads": -1, "filename": "aioquic-0.1.0.tar.gz", "has_sig": false, "md5_digest": "34ad6a0ffa32871cf0445f999ab4e0ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41287, "upload_time": "2019-06-08T13:38:29", "url": "https://files.pythonhosted.org/packages/7e/d4/076f9b2f49bce366f6a7cb6b0ff1335dc1ea3a7f9732b5a36e5c06c68bb1/aioquic-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9e4ca45b041922fc4be126dfdd8ea03d", "sha256": "b1eb41f3db3ae3ad7114ec57c21b1acae5c0b2eba2f97a9ea062abba65ce461d" }, "downloads": -1, "filename": "aioquic-0.2.0.tar.gz", "has_sig": false, "md5_digest": "9e4ca45b041922fc4be126dfdd8ea03d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102527, "upload_time": "2019-07-23T19:00:26", "url": "https://files.pythonhosted.org/packages/2a/44/599d277131987f0bee07b313de9cdf7deb1a2f7418adce930de2476955f2/aioquic-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "100562d9da7c0219631d1cf5604068dd", "sha256": "aee0fb496ef7c05d54216d73bbbc72986ebb50110d9ff3c7cd04e0ca3aaa6969" }, "downloads": -1, "filename": "aioquic-0.3.0.tar.gz", "has_sig": false, "md5_digest": "100562d9da7c0219631d1cf5604068dd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102925, "upload_time": "2019-08-10T16:55:51", "url": "https://files.pythonhosted.org/packages/c6/90/21d3315afde4f5d5d057e9130f1ce9c07b8fea520789d992ff0bd4a2d884/aioquic-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "baa1914727d5bac5ee06ea2543c085ee", "sha256": "27e7986ddc141d30986accb0ffa26a1a26157d88aa28a379b2a6f89c8747dd0b" }, "downloads": -1, "filename": "aioquic-0.4.0.tar.gz", "has_sig": false, "md5_digest": "baa1914727d5bac5ee06ea2543c085ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 101980, "upload_time": "2019-08-12T11:44:47", "url": "https://files.pythonhosted.org/packages/46/eb/47372e41588d9fc271e7a1d825e1acfdc920341c9a9a521fc3a52251ed8e/aioquic-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "770bc281f913415f36941a84e605d447", "sha256": "afe6a36ae41e395210807fd48b8dba0ced282fe5acbe33d1f9d5b72428522b27" }, "downloads": -1, "filename": "aioquic-0.5.0.tar.gz", "has_sig": false, "md5_digest": "770bc281f913415f36941a84e605d447", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 103894, "upload_time": "2019-08-18T14:30:36", "url": "https://files.pythonhosted.org/packages/5a/23/7c710a9660c1249fcdc0c1a06253803bdb3fe87c099bed903380a5b80f0b/aioquic-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "13a4d5502561597776cd8cc125729a3c", "sha256": "0a8c8272a6f49d8476a69245c437c413ffa3b08e3e5cfc798152544d88634996" }, "downloads": -1, "filename": "aioquic-0.6.0.tar.gz", "has_sig": false, "md5_digest": "13a4d5502561597776cd8cc125729a3c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 111523, "upload_time": "2019-08-29T08:40:42", "url": "https://files.pythonhosted.org/packages/8a/9d/9e934327105928f131d20b900d965542b5ea03a18e7e4f48c443b841ef91/aioquic-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "cba6e1d4dcb325739e833d500006e423", "sha256": "7a19becff36a7214644d2c291b4532a187a0f50e7be88ebbc26e4cac21d313d6" }, "downloads": -1, "filename": "aioquic-0.7.0.tar.gz", "has_sig": false, "md5_digest": "cba6e1d4dcb325739e833d500006e423", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 112866, "upload_time": "2019-09-04T06:23:46", "url": "https://files.pythonhosted.org/packages/1d/4d/0d3547eb00bfdf3f10c8b0e752c3af9f3bcb0701624e44d6eeb2d199c56b/aioquic-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "d3001be6493e47e97b2b32fc611f0fab", "sha256": "32f3fb4d4f8af422f4890f6debe2f935169fd898c96c414b8b95d8b746193f45" }, "downloads": -1, "filename": "aioquic-0.7.1.tar.gz", "has_sig": false, "md5_digest": "d3001be6493e47e97b2b32fc611f0fab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 113525, "upload_time": "2019-09-04T23:17:45", "url": "https://files.pythonhosted.org/packages/46/bf/ac9d96a2ab4c959425554492a01e2b1479ee9aa28215014a4c93594927de/aioquic-0.7.1.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "61ad7f422a3b8126a21c2e9b77bbb863", "sha256": "5a1e8577c31bbf07befbd93624c172cd0f858e0e0a091fc4908c54ec2eca8eb8" }, "downloads": -1, "filename": "aioquic-0.8.0.tar.gz", "has_sig": false, "md5_digest": "61ad7f422a3b8126a21c2e9b77bbb863", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118542, "upload_time": "2019-09-16T11:21:50", "url": "https://files.pythonhosted.org/packages/19/af/c2ea95877b16ad71b52f218c62a0a8e6a84ff2bcc6098d833ec2ddab067a/aioquic-0.8.0.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "941ae3a069fb0100fa2e8ab7248bad4e", "sha256": "c59e08058d6a1e2b88472ba21b257a529eb6577eb9367c0d6cba0f45827f408a" }, "downloads": -1, "filename": "aioquic-0.8.1.tar.gz", "has_sig": false, "md5_digest": "941ae3a069fb0100fa2e8ab7248bad4e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 118829, "upload_time": "2019-09-24T09:44:39", "url": "https://files.pythonhosted.org/packages/77/28/ac8db26bf439a2796fb5ec03bd09e86c62915a981400ab8576e5a67e18e5/aioquic-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "53fb2e7360f3a30855af3df8b1514df2", "sha256": "e110fe54770730cc5550f8cfea295b0bde010517932a8724caf9d5d5e073a551" }, "downloads": -1, "filename": "aioquic-0.8.2.tar.gz", "has_sig": false, "md5_digest": "53fb2e7360f3a30855af3df8b1514df2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 125403, "upload_time": "2019-10-04T12:28:10", "url": "https://files.pythonhosted.org/packages/c4/5c/036cc63fad99af62c09c656533efc80f17e49e2e5ce1cf60f425a92cfa2b/aioquic-0.8.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "53fb2e7360f3a30855af3df8b1514df2", "sha256": "e110fe54770730cc5550f8cfea295b0bde010517932a8724caf9d5d5e073a551" }, "downloads": -1, "filename": "aioquic-0.8.2.tar.gz", "has_sig": false, "md5_digest": "53fb2e7360f3a30855af3df8b1514df2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 125403, "upload_time": "2019-10-04T12:28:10", "url": "https://files.pythonhosted.org/packages/c4/5c/036cc63fad99af62c09c656533efc80f17e49e2e5ce1cf60f425a92cfa2b/aioquic-0.8.2.tar.gz" } ] }