Skip to main content

An implementation of QUIC and HTTP/3

Project description

pypi-v pypi-pyversions pypi-l codecov

What is qh3?

qh3 is a maintained fork of the awesome aioquic library. 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 from native Python.

  • Remove the need for OpenSSL development headers.

  • Many, many more pre-built wheel for your convenience! Including PyPy 3.8 and 3.9 and musl linux distributions.

qh3 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. qh3 is regularly tested for interoperability against other QUIC implementations.

To learn more about qh3 please read the documentation.

Why should I use qh3?

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

This library is the lowest-level you can find on handling QUIC and HTTP/3. Here are higher libraries:

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

qh3 requires Python 3.7 or greater.

Running the examples

qh3 comes with a number of examples illustrating various QUIC use-cases.

You can browse these examples here: https://github.com/Ousret/qh3/tree/main/examples

License

qh3 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.12.0.tar.gz (818.6 kB view details)

Uploaded Source

Built Distributions

qh3-0.12.0-pp310-pypy310_pp73-win_amd64.whl (269.9 kB view details)

Uploaded PyPy Windows x86-64

qh3-0.12.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (276.8 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qh3-0.12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (281.5 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qh3-0.12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (269.3 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

qh3-0.12.0-pp39-pypy39_pp73-win_amd64.whl (270.0 kB view details)

Uploaded PyPy Windows x86-64

qh3-0.12.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (276.8 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qh3-0.12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (281.5 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qh3-0.12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (269.3 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

qh3-0.12.0-pp38-pypy38_pp73-win_amd64.whl (269.9 kB view details)

Uploaded PyPy Windows x86-64

qh3-0.12.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (276.8 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qh3-0.12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (281.5 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qh3-0.12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (269.3 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

qh3-0.12.0-cp37-abi3-win_amd64.whl (269.6 kB view details)

Uploaded CPython 3.7+ Windows x86-64

qh3-0.12.0-cp37-abi3-win32.whl (266.6 kB view details)

Uploaded CPython 3.7+ Windows x86

qh3-0.12.0-cp37-abi3-musllinux_1_1_x86_64.whl (370.4 kB view details)

Uploaded CPython 3.7+ musllinux: musl 1.1+ x86-64

qh3-0.12.0-cp37-abi3-musllinux_1_1_i686.whl (367.9 kB view details)

Uploaded CPython 3.7+ musllinux: musl 1.1+ i686

qh3-0.12.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (367.6 kB view details)

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

qh3-0.12.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (363.4 kB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

qh3-0.12.0-cp37-abi3-macosx_11_0_arm64.whl (277.3 kB view details)

Uploaded CPython 3.7+ macOS 11.0+ ARM64

qh3-0.12.0-cp37-abi3-macosx_10_9_x86_64.whl (272.5 kB view details)

Uploaded CPython 3.7+ macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: qh3-0.12.0.tar.gz
  • Upload date:
  • Size: 818.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for qh3-0.12.0.tar.gz
Algorithm Hash digest
SHA256 b9237440a2bfcf4f6525ec11b70a042f04f3b01bed119e0242360660e3f018b5
MD5 259fb8339724dda6671a6c489825164d
BLAKE2b-256 e82b54c3edcaa808f6429a6d13181cfac58553a38cc03f55f8be94b979abb369

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 cbf967ce12685a3ef03abd14d5939f990e92af0c81a3229d8a943518675a674c
MD5 59dff38d6eaab5ef7eeb74a561f22d56
BLAKE2b-256 f5e426bf5af6f5e5ac4515b9899122112abab2b06f02b34fce41599d55dc6c42

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 40cc6c0abf978c7423b2a8232ae79e8a50c3893bfe7864819d5526a56b3c033b
MD5 1bda346005a5777b85de03eb09b160d3
BLAKE2b-256 8a32de6f12cd3d6558a05070ac9b2f3a692d010e04e8ae278ce5b971efb05e8c

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0f5a981347a208e94ffaf98e90ed9c24cc3228e00ce536c538821463ef21ec41
MD5 b0f0f7a967bb4b0f6d0b81f72f1cd9a5
BLAKE2b-256 a32dd42afe90042ca22712e038a0c4055e9dc4a8bcb40e141daf4543dd766e1a

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cddbc78afce5cedb8b26b23bf83e89f9e36398713672f34e8f61c194dbee9cb3
MD5 2a1089cdfab1b271d5b796494d98bd8b
BLAKE2b-256 087fba57857acb093ce125798c17f3794e829c47197c7808b61f1048b1377538

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp39-pypy39_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 dedebcdd272b008b9873dd962c2b1f5a95ff1748e02790b4184a03b03a7951ea
MD5 4fae0f88e2fe53ec9124fe76d26abd33
BLAKE2b-256 5c0b9d1c09cd952e10881ec227b233c6448d6b05922ce47192a4b010741692f7

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ed8e6d8bb98cbc7c914f18fa7320eb84e955bce16efff07b405a1d056543fd23
MD5 5f552a022ff71465321c3668c7335cd2
BLAKE2b-256 ab0ca21bdd962b111cbd01fe5b4a45b921b776d58a9fc39979b93c695b061d4f

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 23aabbf12dc1ce0704502e7b9a419582e7555bbee58db609aedd61387d05e27a
MD5 aba97bb8b2804752ee0a0460c0969fe3
BLAKE2b-256 163b8faf85f9f12a8d418a3bbc4650ee11c36d6ebd0897b387f4385b1486de34

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d785198d309f89d432f973b1c979075f4e3ff2dbc083d6ef63ee95897a89f743
MD5 fce1bfa0e4556e9655845cf32f3ed545
BLAKE2b-256 32a5121810f03397e60df776c90e22b59c0203337ba438659e23451ae0291052

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 3bdcc437f9aa92369fedb99289ec3dc08e93cfed9f1038172adfb54321fe6187
MD5 7c0ae219d643b7a533bdd69583cf1cba
BLAKE2b-256 6cc15122272f64cb602cdc1b3ef4064cf2bdd2348bcf232971e9e2e996d20b89

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 538cc56de4942b85ce289047570374593ad3233b4337d9e750c865f4683d8dd0
MD5 a0d3e9a068e48104106ce9d3d5dbe90f
BLAKE2b-256 9de5468f5257d4a0ac50c90dc1841c79ed175982747afddcede33f03d9e8777a

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c68083a13caef176db5f8ff5f3584e8e6ef7a4fe7a67004474a010799241c9e9
MD5 fdafe8290d6f20ec82cda6ccff50c89a
BLAKE2b-256 ae6e297839f792600d08d215ea21afbcbeda033ddd9be51d2bd5d56ac140721e

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cd44fed50597988597f7eb9b3ecd888612c9cfb11407e7203744e08db2f970b8
MD5 407c88c6e852b3e84f982e84941eec70
BLAKE2b-256 654650d2c9ae5f7ab4ae68315bb477672c22586333893237426d45d88180e7fd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qh3-0.12.0-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 269.6 kB
  • Tags: CPython 3.7+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for qh3-0.12.0-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2e7f59649ed63f2e2cb006b1c830400b2688bf43b031ed67847cbd79ab31acc9
MD5 17d868636315f8e887da26bdec39c192
BLAKE2b-256 164acd34cadb572ca8b4a7fa0471b3e5c6dfe4dfe63b9fde7f01ca0804a72c64

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qh3-0.12.0-cp37-abi3-win32.whl
  • Upload date:
  • Size: 266.6 kB
  • Tags: CPython 3.7+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for qh3-0.12.0-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 479d5c5596a3eaffafc01accfe48983d16f323660af48d4dbd691e77e4ce5e80
MD5 72b93789d2263c839e34e9ce36faac21
BLAKE2b-256 30ef7b19252dae6b3546cc8d44047bd4b2244a95006aeab086ab257c5c022496

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-cp37-abi3-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 63fa1eb3e7b9333946f253e77156ef08b570ba196e8b25a3dacfa66869030625
MD5 3cca7bf6e9f6b12155c033ea3113d497
BLAKE2b-256 88c1b538be26c6eab81c807493b33b45473a91f7bcc394cfb1f821a73a3c3235

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-cp37-abi3-musllinux_1_1_i686.whl.

File metadata

  • Download URL: qh3-0.12.0-cp37-abi3-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 367.9 kB
  • Tags: CPython 3.7+, musllinux: musl 1.1+ i686
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for qh3-0.12.0-cp37-abi3-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 12bfc436f1a40deef652e034002529d8fbd6d41a8f6c4e32220695de1ab4671a
MD5 69787c4e7b91335ca9b546ff5e96aeba
BLAKE2b-256 21d63c746f7b4cc2eb10e5a22a069867f3ecdc404d71c8e914df16a0823df585

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.12.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 700871fcde6670e5cd8f5d56185985201c2b1ddb1f0536127dc9b54c4001281b
MD5 bf75bb78df36aff88d68040eaaee2007
BLAKE2b-256 59572f4cc357faba84b8b2d028a685905c8402f82106e5bccfae613d98895065

See more details on using hashes here.

File details

Details for the file qh3-0.12.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for qh3-0.12.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2c5c0914035ee2b2fe637caa3d510b99f57504e0d7c6be968adb5a88117110e8
MD5 e7ca1a397d8985945ecd3814de83f1d7
BLAKE2b-256 45f516e391034b804d52cef38fc62d580d6d53fdc3b3e3d2a404c68ecb83a057

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.12.0-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 92b07040ea9a85a690d49c3a983be09f55200e2d18e1edf595798192cf5eaf94
MD5 49e0077691d21138ce0d396de7558413
BLAKE2b-256 3169ea0508a75e70a770e2653704ae0563921c0f5d1c47ad5b907707b7f0c93e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.12.0-cp37-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3587f98cca00ca61de4b3973c5bb2a9dd54450a41382f3a596b46052217b9a3f
MD5 f4cf4a87f1d8445a1d7cf13fe342a9ac
BLAKE2b-256 f0fa9e67d31eb665389024ee3a5894e2927a962eeee1be2ad6e35d46faa9e4c7

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