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.23.tar.gz (157.4 kB view details)

Uploaded Source

Built Distributions

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

Uploaded PyPy Windows x86-64

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

Uploaded PyPy manylinux: glibc 2.17+ x86-64

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

Uploaded PyPy manylinux: glibc 2.17+ i686

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

Uploaded PyPy manylinux: glibc 2.17+ ARM64

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

Uploaded PyPy macOS 10.9+ x86-64

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

Uploaded PyPy Windows x86-64

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

Uploaded PyPy manylinux: glibc 2.17+ x86-64

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

Uploaded PyPy manylinux: glibc 2.17+ i686

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

Uploaded PyPy manylinux: glibc 2.17+ ARM64

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

Uploaded PyPy macOS 10.9+ x86-64

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

Uploaded PyPy Windows x86-64

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

Uploaded PyPy manylinux: glibc 2.17+ x86-64

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

Uploaded PyPy manylinux: glibc 2.17+ i686

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

Uploaded PyPy manylinux: glibc 2.17+ ARM64

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

Uploaded PyPy macOS 10.9+ x86-64

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

Uploaded CPython 3.8+ Windows x86-64

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

Uploaded CPython 3.8+ Windows x86

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

Uploaded CPython 3.8+ macOS 11.0+ ARM64

aioquic-0.9.23-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.23.tar.gz.

File metadata

  • Download URL: aioquic-0.9.23.tar.gz
  • Upload date:
  • Size: 157.4 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.23.tar.gz
Algorithm Hash digest
SHA256 52c9da60ed0837fe8b8a6a0d7dcf0dfbebec8e9a027e10ebf7204f0569c58fa8
MD5 dc18788687c2ccb8f42977621d097e9b
BLAKE2b-256 637bdc787b7406f0d878a076904e63e5019c1bd3545882c653b5cdd022d1ef97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 8baa3c20b8a7619dd4fc4ddd45496da6a7940286a0d4f0aeb2e3eb6e8e171d2f
MD5 b804f34860b20c3dbd88066c11d2fc12
BLAKE2b-256 c0d095cf2803ca8151157ccb48b3997dc01c19f49718fda39b969559fcb6af41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f2c5e47accca5b7f5bf3c1c7e21507f3d92091ae1a3e6f3dd278698341fe9622
MD5 92b3ff93f88c23f68cd5ddc4cd9e1b18
BLAKE2b-256 4dcd615b6a4532e87844720f6f15d1cafe3ce6be1328bcc2ce7ff47514ae423c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c1df6c552f381cdd0cbfb85da461f05f350f0625e3cc3bfd9c0a28216a72be3a
MD5 d4c764213071a0363166291f0f521829
BLAKE2b-256 1730f46d43d1488815dd9cfc76c8d82d3de937ce35d00b42920139ed0da3ce9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e335453fed169a83af1e03a18a2a523bad02ae6f5c5048091e28ef1de124df97
MD5 4ff85e74044910f9239f8bda55c874cb
BLAKE2b-256 4781ceedcd07ea14c13737fca612ac440936a43a22e0995bed865c936f98e2fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7bb5930f374bd3c7fad9bf8d823a0dcc51752c3b3e5dbf1b42f1804df49c4343
MD5 aa2a43324f0d84d58931ff90dbe4588c
BLAKE2b-256 10146262bae30ceb3a79db99629e77b0c69434c43982889cd6626d2a95f87a12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 1ce9f56ba54022b0953621232ed0775e91eff29c53f4a6fb0149abbff15f6c71
MD5 7e5cc4e8c5e8bb3500d9c44481580c7b
BLAKE2b-256 ecac338b808f17fc004792e534f4a2cd6466494762dbbbbdf3ac67c06b34fd57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1d86deaef3bf72581c165f54a74f4d70caaf5a442756f4b4c07c279cb734f69a
MD5 837be2808faf31a5f469e90353430552
BLAKE2b-256 3a8c420b489d5fc1f89db4780de8b9ed0ebcfa6aff7ec83d3cf8ef03c1f418e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 54e1126813bf180801f2d192892383391e609b9748a43bf3c19d4a263577735c
MD5 c8ee6281cae037dfddd08bc0471c3ba2
BLAKE2b-256 00b7a2693bcaef72c0965d41bd03a77c08e45434ea110530588460eca4b2d2fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 72e1ff2291322f9bc4d29c3ccb91505af665246eca0df1dbf5a0dd00d2ccf6fa
MD5 bd7d480e234cf383ad02a2530228f9b4
BLAKE2b-256 341431a13b8ac0d8e854b99a3693080c03996e87596105c033a6801bb7d974b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7932510524559d2eb5412d26cecadde2c1df79c7da4e7ea8f0732e66e95d0231
MD5 94075d252a0e668f5642e54e7f512870
BLAKE2b-256 9e06dc1fcd13a6c208e18024e9037da2f2d6af729d55f38fcfb77802bf095bc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 9a49e8534d30bcaca9d4c5ba042f662c0110fe798c3552e6a662946a8df9f569
MD5 a748b210454a6c61ce1d8bb51e86bc19
BLAKE2b-256 1549d8db343259d913a52ea9c59b3f7b14147d1d132b9e7c9cc034acd568b4ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1a06d91653fca2bc11ef58069fac921f162fc8f462ee2500ffbd789ff6768700
MD5 cf709307d6bc552ef2b4f2e770fbdcab
BLAKE2b-256 821470dd1ba3270da8d02eb3fc7528ec04e1409a684847be5bf3ce8a530c24c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c284efaa45d53fe272b488ef7f142781e36fc89048812c2cc8978b586f4dd5de
MD5 d7fb8e50e9da1a19f1778066cf0ea5de
BLAKE2b-256 ae5d47f83c05ab3d4042941c7b3f9f9fb20a61a8640cc183fc1277b2bf2cdd0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 96f46bf96df95c46f1b779ebd7ac896672f2daff60cc9de60b3e4b329d6e26b2
MD5 47888d9a19a83b604c5f9c3d3adc5cb0
BLAKE2b-256 152efae634bfeafa3ea8313b733daf388a5aaf9694a41449d8ada190e4070162

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 29e2df45378a02987c0c90ac888acc4080f762a593ccacb523cd9cd489555bb4
MD5 b55e9ce1de63168e5f5fc08f334a60ba
BLAKE2b-256 3e26d93a01ca88398504ca19d627fa9fd29a819f62221f8829ca444daf154176

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aioquic-0.9.23-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.23-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5c7bfd0c4bd51c945a15d553e15c61a0b36a5aff286f92c151ff16be8839d964
MD5 397ade0cc4f99319f5cc37cd9af5c031
BLAKE2b-256 f3d2d572e2fd3803f4d1d797961b110e9b0e98662cdee4fa496e88a954fbe9b3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aioquic-0.9.23-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.23-cp38-abi3-win32.whl
Algorithm Hash digest
SHA256 9be4d7562beabf7b4c6eb6366aaeea9615e9cc6b53411fad5cd9620629ca4b2a
MD5 7ca3155bfad26e51dd1b22f8db44f70c
BLAKE2b-256 54358d9337c24e4d5f1503d717dd65941cd2fb80c848f05b59c14c74f35a1c12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b65559878bf44d4e62edb3d0471be3ef4655575f91cf2abcd4eb9a85184e0844
MD5 91a758b3d20ce0cb3b55417bd7a6aba4
BLAKE2b-256 3e272682035ed2db46d58478a693d2334b0334477e79b6eba62628df489a9ee9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-cp38-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6483137e38c39bbcbbdd28c378e189fb4b2a689d6b5c700bdba5b15835c895b3
MD5 68501e5d7c2a82dd5dea3282be43bd99
BLAKE2b-256 02c9d34035da8f6ad895708293bdaaa8ffd1053c768cc4a124affdc483f20a17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a3adbb6363cf57c5a3e0a6afa9bfd5236840ffeb99b2cf4b4eb4acfd8b7459ca
MD5 059d25837de0db32ec5ca34187d9f1be
BLAKE2b-256 51cd1d4ce824069f398086b5c2a501597eaa5025a3bbacb07142dc9e2587bfb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b7fd0904ffee67d944ffa9b1b98975aa75676d73799ede7ed445f9bae6e425d6
MD5 17dd43aa6259b6c3d6c5d98e1fc084d4
BLAKE2b-256 a36279ea337a97a656c55b1b64268be2a781e6a1f0acfd187b9bd04083cac8e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for aioquic-0.9.23-cp38-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3c4d41a9bce144b5f783cce578aa6de3e185917270d43a875f017f7a5173c381
MD5 cec7f7ca2f52090fbda88b9b256443c2
BLAKE2b-256 9d83f811f802f1efd6a198d1e66c1816b7b0b3be257d1ac573ab53842b939585

See more details on using hashes here.

Supported by

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