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.

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:

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.3.0.tar.gz (181.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-1.3.0-cp310-abi3-win_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10+Windows ARM64

aioquic-1.3.0-cp310-abi3-win_amd64.whl (1.7 MB view details)

Uploaded CPython 3.10+Windows x86-64

aioquic-1.3.0-cp310-abi3-win32.whl (1.3 MB view details)

Uploaded CPython 3.10+Windows x86

aioquic-1.3.0-cp310-abi3-musllinux_1_2_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

aioquic-1.3.0-cp310-abi3-musllinux_1_2_i686.whl (2.4 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ i686

aioquic-1.3.0-cp310-abi3-musllinux_1_2_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

aioquic-1.3.0-cp310-abi3-manylinux_2_28_i686.whl (2.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ i686

aioquic-1.3.0-cp310-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.26+ x86-64manylinux: glibc 2.28+ x86-64

aioquic-1.3.0-cp310-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (2.8 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

aioquic-1.3.0-cp310-abi3-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

aioquic-1.3.0-cp310-abi3-macosx_10_9_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10+macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: aioquic-1.3.0.tar.gz
  • Upload date:
  • Size: 181.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aioquic-1.3.0.tar.gz
Algorithm Hash digest
SHA256 28d070b2183e3e79afa9d4e7bd558960d0d53aeb98bc0cf0a358b279ba797c92
MD5 58822aa87ace0c23cb7e507440eb6f00
BLAKE2b-256 6b0c858bb02e0ff96b40735b09ed7be25690197851e4c1bcde51af3348c851fc

See more details on using hashes here.

File details

Details for the file aioquic-1.3.0-cp310-abi3-win_arm64.whl.

File metadata

  • Download URL: aioquic-1.3.0-cp310-abi3-win_arm64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.10+, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aioquic-1.3.0-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 9d15a89213d38cbc4679990fa5151af8ea02655a1d6ce5ec972b0a6af74d5f1c
MD5 331239f90307550338634dab18ffece6
BLAKE2b-256 4360a8cb5f85c5a6a3cc630124a45644ca5a0ab3eecae2df558b6e0ab7847e1c

See more details on using hashes here.

File details

Details for the file aioquic-1.3.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: aioquic-1.3.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aioquic-1.3.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2d7957ba14a6c5efcc14fdc685ccda7ecf0ad048c410a2bdcad1b63bf9527e8e
MD5 53889d0749023f431f5931a38f196018
BLAKE2b-256 82454e47404984d65ee31cc9e1370f1fbc4e8c92b25da71f61429dbdba437246

See more details on using hashes here.

File details

Details for the file aioquic-1.3.0-cp310-abi3-win32.whl.

File metadata

  • Download URL: aioquic-1.3.0-cp310-abi3-win32.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for aioquic-1.3.0-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 ba30016244e45d9222fdd1fbd4e8b0e5f6811e81a5d0643475ad7024a537274a
MD5 1e14001f0a78dd5df2b1e57b3fa82f32
BLAKE2b-256 23f27b1908feffb29b89d2f6d4adc583e83543cd559676354f85c5b4b77a6428

See more details on using hashes here.

File details

Details for the file aioquic-1.3.0-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for aioquic-1.3.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a8881239801279188e33ced6f9849cedf033325a48a6f44d7e55e583abc555a3
MD5 1a6b8d7b2139c5459f9028378de0ff0e
BLAKE2b-256 bcf43c674f4608883e7fc7212f067c599d1321b0c5dd45bda5c77ab5a1e73924

See more details on using hashes here.

File details

Details for the file aioquic-1.3.0-cp310-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for aioquic-1.3.0-cp310-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0538acdfbf839d87b175676664737c248cd51f1a2295c5fef8e131ddde478a86
MD5 a09c724dde6b2980940e2b100f86b305
BLAKE2b-256 5250b421e7aedff4a96840bf8734c2c11c18a8434c780c0cb59dff7f0906cee8

See more details on using hashes here.

File details

Details for the file aioquic-1.3.0-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for aioquic-1.3.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 48292279a248422b6289fffd82159eba8d8b35ff4b1f660b9f74ff85e10ca265
MD5 31923c4ea6e4ea2e4143b50e406f2d16
BLAKE2b-256 87bea141aafe8984ed380e610397d606a9d9818ef30ce352aa9ede048a966d81

See more details on using hashes here.

File details

Details for the file aioquic-1.3.0-cp310-abi3-manylinux_2_28_i686.whl.

File metadata

File hashes

Hashes for aioquic-1.3.0-cp310-abi3-manylinux_2_28_i686.whl
Algorithm Hash digest
SHA256 4098afc6337adf19bdb54474f6c37983988e7bfa407892a277259c32eb664b00
MD5 999b0d7c9e2de2ceb94e6761d6328c99
BLAKE2b-256 d57af020815b9fa6ea9b83354deb213b90a25fd01466f5a8e517e1c0e672be8c

See more details on using hashes here.

File details

Details for the file aioquic-1.3.0-cp310-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for aioquic-1.3.0-cp310-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 396e5f53f6ddb27713d9b5bb11d8f0f842e42857b7e671c5ae203bf618528550
MD5 a4e00fd6d10a7f7bf619d4ca06d465bb
BLAKE2b-256 b90066f9a2f95db35ccbe1d9384d44beae28072fceec6ca0ffa29f6c640516c2

See more details on using hashes here.

File details

Details for the file aioquic-1.3.0-cp310-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for aioquic-1.3.0-cp310-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 019b16580d53541b5d77b4a44a61966921156554fad2536d74895713c800caa5
MD5 bbda74b69182ead7358b8881da2a2928
BLAKE2b-256 a865383f3b3921e1d6b9b757bff3c805c24f7180eda690aecb5e8df50eb7b028

See more details on using hashes here.

File details

Details for the file aioquic-1.3.0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for aioquic-1.3.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 48590fa38ec13f01a3d4e44fb3cfd373661094c9c7248f3c54d2d9512b6c3469
MD5 5af7a1cb0e9fe386afa7fa66f9165c0f
BLAKE2b-256 9eeaac91850a3e6c915802d8c0ee782f966ddfaeed9f870696c1cdb98b25c9a1

See more details on using hashes here.

File details

Details for the file aioquic-1.3.0-cp310-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aioquic-1.3.0-cp310-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 59da070ff0f55a54f5623c9190dbc86638daa0bcf84bbdb11ebe507abc641435
MD5 bfcd10dc20d55e938dad119f7b7a9d1e
BLAKE2b-256 c7419a6cf092f2d21768091969dccd4723270f4cd8138d00097160d9c8eabeb8

See more details on using hashes here.

Supported by

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