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 aioquic library. It is lighter, faster, and more adapted to mass usage. Regularly improved and expect a better time to initial response in issues and PRs.

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 standardized 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 for 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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

qh3-0.15.0-pp310-pypy310_pp73-win_amd64.whl (252.5 kB view details)

Uploaded PyPy Windows x86-64

qh3-0.15.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (260.7 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qh3-0.15.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (265.0 kB view details)

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

qh3-0.15.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (256.1 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

qh3-0.15.0-pp39-pypy39_pp73-win_amd64.whl (252.5 kB view details)

Uploaded PyPy Windows x86-64

qh3-0.15.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (260.7 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qh3-0.15.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (265.0 kB view details)

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

qh3-0.15.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (256.1 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

qh3-0.15.0-pp38-pypy38_pp73-win_amd64.whl (252.5 kB view details)

Uploaded PyPy Windows x86-64

qh3-0.15.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (260.7 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qh3-0.15.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (265.0 kB view details)

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

qh3-0.15.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (256.1 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

qh3-0.15.0-cp37-abi3-win_amd64.whl (252.2 kB view details)

Uploaded CPython 3.7+ Windows x86-64

qh3-0.15.0-cp37-abi3-win32.whl (249.7 kB view details)

Uploaded CPython 3.7+ Windows x86

qh3-0.15.0-cp37-abi3-musllinux_1_1_x86_64.whl (344.7 kB view details)

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

qh3-0.15.0-cp37-abi3-musllinux_1_1_i686.whl (342.8 kB view details)

Uploaded CPython 3.7+ musllinux: musl 1.1+ i686

qh3-0.15.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (344.2 kB view details)

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

qh3-0.15.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (341.1 kB view details)

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

qh3-0.15.0-cp37-abi3-macosx_11_0_arm64.whl (263.4 kB view details)

Uploaded CPython 3.7+ macOS 11.0+ ARM64

qh3-0.15.0-cp37-abi3-macosx_10_9_x86_64.whl (259.0 kB view details)

Uploaded CPython 3.7+ macOS 10.9+ x86-64

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 245c34925783b119aa0353e1878ce9b7c50ef32fbb0969bc535530aa37bd73aa
MD5 eb0a45fb794cbf684c7381ac13f00947
BLAKE2b-256 2b46b5492196451460942d18131daed600ab510b020dec7d02812dbd9ebee0d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8ce1dbfb3740b7be8b8d4aa808e1a58b9f87f3041abc6ca6bd0b8d4d6a87e340
MD5 06a2dea17d6aeb244871a49aa61c93da
BLAKE2b-256 e69ad04c031212f05ef496fd657f9e56cb2a443fb4adbdcca79cd17f7f5e5790

See more details on using hashes here.

File details

Details for the file qh3-0.15.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.15.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 024c35288fe0ddf1c0dbbbe24cbf98a8f73c0bc24932cb96900b82faf236489c
MD5 5a9eec096c1cd38d6a35f769af4b813a
BLAKE2b-256 b2221fe9f570bbd1c6a5ac725ef69f0cb74fd298940749b0892f925f1802d702

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7efbebb80e6cff0d0248cda013614bfa4c9358c448dd4557b1300dc13ef261d8
MD5 7f1f1b5533d1d0cc322ac3250212877b
BLAKE2b-256 7a00853fab1ddb8cbebcc55f31c6df2b35f79f50a5fe28c2f41e0855631ddf80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 696c8886732ee335b1039d0cf9bc4bcc17e662faeec36e425d54812641742f76
MD5 f5964999a6278a00f6ab749308d781dc
BLAKE2b-256 e2da3baf8b4f7f89093372bbfbcb175b942661fe06ddbec95339709ef951fd50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 342d2af5f9dc829b5a10c899f4afa92579c8cde6689d474148b95a9bb9411fce
MD5 88968c84cc260a5d99debea2d733597c
BLAKE2b-256 44de07d12e18e74d9de2dc719ce50df0f3d24a6afcd08329d7a3f5292fa4be15

See more details on using hashes here.

File details

Details for the file qh3-0.15.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.15.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9b9ac3ddd57f7570fd6c781bc29e53c9072a04b12aff59416330fc8c65eac677
MD5 f93292086f0b86deeaea1385f0e34121
BLAKE2b-256 ef0696347b27d7d338aa25c5c99a757cebdc5b50bd69f7cd86cf769c9a8d6d8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b08ab7e0b5b89cc50a0869868ece864d846d78d7f823925d07d392c6390ffb56
MD5 4a6830cc85008e13cfd3ff46ee6e13ee
BLAKE2b-256 4263f1502d5496ffe6a96eedcbdc1a752adac250890cf4b378a1f2d7ffac3243

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 afa84ad6d0e0d194c69fc9ead08601a5f6b1841c7e51c2a8f8404d6080dc33d5
MD5 c98369dada19ea2613d31fa98cdd7bef
BLAKE2b-256 fbdfedcbfd49f63e37589cbd1512afc3781082e4447095eb25f5555053670f27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c41e0cb6c654c90fcc49ece61c6080b8a65c9aab9a523830b9c06003396842b4
MD5 84113cd3913ab4ecd9027836328bfe3d
BLAKE2b-256 54910fe5e5cab46fed9cef046c6f6c43e910dbdc0f5d90f75b7824ee69c564ca

See more details on using hashes here.

File details

Details for the file qh3-0.15.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.15.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6eaf0e83982400f2ac21d7c325e16e6b6944c752dd211bbf93febb6ed0e67dda
MD5 f0d75730a131d75e828a631b0b97c268
BLAKE2b-256 364e980e6197fb710b5cdfd0bbc24e9e8332926e2a409a9162bea9ccd5726b09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0689f3cddceb235782de8b4864565eb8344500f19860233969e3b4a794f87da9
MD5 f0b3b4dd4de7a1c2dfa3b56fdec401fb
BLAKE2b-256 bba949a40801ff832fee1a98153cb75f28e37557fb209e1bd3f47e4456e9fd73

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for qh3-0.15.0-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 239a0dc4b1894b46eda287b1c5ed9a4cb4ee6fadf2f2a7123d25439c3c317d71
MD5 14980c56366100f5f61f44d3d11dbcb6
BLAKE2b-256 f38d207f6518d442f0c9779a4c50809b3f3d00aceb6a333283d73f48ca12450e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for qh3-0.15.0-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 20101b2986a37059a5065490b5bdfbe0ef5c4e08ca32280de4c7ee86057f661a
MD5 f4554d02a108f817df00fe5f7f6208c9
BLAKE2b-256 480b341a54988a96968653d5fab9c2c9d9866b11331ebbf01543b5e48e7175f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2f005276e50aa2717d497332932a8bda34cac36c8ba07b5b4979f91b9c1677d7
MD5 d1af660c4124d96f3ab47a61931af540
BLAKE2b-256 4086617805b9410f49544caa51ee89fa612f669d65e9fd321a2407b2f5b5f4a9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for qh3-0.15.0-cp37-abi3-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 ea074bc35d17058cdbabf2d5522eb4119ef30848b6c1245288c75bc03cccf48e
MD5 8cf50819641451cbb07fea4392b49853
BLAKE2b-256 c2a53fbaf557d044abd40650ec874b5784295c5ed6392075321ff3176126d832

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 af19986f61f86a0d7704f23b6d1944d3123fb6d18b05f5a84fb915b0b4632021
MD5 ab000ea72afb706fffca142fc6ba68f5
BLAKE2b-256 f79e514e3d4599963406f5920513b8d28b4b7903c9923bc816e998d2c46c2622

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a2fbe9d84aa75c630f57fba2a237b4398dfb45905204b15f749b15bb65063e89
MD5 673c2576fc5af47453d5e71cc7fc2f50
BLAKE2b-256 36092f5da2183c16e7ef2972d8f946d78893a444e318c747c26c3f89fbc605c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 27da779a85c38f85136b403c26c9465b8afc52e5235c0a2ea7e75ca1cad0edf5
MD5 57d542589bfda63b21c82d832c710455
BLAKE2b-256 8c2cc3c72bf88e19650f5dc342bca30f9db1aab5567e7baa6b0fc990256ad652

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.15.0-cp37-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 051df61257ad8c7ed04e84435aa57f42869b86384c7e4510242b1bc74692cb9c
MD5 b3a46802a9ab69751a9ed96b67ef81a6
BLAKE2b-256 3a4c34092435c48901f72e66221c7cbf4f7c81e8ba96e2dd3e4ef7a9fe078561

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