Skip to main content

An implementation of QUIC and HTTP/3

Project description

License Version Python versions Tests Coverage 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.

QUIC was standardised in RFC 9000 and HTTP/3 in RFC 9114. aioquic is regularly tested for interoperability against other QUIC implementations.

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.

Features

  • minimal TLS 1.3 implementation conforming with RFC 8446

  • QUIC stack conforming with RFC 9000
    • IPv4 and IPv6 support

    • connection migration and NAT rebinding

    • logging TLS traffic secrets

    • logging QUIC events in QLOG format

  • 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:

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:

sudo apt install libssl-dev python3-dev

On Alpine Linux run:

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

OS X

On OS X run:

brew install openssl

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

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.

choco install openssl

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

$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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aioquic-1.0.0.tar.gz (170.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

aioquic-1.0.0-pp310-pypy310_pp73-win_amd64.whl (1.5 MB view details)

Uploaded PyPyWindows x86-64

aioquic-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

aioquic-1.0.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

aioquic-1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.5 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

aioquic-1.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (1.8 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

aioquic-1.0.0-pp39-pypy39_pp73-win_amd64.whl (1.5 MB view details)

Uploaded PyPyWindows x86-64

aioquic-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

aioquic-1.0.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

aioquic-1.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.5 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

aioquic-1.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (1.8 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

aioquic-1.0.0-pp38-pypy38_pp73-win_amd64.whl (1.5 MB view details)

Uploaded PyPyWindows x86-64

aioquic-1.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

aioquic-1.0.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.1 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

aioquic-1.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.5 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

aioquic-1.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (1.8 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

aioquic-1.0.0-cp38-abi3-win_amd64.whl (1.5 MB view details)

Uploaded CPython 3.8+Windows x86-64

aioquic-1.0.0-cp38-abi3-win32.whl (1.2 MB view details)

Uploaded CPython 3.8+Windows x86

aioquic-1.0.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ x86-64

aioquic-1.0.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (2.1 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ i686

aioquic-1.0.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.5 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

aioquic-1.0.0-cp38-abi3-macosx_11_0_arm64.whl (2.1 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

aioquic-1.0.0-cp38-abi3-macosx_10_9_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.8+macOS 10.9+ x86-64

File details

Details for the file aioquic-1.0.0.tar.gz.

File metadata

  • Download URL: aioquic-1.0.0.tar.gz
  • Upload date:
  • Size: 170.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for aioquic-1.0.0.tar.gz
Algorithm Hash digest
SHA256 ed31c2b5afa98c5b6cafa4f36149deaf1dff6c5a69701eadd27167415f9f1660
MD5 3ba6df316777b36a158a799e09ef130e
BLAKE2b-256 f70dfe2fce2a7d0603eac42200079a4ab1bd9b7c1259f7e2bb4bef5eeb886ae4

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 7bcaf62b1727eb4187f8167e0827224b047eda4010d3d6c2f451edf5beb9f8e1
MD5 b431d464792165ff104f5ab3d438653b
BLAKE2b-256 da1a334ae1cc5af814a35078c6089482fd5206295a3392075b1760179242bcd7

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 27a372943b95b4ecf7dd5091640cf55e685a27fba55f5b2d14c6f0efb0a8da6a
MD5 1fbc4e464366d7d83eee6d20dbc071fb
BLAKE2b-256 d570ef7d5b6df31018b39c61671db69821758064c8dc8d0a846d052b2821f278

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 49693b883ffaba31b47a59b3d3f22486299afbc7162711271e225aae18bc703b
MD5 7a7d7da65b7edda900e8457b328d7a26
BLAKE2b-256 2226f57a0d83047c398a2d775d65075c29bf9d115e9a0f18fc50ca13789a985f

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2848b4bd3d7e59baa4aa164af325fad4aa14fb5071c8082419a9881aa78cfe42
MD5 39a948803b65aef1ff2ce5eb02544f72
BLAKE2b-256 de23ea3958a1dcbc100908049a8615f61ff26c41e4baa2169d8e9eb2094a753e

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8656a70d352bdc580f8433ffd32566d1868e5be8ff4abade6a2fd858a3dcc0c0
MD5 9c58289c70b90c67fa38a8b6b8f2e244
BLAKE2b-256 6fa0b6275dfc80950561f7ecc210df50e772011a69c77f270d13faa58c20acc8

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp39-pypy39_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 0697ee1c293296e9673ed03888ce5eed978d0070edbdb7b7ec53ea84162f64ed
MD5 bd76a8dc994a71a282f537a052589c7f
BLAKE2b-256 8a9e6ceaa1ed80329f34f266541405f550f157f464a7449dbe55574c3018684e

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9cc4a5319729ea19c407b5f301cc1692c3c887bbbd5d9fc715445843129fa689
MD5 a4ad9f61b8e5a5a78fcfa1e224abeb1f
BLAKE2b-256 a051634714714a2d1b0e9d6d634dbc635968a59fb0c8c3f376afd8bde5984330

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 195ea3b15d6d2874afea641b2b0ba3eb3b598810ccff1646fa2bb0f1a2f79fde
MD5 eb0eeed9b200b1c189e88391a845ac44
BLAKE2b-256 fd91d1ce85b6a5a54eb956694ea1f439f6d92032797952273ca8c20682f30861

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 67d169567d5deb6b6ade67b08520f713b20406724e32102fc257bcb153e4bc2f
MD5 2f7d8283fc6d2200759353063fcf1a50
BLAKE2b-256 7fb462c01a684a25ed18f5c1585db0b0304362e8c4dc9b8d87168ce40b638d99

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bfc4cbf8a40952b6d3916b21101b2d36f3be96ca670f28ffe6315f1947958325
MD5 d46fe14028ce0aa542a0208d576cb141
BLAKE2b-256 baeeb78d6e2695e9faebe91225ac6ec38967df9f077d6f0c9e2f504b9941a3a8

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 9509fefef63abd9956832fb52f2f2ec8bf90a8767126d19c868409dc6ce5f1a5
MD5 3c65eec694aa057619a84a50b26a2baf
BLAKE2b-256 f97b520c3a336bb43fcce2e4e7252480d8a52908048a78d2604ea1c65b6b02d8

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 948d1f524057f1675c1cb5f77aaa29f32073bfb77ede810ecbbb798cd2f5b551
MD5 b6c8a79b802c68eeed6a3f1452771950
BLAKE2b-256 490d72c610f98983d09c9bcac87f3928e321fe1f5fa9f51b8e6166a893dbf449

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 741949d0feaded5ef0ba75b0b11e99f8d9e11ebe2a6516336a483bd4f7e6dd95
MD5 e2e797e0268fac1159d9937b5f0fcce3
BLAKE2b-256 568789c4a310fbaa0add5ab22075355150f2458a0d8f4e6ac1c6a20cde546985

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 abd3c01cf1079431d9b4a1740cb92e5d57d24cd7a5bed8d6b4af0ecf21176782
MD5 bab8dd935f576fc1605cb376f1c06e70
BLAKE2b-256 a6982ce364ae2b21970b38a873caec50c83095e81782c1d94e871db8a992abff

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 96798b8186f192155246c1d9d2662bbe1768aa11fb707418a6887b19f5ef8621
MD5 d19f002696b23e04bb94d8c2cfbbf0be
BLAKE2b-256 ba18eb21faa38fd713cfaae21dec5f86d73e050c8e3ae2206916ff619cda3a32

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: aioquic-1.0.0-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for aioquic-1.0.0-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 c4cf8069e6ef3065a9888a81a0f8fa2ac21dc4f88833c910567c16fc3846f1f6
MD5 0d5b11e5a8b09aba1399644cfad2914d
BLAKE2b-256 b87b4da9a13cbce748d598da85ec005fe028c82c617d3ed035d7f7d9e042aa70

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-cp38-abi3-win32.whl.

File metadata

  • Download URL: aioquic-1.0.0-cp38-abi3-win32.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.8+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for aioquic-1.0.0-cp38-abi3-win32.whl
Algorithm Hash digest
SHA256 47f33359929bf7255afe63ceaeed120fa8ba25cfa78b4a85dff1afb7bb4519d0
MD5 d83136d85d9bdb299ef6abd74f10128b
BLAKE2b-256 9cac45d837c53e2d4f1fcb3d89df6fece2f806f89a0b2df50fa2c58f6db3f861

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 45076b6fa4e4e7bf7e812effa68427746626b1d6d8d894d41b60c3ef2c7f79d2
MD5 36e670d0e11b93dff25b775f62e136c5
BLAKE2b-256 3f9563eee9cea97bee18656b82ef023147ee1a188522e1142e0668bf6421417b

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 78a0492d1d122d8aa399a0168b37aa2390500c9719117750b213fd16187475da
MD5 9df947d19bcf8d6dc88160ee09d973bb
BLAKE2b-256 b6bb74170dcf7180c3071e3a93f8431dc340f5112707b4cf8bcfda94f939f3fc

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 188feedbc4eb7062cfda5095b372261dffa73e08e570fd6d72c65d7760792266
MD5 4482a07acb421b18f2622075e48f713d
BLAKE2b-256 8f1d5e43106f7efff3de3168dafb7a90eb1c421a5f010baa9004624bd2bae5ca

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d3f3a89f92fb23df4999c8216b4fed8a7e08a760dad5fcc9cecae436d8d90343
MD5 4cda20eea816b34d4082e375ea8c8d4e
BLAKE2b-256 f40a2de36658ae66401f0a4162ebfd11cf538edd2ac45940baffd91af54b7a46

See more details on using hashes here.

File details

Details for the file aioquic-1.0.0-cp38-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aioquic-1.0.0-cp38-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8ea030d2edf6f8bf37c57b3c25929b405af4d5f0f71ac122ca3f60a5bbebe9b1
MD5 2309705cb820790e0d9948e79ea8e00e
BLAKE2b-256 075010668288dcf059708358af079caeda3c3fb5119a1183fbba4cd15cb45c94

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page