aioquic


Nameaioquic JSON
Version 1.2.0 PyPI version JSON
download
home_pageNone
SummaryAn implementation of QUIC and HTTP/3
upload_time2024-07-06 23:27:09
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseBSD-3-Clause
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            aioquic
=======

.. image:: https://img.shields.io/pypi/l/aioquic.svg
   :target: https://pypi.python.org/pypi/aioquic
   :alt: License

.. image:: https://img.shields.io/pypi/v/aioquic.svg
   :target: https://pypi.python.org/pypi/aioquic
   :alt: Version

.. image:: https://img.shields.io/pypi/pyversions/aioquic.svg
   :target: https://pypi.python.org/pypi/aioquic
   :alt: Python versions

.. image:: https://github.com/aiortc/aioquic/workflows/tests/badge.svg
   :target: https://github.com/aiortc/aioquic/actions
   :alt: Tests

.. image:: https://img.shields.io/codecov/c/github/aiortc/aioquic.svg
   :target: https://codecov.io/gh/aiortc/aioquic
   :alt: Coverage

.. image:: https://readthedocs.org/projects/aioquic/badge/?version=latest
   :target: https://aioquic.readthedocs.io/
   :alt: Documentation

What is ``aioquic``?
--------------------

``aioquic`` is a library for the QUIC network protocol in Python. It features
a minimal TLS 1.3 implementation, a QUIC stack and an HTTP/3 stack.

``aioquic`` is used by Python opensource projects such as `dnspython`_,
`hypercorn`_, `mitmproxy`_ and the `Web Platform Tests`_ cross-browser test
suite. It has also been used extensively in research papers about QUIC.

To learn more about ``aioquic`` please `read the documentation`_.

Why should I use ``aioquic``?
-----------------------------

``aioquic`` has been designed to be embedded into Python client and server
libraries wishing to support QUIC and / or HTTP/3. The goal is to provide a
common codebase for Python libraries in the hope of avoiding duplicated effort.

Both the QUIC and the HTTP/3 APIs follow the "bring your own I/O" pattern,
leaving actual I/O operations to the API user. This approach has a number of
advantages including making the code testable and allowing integration with
different concurrency models.

A lot of effort has gone into writing an extensive test suite for the
``aioquic`` code to ensure best-in-class code quality, and it is regularly
`tested for interoperability`_ against other `QUIC implementations`_.

Features
--------

- minimal TLS 1.3 implementation conforming with `RFC 8446`_
- QUIC stack conforming with `RFC 9000`_ (QUIC v1) and `RFC 9369`_ (QUIC v2)
   * IPv4 and IPv6 support
   * connection migration and NAT rebinding
   * logging TLS traffic secrets
   * logging QUIC events in QLOG format
   * version negotiation conforming with `RFC 9368`_
- HTTP/3 stack conforming with `RFC 9114`_
   * server push support
   * WebSocket bootstrapping conforming with `RFC 9220`_
   * datagram support conforming with `RFC 9297`_

Installing
----------

The easiest way to install ``aioquic`` is to run:

.. code:: bash

    pip install aioquic

Building from source
--------------------

If there are no wheels for your system or if you wish to build ``aioquic``
from source you will need the OpenSSL development headers.

Linux
.....

On Debian/Ubuntu run:

.. code-block:: console

   sudo apt install libssl-dev python3-dev

On Alpine Linux run:

.. code-block:: console

   sudo apk add openssl-dev python3-dev bsd-compat-headers libffi-dev

OS X
....

On OS X run:

.. code-block:: console

   brew install openssl

You will need to set some environment variables to link against OpenSSL:

.. code-block:: console

   export CFLAGS=-I$(brew --prefix openssl)/include
   export LDFLAGS=-L$(brew --prefix openssl)/lib

Windows
.......

On Windows the easiest way to install OpenSSL is to use `Chocolatey`_.

.. code-block:: console

   choco install openssl

You will need to set some environment variables to link against OpenSSL:

.. code-block:: console

  $Env:INCLUDE = "C:\Progra~1\OpenSSL\include"
  $Env:LIB = "C:\Progra~1\OpenSSL\lib"

Running the examples
--------------------

`aioquic` comes with a number of examples illustrating various QUIC usecases.

You can browse these examples here: https://github.com/aiortc/aioquic/tree/main/examples

License
-------

``aioquic`` is released under the `BSD license`_.

.. _read the documentation: https://aioquic.readthedocs.io/en/latest/
.. _dnspython: https://github.com/rthalley/dnspython
.. _hypercorn: https://github.com/pgjones/hypercorn
.. _mitmproxy: https://github.com/mitmproxy/mitmproxy
.. _Web Platform Tests: https://github.com/web-platform-tests/wpt
.. _tested for interoperability: https://interop.seemann.io/
.. _QUIC implementations: https://github.com/quicwg/base-drafts/wiki/Implementations
.. _cryptography: https://cryptography.io/
.. _Chocolatey: https://chocolatey.org/
.. _BSD license: https://aioquic.readthedocs.io/en/latest/license.html
.. _RFC 8446: https://datatracker.ietf.org/doc/html/rfc8446
.. _RFC 9000: https://datatracker.ietf.org/doc/html/rfc9000
.. _RFC 9114: https://datatracker.ietf.org/doc/html/rfc9114
.. _RFC 9220: https://datatracker.ietf.org/doc/html/rfc9220
.. _RFC 9297: https://datatracker.ietf.org/doc/html/rfc9297
.. _RFC 9368: https://datatracker.ietf.org/doc/html/rfc9368
.. _RFC 9369: https://datatracker.ietf.org/doc/html/rfc9369

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "aioquic",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": null,
    "author_email": "Jeremy Lain\u00e9 <jeremy.laine@m4x.org>",
    "download_url": "https://files.pythonhosted.org/packages/4b/1a/bf10b2c57c06c7452b685368cb1ac90565a6e686e84ec6f84465fb8f78f4/aioquic-1.2.0.tar.gz",
    "platform": null,
    "description": "aioquic\n=======\n\n.. image:: https://img.shields.io/pypi/l/aioquic.svg\n   :target: https://pypi.python.org/pypi/aioquic\n   :alt: License\n\n.. image:: https://img.shields.io/pypi/v/aioquic.svg\n   :target: https://pypi.python.org/pypi/aioquic\n   :alt: Version\n\n.. image:: https://img.shields.io/pypi/pyversions/aioquic.svg\n   :target: https://pypi.python.org/pypi/aioquic\n   :alt: Python versions\n\n.. image:: https://github.com/aiortc/aioquic/workflows/tests/badge.svg\n   :target: https://github.com/aiortc/aioquic/actions\n   :alt: Tests\n\n.. image:: https://img.shields.io/codecov/c/github/aiortc/aioquic.svg\n   :target: https://codecov.io/gh/aiortc/aioquic\n   :alt: Coverage\n\n.. image:: https://readthedocs.org/projects/aioquic/badge/?version=latest\n   :target: https://aioquic.readthedocs.io/\n   :alt: Documentation\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\n``aioquic`` is used by Python opensource projects such as `dnspython`_,\n`hypercorn`_, `mitmproxy`_ and the `Web Platform Tests`_ cross-browser test\nsuite. It has also been used extensively in research papers about QUIC.\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\nA lot of effort has gone into writing an extensive test suite for the\n``aioquic`` code to ensure best-in-class code quality, and it is regularly\n`tested for interoperability`_ against other `QUIC implementations`_.\n\nFeatures\n--------\n\n- minimal TLS 1.3 implementation conforming with `RFC 8446`_\n- QUIC stack conforming with `RFC 9000`_ (QUIC v1) and `RFC 9369`_ (QUIC v2)\n   * IPv4 and IPv6 support\n   * connection migration and NAT rebinding\n   * logging TLS traffic secrets\n   * logging QUIC events in QLOG format\n   * version negotiation conforming with `RFC 9368`_\n- HTTP/3 stack conforming with `RFC 9114`_\n   * server push support\n   * WebSocket bootstrapping conforming with `RFC 9220`_\n   * datagram support conforming with `RFC 9297`_\n\nInstalling\n----------\n\nThe easiest way to install ``aioquic`` is to run:\n\n.. code:: bash\n\n    pip install aioquic\n\nBuilding from source\n--------------------\n\nIf there are no wheels for your system or if you wish to build ``aioquic``\nfrom source you will need the OpenSSL development headers.\n\nLinux\n.....\n\nOn Debian/Ubuntu run:\n\n.. code-block:: console\n\n   sudo apt install libssl-dev python3-dev\n\nOn Alpine Linux run:\n\n.. code-block:: console\n\n   sudo apk add openssl-dev python3-dev bsd-compat-headers libffi-dev\n\nOS X\n....\n\nOn OS X run:\n\n.. code-block:: console\n\n   brew install openssl\n\nYou will need to set some environment variables to link against OpenSSL:\n\n.. code-block:: console\n\n   export CFLAGS=-I$(brew --prefix openssl)/include\n   export LDFLAGS=-L$(brew --prefix openssl)/lib\n\nWindows\n.......\n\nOn Windows the easiest way to install OpenSSL is to use `Chocolatey`_.\n\n.. code-block:: console\n\n   choco install openssl\n\nYou will need to set some environment variables to link against OpenSSL:\n\n.. code-block:: console\n\n  $Env:INCLUDE = \"C:\\Progra~1\\OpenSSL\\include\"\n  $Env:LIB = \"C:\\Progra~1\\OpenSSL\\lib\"\n\nRunning the examples\n--------------------\n\n`aioquic` comes with a number of examples illustrating various QUIC usecases.\n\nYou can browse these examples here: https://github.com/aiortc/aioquic/tree/main/examples\n\nLicense\n-------\n\n``aioquic`` is released under the `BSD license`_.\n\n.. _read the documentation: https://aioquic.readthedocs.io/en/latest/\n.. _dnspython: https://github.com/rthalley/dnspython\n.. _hypercorn: https://github.com/pgjones/hypercorn\n.. _mitmproxy: https://github.com/mitmproxy/mitmproxy\n.. _Web Platform Tests: https://github.com/web-platform-tests/wpt\n.. _tested for interoperability: https://interop.seemann.io/\n.. _QUIC implementations: https://github.com/quicwg/base-drafts/wiki/Implementations\n.. _cryptography: https://cryptography.io/\n.. _Chocolatey: https://chocolatey.org/\n.. _BSD license: https://aioquic.readthedocs.io/en/latest/license.html\n.. _RFC 8446: https://datatracker.ietf.org/doc/html/rfc8446\n.. _RFC 9000: https://datatracker.ietf.org/doc/html/rfc9000\n.. _RFC 9114: https://datatracker.ietf.org/doc/html/rfc9114\n.. _RFC 9220: https://datatracker.ietf.org/doc/html/rfc9220\n.. _RFC 9297: https://datatracker.ietf.org/doc/html/rfc9297\n.. _RFC 9368: https://datatracker.ietf.org/doc/html/rfc9368\n.. _RFC 9369: https://datatracker.ietf.org/doc/html/rfc9369\n",
    "bugtrack_url": null,
    "license": "BSD-3-Clause",
    "summary": "An implementation of QUIC and HTTP/3",
    "version": "1.2.0",
    "project_urls": {
        "Changelog": "https://aioquic.readthedocs.io/en/stable/changelog.html",
        "Documentation": "https://aioquic.readthedocs.io/",
        "Homepage": "https://github.com/aiortc/aioquic"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "19031c385739e504c70ab2a66a4bc0e7cd95cee084b374dcd4dc97896378400b",
                "md5": "95cca36540ea2d56ce7dd19181f61abc",
                "sha256": "3e23964dfb04526ade6e66f5b7cd0c830421b8138303ab60ba6e204015e7cb0b"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-cp38-abi3-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "95cca36540ea2d56ce7dd19181f61abc",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1753473,
            "upload_time": "2024-07-06T23:26:20",
            "upload_time_iso_8601": "2024-07-06T23:26:20.809878Z",
            "url": "https://files.pythonhosted.org/packages/19/03/1c385739e504c70ab2a66a4bc0e7cd95cee084b374dcd4dc97896378400b/aioquic-1.2.0-cp38-abi3-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6a1f4d1c40714db65be828e1a1e2cce7f8f4b252be67d89f2942f86a1951826c",
                "md5": "b392f91c8fca7edea22996d5fd646364",
                "sha256": "84d733332927b76218a3b246216104116f766f5a9b2308ec306cd017b3049660"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-cp38-abi3-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "b392f91c8fca7edea22996d5fd646364",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 2083563,
            "upload_time": "2024-07-06T23:26:24",
            "upload_time_iso_8601": "2024-07-06T23:26:24.254695Z",
            "url": "https://files.pythonhosted.org/packages/6a/1f/4d1c40714db65be828e1a1e2cce7f8f4b252be67d89f2942f86a1951826c/aioquic-1.2.0-cp38-abi3-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "154856a8c9083d1deea4ccaf1cbf5a91a396b838b4a0f8650f4e9f45c7879a38",
                "md5": "b4e6553f951a5937e11fdacd29de0f74",
                "sha256": "2466499759b31ea4f1d17f4aeb1f8d4297169e05e3c1216d618c9757f4dd740d"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "b4e6553f951a5937e11fdacd29de0f74",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 2555697,
            "upload_time": "2024-07-06T23:26:26",
            "upload_time_iso_8601": "2024-07-06T23:26:26.160082Z",
            "url": "https://files.pythonhosted.org/packages/15/48/56a8c9083d1deea4ccaf1cbf5a91a396b838b4a0f8650f4e9f45c7879a38/aioquic-1.2.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0f93fa4c981a8a8a903648d4cd6e12c0fca7f44e3ef4ba15a8b99a26af05b868",
                "md5": "90f6d3ae2ac1b6ea35f17785d2bc6332",
                "sha256": "cd75015462ca5070a888110dc201f35a9f4c7459f9201b77adc3c06013611bb8"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "90f6d3ae2ac1b6ea35f17785d2bc6332",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 2149089,
            "upload_time": "2024-07-06T23:26:28",
            "upload_time_iso_8601": "2024-07-06T23:26:28.277636Z",
            "url": "https://files.pythonhosted.org/packages/0f/93/fa4c981a8a8a903648d4cd6e12c0fca7f44e3ef4ba15a8b99a26af05b868/aioquic-1.2.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b00f4a280923313b831892caaa45348abea89e7dd2e4422a86699bb0e506b1dd",
                "md5": "b9ae30807ebb90da61fd27c7396ee9b7",
                "sha256": "43ae3b11d43400a620ca0b4b4885d12b76a599c2cbddba755f74bebfa65fe587"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b9ae30807ebb90da61fd27c7396ee9b7",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 2205221,
            "upload_time": "2024-07-06T23:26:30",
            "upload_time_iso_8601": "2024-07-06T23:26:30.682751Z",
            "url": "https://files.pythonhosted.org/packages/b0/0f/4a280923313b831892caaa45348abea89e7dd2e4422a86699bb0e506b1dd/aioquic-1.2.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d26ba6a1d1762ce06f13b68f524bb9c5f4d6ca7cda9b072d7e744626b89b77be",
                "md5": "d138974567ad51ea9ac8a191e55d39fc",
                "sha256": "910d8c91da86bba003d491d15deaeac3087d1b9d690b9edc1375905d8867b742"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-cp38-abi3-win32.whl",
            "has_sig": false,
            "md5_digest": "d138974567ad51ea9ac8a191e55d39fc",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1214037,
            "upload_time": "2024-07-06T23:26:32",
            "upload_time_iso_8601": "2024-07-06T23:26:32.651109Z",
            "url": "https://files.pythonhosted.org/packages/d2/6b/a6a1d1762ce06f13b68f524bb9c5f4d6ca7cda9b072d7e744626b89b77be/aioquic-1.2.0-cp38-abi3-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ddaae8a8a75c93dee0ab229df3c2d17f63cd44d0ad5ee8540e2ec42779ce3a39",
                "md5": "5ab203b41f9d3c1eb1a2ca4b2a5bca91",
                "sha256": "e3dcfb941004333d477225a6689b55fc7f905af5ee6a556eb5083be0354e653a"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-cp38-abi3-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5ab203b41f9d3c1eb1a2ca4b2a5bca91",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 1530339,
            "upload_time": "2024-07-06T23:26:34",
            "upload_time_iso_8601": "2024-07-06T23:26:34.753225Z",
            "url": "https://files.pythonhosted.org/packages/dd/aa/e8a8a75c93dee0ab229df3c2d17f63cd44d0ad5ee8540e2ec42779ce3a39/aioquic-1.2.0-cp38-abi3-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "00ba023fb3f1476bc34b48e484a4ea866bfdef6454ff17d76ce5da7b02c4c6b7",
                "md5": "7a14dc0aa1b6e22615b45460037e9327",
                "sha256": "8e600da7aa7e4a7bc53ee8f45fd66808032127ae00938c119ac77d66633b8961"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7a14dc0aa1b6e22615b45460037e9327",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 1754235,
            "upload_time": "2024-07-06T23:26:36",
            "upload_time_iso_8601": "2024-07-06T23:26:36.657550Z",
            "url": "https://files.pythonhosted.org/packages/00/ba/023fb3f1476bc34b48e484a4ea866bfdef6454ff17d76ce5da7b02c4c6b7/aioquic-1.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2dbdf1910e0d80b6acc3cc95a2daeaeb48fd07a1c83194b2c7791e9eaa1500a2",
                "md5": "40f2cb200a444d3747848f076eb0e229",
                "sha256": "358e2b9c1e0c24b9933094c3c2cf990faf44d03b64d6f8ff79b4b3f510c6c268"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "40f2cb200a444d3747848f076eb0e229",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 2083057,
            "upload_time": "2024-07-06T23:26:38",
            "upload_time_iso_8601": "2024-07-06T23:26:38.196125Z",
            "url": "https://files.pythonhosted.org/packages/2d/bd/f1910e0d80b6acc3cc95a2daeaeb48fd07a1c83194b2c7791e9eaa1500a2/aioquic-1.2.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9881e3c2e0f2a7e2380250490ed526851ebdfa0af825512fb30c2f2fe7bd6f04",
                "md5": "b5529e97b85a20d4e5c4545ea7ac763a",
                "sha256": "6fe683943ea3439dd0aca05ff80e85a552d4b39f9f34858c76ac54c205990e88"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "b5529e97b85a20d4e5c4545ea7ac763a",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 2514822,
            "upload_time": "2024-07-06T23:26:40",
            "upload_time_iso_8601": "2024-07-06T23:26:40.257109Z",
            "url": "https://files.pythonhosted.org/packages/98/81/e3c2e0f2a7e2380250490ed526851ebdfa0af825512fb30c2f2fe7bd6f04/aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2963f17ce51381cdf75390d1d01f13cd7c4836c4dd8b75c0d4f7837cfabcafca",
                "md5": "7cd74f4a6d013b4b74ff4029ebf6987b",
                "sha256": "c22689c33fe4799624aed6faaba0af9e6ea7d31ac45047745828ee68d67fe1d9"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "7cd74f4a6d013b4b74ff4029ebf6987b",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 2096691,
            "upload_time": "2024-07-06T23:26:42",
            "upload_time_iso_8601": "2024-07-06T23:26:42.382989Z",
            "url": "https://files.pythonhosted.org/packages/29/63/f17ce51381cdf75390d1d01f13cd7c4836c4dd8b75c0d4f7837cfabcafca/aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d3de7bb51c7bcf8aceaba6b72656031708faf2eed8c5f237143a4a381f4dc1c8",
                "md5": "23d385ebd054a4441249c7b4ed409441",
                "sha256": "3976b75e82d83742c8b811e38d273eda2ca7f81394b6a85da33a02849c5f1d9d"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "23d385ebd054a4441249c7b4ed409441",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 2149914,
            "upload_time": "2024-07-06T23:26:44",
            "upload_time_iso_8601": "2024-07-06T23:26:44.403164Z",
            "url": "https://files.pythonhosted.org/packages/d3/de/7bb51c7bcf8aceaba6b72656031708faf2eed8c5f237143a4a381f4dc1c8/aioquic-1.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fc40e946f3e28a803f2e553e710b0902dd8f2b6992801b1eec8d7c383f597715",
                "md5": "e94b01afec14c5294cea67c9abde8ca7",
                "sha256": "cbe7167b2faee887e115d83d25332c4b8fa4604d5175807d978cb4fe39b4e36e"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp310-pypy310_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "e94b01afec14c5294cea67c9abde8ca7",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.8",
            "size": 1530487,
            "upload_time": "2024-07-06T23:26:46",
            "upload_time_iso_8601": "2024-07-06T23:26:46.233497Z",
            "url": "https://files.pythonhosted.org/packages/fc/40/e946f3e28a803f2e553e710b0902dd8f2b6992801b1eec8d7c383f597715/aioquic-1.2.0-pp310-pypy310_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e47dffd7c68b32076880cff123ffec11ad2bd30880f0a7170e9d3891e6cd0d87",
                "md5": "4ca5b9b5f1fba97471181bddb98a9379",
                "sha256": "f81e7946f09501a7c27e3f71b84a455e6bf92346fb5a28ef2d73c9d564463c63"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4ca5b9b5f1fba97471181bddb98a9379",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 1752876,
            "upload_time": "2024-07-06T23:26:47",
            "upload_time_iso_8601": "2024-07-06T23:26:47.748832Z",
            "url": "https://files.pythonhosted.org/packages/e4/7d/ffd7c68b32076880cff123ffec11ad2bd30880f0a7170e9d3891e6cd0d87/aioquic-1.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d54e0bb2929413024855281b076056f0aba23fd577c4915ffebee92413917a95",
                "md5": "15ad5eac25e45913f63cd993d3295964",
                "sha256": "e2c3c127cc3d9eac7a6d05142036bf4b2c593d750a115a2fa42c1f86cbe8c0a0"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "15ad5eac25e45913f63cd993d3295964",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 2083053,
            "upload_time": "2024-07-06T23:26:49",
            "upload_time_iso_8601": "2024-07-06T23:26:49.136463Z",
            "url": "https://files.pythonhosted.org/packages/d5/4e/0bb2929413024855281b076056f0aba23fd577c4915ffebee92413917a95/aioquic-1.2.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "22f1691dc8d85aeeca249ac9d661bb69c262f97ea17eb1a7dfb6a2e9456f61b0",
                "md5": "ccb11ece278a31f486c445e75a5114d5",
                "sha256": "bb917143e7a4de5beba1e695fa89f2b05ef080b450dea07338cc67a9c75e0a4d"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "ccb11ece278a31f486c445e75a5114d5",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 2514828,
            "upload_time": "2024-07-06T23:26:51",
            "upload_time_iso_8601": "2024-07-06T23:26:51.368671Z",
            "url": "https://files.pythonhosted.org/packages/22/f1/691dc8d85aeeca249ac9d661bb69c262f97ea17eb1a7dfb6a2e9456f61b0/aioquic-1.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "abde8269cb6ab1789203ffcaa98653d7c0767adc0a9eba0f1ab0211db21aff0e",
                "md5": "360a12c9a28d80e3267a75a5f5ec15d2",
                "sha256": "1de513772fd04ff38028fdf748a9e2dec33d7aa2fbf67fda3011d9a85b620c54"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "360a12c9a28d80e3267a75a5f5ec15d2",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 2096686,
            "upload_time": "2024-07-06T23:26:53",
            "upload_time_iso_8601": "2024-07-06T23:26:53.641098Z",
            "url": "https://files.pythonhosted.org/packages/ab/de/8269cb6ab1789203ffcaa98653d7c0767adc0a9eba0f1ab0211db21aff0e/aioquic-1.2.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8c34d3c5327552617525baa4ab7a25512830aac3c99babe3905570b03309f231",
                "md5": "a03666489dba30e56b8142e1274d3f58",
                "sha256": "7dcc212bb529900757d8e99a76198b42c2a978ce735a1bfca394033c16cfc33c"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "a03666489dba30e56b8142e1274d3f58",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 2149911,
            "upload_time": "2024-07-06T23:26:55",
            "upload_time_iso_8601": "2024-07-06T23:26:55.057085Z",
            "url": "https://files.pythonhosted.org/packages/8c/34/d3c5327552617525baa4ab7a25512830aac3c99babe3905570b03309f231/aioquic-1.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bcab243b29dda190b287735a143ce748e8752e84c49d56ddef0c9a362a23c950",
                "md5": "18b31076dad92bdfebe4f6b03606edb1",
                "sha256": "e7ce10198f8efa91986ad8ac83fa08e50972e0aacde45bdaf7b9365094e72c0c"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp38-pypy38_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "18b31076dad92bdfebe4f6b03606edb1",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.8",
            "size": 1530515,
            "upload_time": "2024-07-06T23:26:56",
            "upload_time_iso_8601": "2024-07-06T23:26:56.806460Z",
            "url": "https://files.pythonhosted.org/packages/bc/ab/243b29dda190b287735a143ce748e8752e84c49d56ddef0c9a362a23c950/aioquic-1.2.0-pp38-pypy38_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "24fc626d26b967446cdadb29e6f74e00b650a78ea6a2fb11bc6976215d3232e7",
                "md5": "fb3a3e94fbdf76e39b9ba4cda4e876ed",
                "sha256": "6e418c92898a0af306e6f1b6a55a0d3d2597001c57a7b1ba36cf5b47bf41233b"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fb3a3e94fbdf76e39b9ba4cda4e876ed",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 1754233,
            "upload_time": "2024-07-06T23:26:58",
            "upload_time_iso_8601": "2024-07-06T23:26:58.801593Z",
            "url": "https://files.pythonhosted.org/packages/24/fc/626d26b967446cdadb29e6f74e00b650a78ea6a2fb11bc6976215d3232e7/aioquic-1.2.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aba50765c16e90d1b9847c03ff1740ebdc50b9a120a41ba7bf63871e1bfe7bcc",
                "md5": "99557815c255eb3c4cd8394944b3acff",
                "sha256": "81650d59bef05c514af2cfdcb2946e9d13367b745e68b36881d43630ef563d38"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "99557815c255eb3c4cd8394944b3acff",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 2083053,
            "upload_time": "2024-07-06T23:27:00",
            "upload_time_iso_8601": "2024-07-06T23:27:00.827594Z",
            "url": "https://files.pythonhosted.org/packages/ab/a5/0765c16e90d1b9847c03ff1740ebdc50b9a120a41ba7bf63871e1bfe7bcc/aioquic-1.2.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6a6659aed7ebf8701472cb89068ad9b873b8a24043994fe3ee127ea87e03a158",
                "md5": "a9412df2573abdefa45282dd0da0a60f",
                "sha256": "6371c3afa1036294e1505fdbda8c147bc41c5b6709a47459e8c1b4eec41a86ef"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "a9412df2573abdefa45282dd0da0a60f",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 2514819,
            "upload_time": "2024-07-06T23:27:03",
            "upload_time_iso_8601": "2024-07-06T23:27:03.132199Z",
            "url": "https://files.pythonhosted.org/packages/6a/66/59aed7ebf8701472cb89068ad9b873b8a24043994fe3ee127ea87e03a158/aioquic-1.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dc2393f1363dba7f351fed9a7e1ed807685af14bd1d81c1ce637fc6bea10dd81",
                "md5": "5fac0e5d93d051ef1d4ff0433b16f3bf",
                "sha256": "c332cffa3c2124e5db82b2b9eb2662bd7c39ee2247606b74de689f6d3091b61a"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "has_sig": false,
            "md5_digest": "5fac0e5d93d051ef1d4ff0433b16f3bf",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 2096687,
            "upload_time": "2024-07-06T23:27:04",
            "upload_time_iso_8601": "2024-07-06T23:27:04.499262Z",
            "url": "https://files.pythonhosted.org/packages/dc/23/93f1363dba7f351fed9a7e1ed807685af14bd1d81c1ce637fc6bea10dd81/aioquic-1.2.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "53501c7c6752e7492aa714b50b48430a625f13b0542a72e352be71719fc3000d",
                "md5": "48687ae27ec5628ee3d97581d54c9498",
                "sha256": "fcc1eb083ed9f8d903482e375281c8c26a5ed2b6bee5ee2be3f13275d8fdb146"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "48687ae27ec5628ee3d97581d54c9498",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 2149908,
            "upload_time": "2024-07-06T23:27:06",
            "upload_time_iso_8601": "2024-07-06T23:27:06.197520Z",
            "url": "https://files.pythonhosted.org/packages/53/50/1c7c6752e7492aa714b50b48430a625f13b0542a72e352be71719fc3000d/aioquic-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a56e57e97a0c52d061150e84cb89d7d07efe323e7d5bcb9b98ede21e6cb12eff",
                "md5": "9510ad5bb056b9c0dd907ee30316725e",
                "sha256": "f209ad5edbff8239e994c189dc74428420957448a190f4343faee4caedef4eee"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0-pp39-pypy39_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "9510ad5bb056b9c0dd907ee30316725e",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.8",
            "size": 1530522,
            "upload_time": "2024-07-06T23:27:07",
            "upload_time_iso_8601": "2024-07-06T23:27:07.981083Z",
            "url": "https://files.pythonhosted.org/packages/a5/6e/57e97a0c52d061150e84cb89d7d07efe323e7d5bcb9b98ede21e6cb12eff/aioquic-1.2.0-pp39-pypy39_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4b1abf10b2c57c06c7452b685368cb1ac90565a6e686e84ec6f84465fb8f78f4",
                "md5": "bd18d37358cfe6c703e7988b5bd77d9a",
                "sha256": "f91263bb3f71948c5c8915b4d50ee370004f20a416f67fab3dcc90556c7e7199"
            },
            "downloads": -1,
            "filename": "aioquic-1.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "bd18d37358cfe6c703e7988b5bd77d9a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 179891,
            "upload_time": "2024-07-06T23:27:09",
            "upload_time_iso_8601": "2024-07-06T23:27:09.301912Z",
            "url": "https://files.pythonhosted.org/packages/4b/1a/bf10b2c57c06c7452b685368cb1ac90565a6e686e84ec6f84465fb8f78f4/aioquic-1.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-07-06 23:27:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "aiortc",
    "github_project": "aioquic",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "aioquic"
}
        
Elapsed time: 1.29615s