Skip to main content

An implementation of QUIC and HTTP/3

Project description

rtd pypi-v pypi-pyversions pypi-l tests codecov black

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/usr/local/opt/openssl/include
export LDFLAGS=-L/usr/local/opt/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-0.9.25.tar.gz (165.9 kB view details)

Uploaded Source

Built Distributions

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

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

Uploaded PyPyWindows x86-64

aioquic-0.9.25-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-0.9.25-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

aioquic-0.9.25-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

aioquic-0.9.25-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (1.7 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

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

Uploaded PyPyWindows x86-64

aioquic-0.9.25-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-0.9.25-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

aioquic-0.9.25-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

aioquic-0.9.25-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (1.7 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

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

Uploaded PyPyWindows x86-64

aioquic-0.9.25-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-0.9.25-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

aioquic-0.9.25-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

aioquic-0.9.25-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (1.7 MB view details)

Uploaded PyPymacOS 10.9+ x86-64

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

Uploaded CPython 3.8+Windows x86-64

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

Uploaded CPython 3.8+Windows x86

aioquic-0.9.25-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB view details)

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

aioquic-0.9.25-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (2.0 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ i686

aioquic-0.9.25-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.8+manylinux: glibc 2.17+ ARM64

aioquic-0.9.25-cp38-abi3-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

aioquic-0.9.25-cp38-abi3-macosx_10_9_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.8+macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: aioquic-0.9.25.tar.gz
  • Upload date:
  • Size: 165.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for aioquic-0.9.25.tar.gz
Algorithm Hash digest
SHA256 70795c78905326d855c2ae524072234aae586c789b81292e272d021e9b0430a3
MD5 f0872238804f96e7a340d3e62a7c23d1
BLAKE2b-256 fc52f4c49edc3a94be870df52ecb5e5548ddc088174b933b0e8a225bdf729d50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 9852358f7bbb52c56e1151fa054505a3880f1d2cffef8a83a1bbb653a2faaab0
MD5 033cc1ff9083e22640480298fab9f30a
BLAKE2b-256 a59e37dd538f4db84d6d75bbaf4bba1038082fae4d4738fe7096b58f3a17e252

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4ab61fe290e3eed71e2f0ee1dd6916040adc087fc2d4f9dc0dfd037c09a6defc
MD5 178cab70c22265f6846b9af76ba6a526
BLAKE2b-256 83bb7fb5d8f401e69bcc40e88ebf13e2e127cab474cc6bc156ca5e4afe19d35f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 bac804af55b230acaebefc33eb04356df1844cc77da5f4a7f860cbe41052553d
MD5 2745638bd5cd0b6a012626c4e9b77857
BLAKE2b-256 c8ca1cb97215e878e2803faa45a461e02c759b01d1d9c61b370c39b6bdf75ce0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f73db85db29e35260f85961840d5089c3da3e404c6b7dfdaadbd9842a53c10a1
MD5 85bf9305ed8a42e0cb1298ca8a09af9f
BLAKE2b-256 c37b75c82893cbda71212d9bab2c1d0e34756c843ea147687ebaa0a74e76b371

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cbd60cec8cc8e134dc1e2ebb79047827298b84d3b5ff011c36ee101110da63b8
MD5 9a083c5d6fa017078e5e94c589f359fc
BLAKE2b-256 f23b79e29af0facc5470f777a303e42c3f7195ebafcd3af4a0e6620e81bcd3ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 0066c0867c7c78aad05cd1f7ebcc1a61b61f3dbc57e65823df26edc0098b6c75
MD5 0a59be0b1e54cd12d4eefda6ad3f8298
BLAKE2b-256 e0754a6cd56df4d8e80f2cedcf59dc3dcf864bb2f177d4466a65675dc7677af0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bb187080955b026da4d3c9ea5fa1be32c4413e27bd8e458f66d94bf9a2b42e72
MD5 d177e6cf029c40932582df6bd8042338
BLAKE2b-256 f23a21fe45f40f0a0b6374fb9851bd1907e0a14bccb49b79a956229bbd3b561b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4d4641eee9cdd05b9c11088077b376423f8ed148f198d491d72d8189596f1aaf
MD5 ae05e0b0e4c1aa30cedaec8a928ab79d
BLAKE2b-256 2c17079474e88dd58a654b371748aaf3a4e22ea093f4bdeb780b1ebd75d059a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d8637030a95f68454cdaa58c0a7d0cbee5eca1e694a5cb8d6c179846f7d4d86c
MD5 3a31ad71c5a040bb43fc121acf361592
BLAKE2b-256 d204e64e85d6ee74308a3f94e2d697453f74c535345091b97da2cbaa002f6286

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 45241ac5b9b6d4cd976109220dfecddc377d610d4675fffb69869bedcdfa841c
MD5 29207434ca754fcf9b5e2b7c28ac687d
BLAKE2b-256 d758c79eb5c1d287aedc896a927b59381fb3d20bd23caa0436ba7d8c41261b77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 7fb11167019d24ec9b5c62e40cef365a4911cd74f5fb23a1283d772e92c8ef7d
MD5 492426e05e85a9af624d20f9f451d1dc
BLAKE2b-256 1fe19f9cb6c2111100b0f6f9ab5c46d66e342e38cb00d6117acf91d210c8ef19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 827652aa7b52ac069fc1fc9b1d8308f6c19adcfb86cd7f563c0ce5be8b416ce9
MD5 7582cbf802707eb2e8e5635f1062ccb4
BLAKE2b-256 95c68f62c5596e30b8bf6ca4749097455150286840a170a131f06a957eb5b683

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3fad05736e0152e698a3fd18d421bab1a77f379ff085b953e306e53df00d0b9e
MD5 57b5ce5b784c61729c39472ad168fa3f
BLAKE2b-256 4fc835b1b117cd822e74ae6a1dba653940886757fb7dc69eae586316ad2dd025

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dd1cda94f7c5e1a4bb75a2f195c0f20839b54b014e3d81eeab47d6a625c7a761
MD5 6ba7823f0933758a29630ac5ca395379
BLAKE2b-256 a9e3a63a3f4300ae7fba519779a33dcd980ecb8f5157e79b0f1c83d5a3a9a5be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4d8b00e2fbf6fee5c9bb5e6d481f1d414f9a3318ae500f673470f6571f2455dd
MD5 4b2174bf09558873c6ed7cb43fb5e8bf
BLAKE2b-256 9ff8b23069425d4c784917b2b55f342b0c7bedbfbf12dc3a041fa212b9eb53bb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aioquic-0.9.25-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/4.0.2 CPython/3.11.7

File hashes

Hashes for aioquic-0.9.25-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 da07befc3fa186621a6ff34695d9bf51c803e49f6c02fec53f50c86b74cdd55f
MD5 18afe2dbb9b8586ab1842488d3d06ba5
BLAKE2b-256 102fd44ad84fb4fdee43827695ce26649be29fce5f728b617a8ff907c539677b

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for aioquic-0.9.25-cp38-abi3-win32.whl
Algorithm Hash digest
SHA256 18658be4dc06eb1cba9a7bbc80b716b25d3dcbfb89360575de9e2b66c0bee6a7
MD5 e14af0855b3f8640e1a592d932a0ddbe
BLAKE2b-256 a79a05695ba7c1a00b4fcaf6727565e589305842bfd808f7bc73e6bc7feeafe4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7e4f592f0ad0d57753c7d3851f75041052528b76a7255011294b208c6a9e360b
MD5 c523c2b809890ffc04dfd513d62aa6bb
BLAKE2b-256 bc8c56d46285781da45a3b1d477d9497a0201595de6ff19feba013efa2dcc1d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7fd3b0e42e3dab1ca7396fbb6810deb3a0d9324bfc730fb4a7697de08f1b4dc3
MD5 b4d562ef873a820a61b579230f3ac73f
BLAKE2b-256 cceaa9adc93cce0b4c22742f735854c9d542c6b531bf779429c6af40f6f491b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9a7a69f4396540e38caf2cf3f69f42844a9130e3dac2590fd8713d5dc77b3a1f
MD5 a217cbf9ff5c5fa1ef0d80851071b6a0
BLAKE2b-256 abffb41b703563fd0f3fb64c18e4fceff60b95564147be1207a390830b30ca22

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a416579f78177ea3590fdb16933f6168f425f9109fcad00e09b3ac3f991d0bb
MD5 1801e50b0cd5a19b11e9bfb20149e241
BLAKE2b-256 f572aabbc30e9d26dc084ee34dfe22f732a9ca62e22e729bd617fa650c01b70a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.25-cp38-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4032a718dea1cc670379dcac15da6ee49440ffaffca565d4505c74f6ac56bb34
MD5 54c7856b0b0d954a339b170bc20120dd
BLAKE2b-256 94d8d3d562cb453d8f227f591d8e872ac58d4ce03d3c4526587d45ab5a412497

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