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 qh3?

qh3 is a fork of the awesome aioquic library pending its author return. Important changes / improvements are: - Made abi3 compatible, no need to build the wheel all over again on each interpreter version. - Only one dependency left! Cryptography will remain as long as Python does not ship with proper QUIC implementation. - Mitigated deprecated match_hostname. - Mimic load_default_certs ssl context.

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.7 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-Win64\include"
$Env:LIB = "C:\Progra~1\OpenSSL-Win64\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

qh3-0.10.0.tar.gz (815.8 kB view details)

Uploaded Source

Built Distributions

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

qh3-0.10.0-cp37-abi3-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.7+Windows x86-64

qh3-0.10.0-cp37-abi3-win32.whl (1.1 MB view details)

Uploaded CPython 3.7+Windows x86

qh3-0.10.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB view details)

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

qh3-0.10.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (1.7 MB view details)

Uploaded CPython 3.7+manylinux: glibc 2.17+ i686

qh3-0.10.0-cp37-abi3-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

qh3-0.10.0-cp37-abi3-macosx_10_9_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.7+macOS 10.9+ x86-64

File details

Details for the file qh3-0.10.0.tar.gz.

File metadata

  • Download URL: qh3-0.10.0.tar.gz
  • Upload date:
  • Size: 815.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for qh3-0.10.0.tar.gz
Algorithm Hash digest
SHA256 9cba6891c66c1c7c5d536ea4460febf152f3720db678a55f1826246fd94ccea0
MD5 52b5d18ab5d8db61734fffd50f895d21
BLAKE2b-256 56d6f2469af331d750209c25895fba1b720a6a34197a39b4f1a98040e8376ed9

See more details on using hashes here.

File details

Details for the file qh3-0.10.0-cp37-abi3-win_amd64.whl.

File metadata

  • Download URL: qh3-0.10.0-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: CPython 3.7+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for qh3-0.10.0-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 7a594b20ec305e3dec6a2e5fa377e62c4ef605ac111663a81f169a74415d0ebf
MD5 411d78fc9daf1ef7ddeed70d6e27f78d
BLAKE2b-256 0025e4da32e9b6be92e046a8905a8c1817f631ee79f099d852b3a03e729747bc

See more details on using hashes here.

File details

Details for the file qh3-0.10.0-cp37-abi3-win32.whl.

File metadata

  • Download URL: qh3-0.10.0-cp37-abi3-win32.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.7+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for qh3-0.10.0-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 1abdc13a8bf9721a0f14a4c0de2748312e5cac66f199a572a6a010f8318f4f37
MD5 222b4e6b157755ffc34c419599eeadfe
BLAKE2b-256 d502fb98d69c4f6d2bc4623e061fe46249aca94643da8a46962d70a782986605

See more details on using hashes here.

File details

Details for the file qh3-0.10.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qh3-0.10.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c005bcd12de3d0d3d791127e6f9de8fbc2c79c6e2d0719a02da80165a6bd80fe
MD5 7c3143f618c205fdd311be628a0cdf6d
BLAKE2b-256 cbbf81f4c90fd307d08b0c35c5b3629f08936b0e99c3877f9eb64102c2172347

See more details on using hashes here.

File details

Details for the file qh3-0.10.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for qh3-0.10.0-cp37-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 06df0bcab0c1d1e51e641c7d8937d95ad6ccecb5e7f8796352dd8ac4732b4def
MD5 d9b22547c80e6718428035e869481515
BLAKE2b-256 41c510488223c5ca5399662a6240fb1ac1be675dc0603d0bc60b3dc6c2ddd7ff

See more details on using hashes here.

File details

Details for the file qh3-0.10.0-cp37-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: qh3-0.10.0-cp37-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.7+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for qh3-0.10.0-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4cea848c466a7b1255c33f9056e116c44df09439ccb8bbdd494b8452656a9e50
MD5 829395df814c5cb23fe2a4de5f7fb174
BLAKE2b-256 25f0192dcd129c54c67666972945db500919e78bff56ca864893dcf8d9eaa829

See more details on using hashes here.

File details

Details for the file qh3-0.10.0-cp37-abi3-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: qh3-0.10.0-cp37-abi3-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.7+, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.1 CPython/3.11.4

File hashes

Hashes for qh3-0.10.0-cp37-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b8ee026d0e1dc1b304b4f7ff98365aa7356ed5ed993bc5216daba96d6d785ed2
MD5 120d52e07ea70a69e66b289f5e90a6eb
BLAKE2b-256 90f33a54e6aa7b5535df2199219d8c894c103e0b7bfa9bd31c1964fc54c1dc00

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