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

  • QUIC stack conforming with RFC 9000

  • HTTP/3 stack conforming with RFC 9114

  • minimal TLS 1.3 implementation conforming with RFC 8446

  • IPv4 and IPv6 support

  • connection migration and NAT rebinding

  • logging TLS traffic secrets

  • logging QUIC events in QLOG format

  • HTTP/3 server push support

Requirements

aioquic requires Python 3.8 or better, and 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.22.tar.gz (156.2 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.22-pp310-pypy310_pp73-win_amd64.whl (1.5 MB view details)

Uploaded PyPyWindows x86-64

aioquic-0.9.22-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

aioquic-0.9.22-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

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

Uploaded PyPymanylinux: glibc 2.17+ ARM64

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

Uploaded PyPymacOS 10.9+ x86-64

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

Uploaded PyPyWindows x86-64

aioquic-0.9.22-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

aioquic-0.9.22-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

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

Uploaded PyPymanylinux: glibc 2.17+ ARM64

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

Uploaded PyPymacOS 10.9+ x86-64

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

Uploaded PyPyWindows x86-64

aioquic-0.9.22-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

aioquic-0.9.22-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (2.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

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

Uploaded PyPymanylinux: glibc 2.17+ ARM64

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

Uploaded PyPymacOS 10.9+ x86-64

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

Uploaded CPython 3.8+Windows x86-64

aioquic-0.9.22-cp38-abi3-win32.whl (1.1 MB view details)

Uploaded CPython 3.8+Windows x86

aioquic-0.9.22-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.22-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.22-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.22-cp38-abi3-macosx_11_0_arm64.whl (1.5 MB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

aioquic-0.9.22-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.22.tar.gz.

File metadata

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

File hashes

Hashes for aioquic-0.9.22.tar.gz
Algorithm Hash digest
SHA256 4015f60d865e101f3ddde86702cb11f9c5d889f5566020242c2a3d6706999c7a
MD5 c1c84eb016026c6cd7f0e06f3f9b073f
BLAKE2b-256 37c8bac80ecdc006fc54d1519684015b1f1a685b9d0157f325c1a841a1becd26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 b7c3abfe886335b8332d5a6db8323b140c37f401bbb67d316b2848b3e7548ad9
MD5 54434d6dd170e1288fbd711b91e87578
BLAKE2b-256 d5920ffd52f6edaa410054104fc7b1280940bf673043a2f5f7805fc81f5f01ca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 760f30da581b25dea8bae15745444f58037da519cd5a37f7020bd0fc5531eeb5
MD5 9ec27ba365f8f00febfed839b4ed8609
BLAKE2b-256 2e0db55dfb6071bc81dcacb1bb94a3a337c0cbdca282aa504a0e503b6ab19961

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ae571fd35e229a43bebc13734651677dd02382f03504b7a047acf27d2bea6c55
MD5 5203b643accec506489a862daaeddc3d
BLAKE2b-256 a3efca5340cd137dda3695a7b278cd52ea846f25562e5405a858a1d9c1218e4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 380d8fb350c76fa47a5c02ea119d48596d67217106a50fdb6d3de56ac3bc55c0
MD5 2bc7e47eecead43bcefe9f97165ccbfc
BLAKE2b-256 75ec406538565895829a6d8509ddaf4b6d78fcb3b44a6d63c3a59a1d9dc1e04d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3c075f2ce7d0a39ef635d95c1dc1d129cf0d396a55864fd920a7e45b701a8981
MD5 c0347200f69c02df01ede2a557a44db9
BLAKE2b-256 6f50c50013305ec68f9c086b123665e0bdcae772f51d700701d8b45492ff04ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 83973e88394a32916d6ac5c460f47b92b8acfbdcaa606c5eef529363632fd602
MD5 d7a7751885ec33128f330ecdce586370
BLAKE2b-256 27d2d3aac3a4456b366ccf08d470d5926612536455760112345d41a39ebb1313

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b1fc4f452a50e0a4e7443ecf1ad05714f66c3160623896ba5996bc9595d3b31
MD5 a317e780e163da38af856f4edb1eeea1
BLAKE2b-256 7cf5262b2746f04aa08a108043c5a8abac9e41960d75808dac5df1bc15b89b98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a617675be0a46b4b7d296ddfba2b0ca2706de6d59308bed6738f8cc1b58589a7
MD5 be06d95c26ba295369d4d559c83f2497
BLAKE2b-256 0b24809b6d72d02e778803e07805a4e73670da9fc9a0ffd298c28c1caf2c9608

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 810a89a229de2bad5d569e1fa595cee6f63a38ffff437ea6db22cdc12ccf5bc2
MD5 bdf0a040d52ef999113cd27d517b2b42
BLAKE2b-256 59ee25c5b030ae472aad03409f21326796e74368ee6520162c30f4a6daeff07c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d66cbb9d145caa612a0a875a031785fbf76a989be4f2c8f5a014233f8d66726a
MD5 d32ae41b0230f6b6191b241aa52515ec
BLAKE2b-256 6c805c4d9fdbfcee658bc3c70b3fa99cfe290158dc8ab2cea4085c34a1aa0dfb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 39a36802ecf6a131c9e7c7e3da3eb322b2efdb4eca682426f35876184da8fdab
MD5 4af8fdae385b9b17e57503c8b407e37e
BLAKE2b-256 946a5daa392bc9c3200282faf4e88eae1bdbf284cd7f5885c62ec2996b29db49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de24a51061509e945315a63579e06a6634727f0792ff42a699726a016ff24ec9
MD5 15bb18077b3cd439ece33df4880126d2
BLAKE2b-256 ef153516c94692be53fa2de007c45712b98dbf74e03281e19f56ec255f47eb2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 276b231ece0796d3ae7a8c8618c1d52d7e5977527a726442576ef1657f811e70
MD5 e3c51365a878c4c729fb3ec7e51e921f
BLAKE2b-256 10a189253061aaf02615ef0617b2d8b27a609a063927bb96aa211e8a6340a3ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 46cfc2681adfc047249d8219f1aee3bee23cb6ba35ececc53a17b01fa15c5fc5
MD5 8ab08cfa32524a1b861c847bd6a0b895
BLAKE2b-256 358bf6aa22576d4f344369bdbfaeaafed9f570e870bf2c37a805b22c6efa0eff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d0aef28b473bb10865888242efa6c9657a99d710340f5cafd4a56f600ec405dd
MD5 bb93c31376bb51536badf5d58749c8af
BLAKE2b-256 dad88e17368c3c70dde08fd84578e3ab259efe34e480522d7cfade400738423e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aioquic-0.9.22-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.6

File hashes

Hashes for aioquic-0.9.22-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 8bcd7aa40583587ab52341286f95f14eda801e86cebc305c957ee1b81ca8c26e
MD5 74757a8abefc5c8bf13d4579e46fc99a
BLAKE2b-256 163c2cbb88cd29d5839636809836a7a1fc29205eb9ba4daa06ff845a4f979e94

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for aioquic-0.9.22-cp38-abi3-win32.whl
Algorithm Hash digest
SHA256 e3d752a89e98e4b8970fc46b3e50f43e2532a366332a4940d2ea66c80e28420f
MD5 1849ff9f2afc75ef891ddc487bdf3dcf
BLAKE2b-256 f5903c6a7998543018afa9c276c9b8fce4ce744d017ef72bb84ba60870b8028e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4909f5df69e1f5c037985b88261e9c98dad0a4b4decd7401fcd006346768bdf1
MD5 609fb5ee20d8f029966d02ad31fc3cc9
BLAKE2b-256 c6d10c3adb7fc62d083f883f01e283283336ad9fc390687081634f864406a938

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 78e1bb349f468cf75307e931f637fade6960851acb216d4b66ecb18c4c9a2ebb
MD5 dfc3c2ef92990e9fdbb27623e74f650e
BLAKE2b-256 e3199bd4f7aaf207c73c22bcc65844506b01f423e0d3598d08a333cc32233fca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 cef1ba703c1d643660fb31c457fad201063b6fa16d624ca0da0f875c90db83c4
MD5 d403f1c57d2c866123ec3e61ab5f6567
BLAKE2b-256 7ce0cafdf8ef5decba0f24ffd5cfa28a6df64ad6e4c2c8af154eede0e8a470e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 060db00651fc9530c9c1428b8ddd16d5a1da2f7f12e9026d50f76858423bf7a6
MD5 718acbcde95619de18f2763fbb65d415
BLAKE2b-256 b03ab0ca0692c79972f70a418296af2d7178808df4f163012739a9597bb3af9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.22-cp38-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dd2d7e3a496ccfcd472c6534413ad811a1417e4e86fd69ca0a6e490fbdc69f0a
MD5 39fd785b4116af31f6a5063862f01da9
BLAKE2b-256 d9e29e68f13f34a30fd34894f5691cc62e52db0b787fcc668f261c70d4e32c13

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