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.

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

Uploaded Source

Built Distributions

qh3-0.11.3-pp310-pypy310_pp73-win_amd64.whl (269.5 kB view details)

Uploaded PyPy Windows x86-64

qh3-0.11.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (276.4 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qh3-0.11.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (281.0 kB view details)

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

qh3-0.11.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (268.9 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

qh3-0.11.3-pp39-pypy39_pp73-win_amd64.whl (269.5 kB view details)

Uploaded PyPy Windows x86-64

qh3-0.11.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (276.4 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qh3-0.11.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (281.0 kB view details)

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

qh3-0.11.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (268.9 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

qh3-0.11.3-pp38-pypy38_pp73-win_amd64.whl (269.5 kB view details)

Uploaded PyPy Windows x86-64

qh3-0.11.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (276.4 kB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

qh3-0.11.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (281.1 kB view details)

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

qh3-0.11.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (268.9 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

qh3-0.11.3-cp37-abi3-win_amd64.whl (269.1 kB view details)

Uploaded CPython 3.7+ Windows x86-64

qh3-0.11.3-cp37-abi3-win32.whl (266.1 kB view details)

Uploaded CPython 3.7+ Windows x86

qh3-0.11.3-cp37-abi3-musllinux_1_1_x86_64.whl (370.0 kB view details)

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

qh3-0.11.3-cp37-abi3-musllinux_1_1_i686.whl (367.5 kB view details)

Uploaded CPython 3.7+ musllinux: musl 1.1+ i686

qh3-0.11.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (367.2 kB view details)

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

qh3-0.11.3-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (362.9 kB view details)

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

qh3-0.11.3-cp37-abi3-macosx_11_0_arm64.whl (276.9 kB view details)

Uploaded CPython 3.7+ macOS 11.0+ ARM64

qh3-0.11.3-cp37-abi3-macosx_10_9_x86_64.whl (272.1 kB view details)

Uploaded CPython 3.7+ macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for qh3-0.11.3.tar.gz
Algorithm Hash digest
SHA256 ab2e1cd771f10b4ecd3b7410bc4aaa86527e8743373c21cfa931d7e5ab272b81
MD5 b796ad4030ea093668e41dedf55f3f7d
BLAKE2b-256 96cdfd718a8068d8a180629711adb8eb3c4fbfee0c91ddd76411ec88bbb13d69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 22a62982d782919179a73e86fb24eb6296fcdee0bedec831301519aa8a91ecd3
MD5 71f83ddff1f1968fb5b70a3ed8a30389
BLAKE2b-256 6365fafc88ff5d60a36cf4e898d97e858f1d0c9fa7112ba30a3dd3e6174dcde1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a627f5ee41f0ed518b2c0997b23f39c447ec8bb7ea143668b3c5904ea459067d
MD5 ee06ae1b0444af12f0afe5e5f1325b2f
BLAKE2b-256 c67854545f78e147b7753fa2aa5434d3ce4253d7272507a7a22ed3868438a8b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fdaa0011e418345140e5e22f063e077975bc6f2fdb50726e105b245dd65e07aa
MD5 9c66888257f5fdd62b718715376006e7
BLAKE2b-256 5ffd3fe7fb3795f841e91bbf0006681415cd717b155b269f6f79d3aeb5a7adc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 13627f0f04d50a1b4493e85cf6c58108c5aad59602732270412fe93f5c981248
MD5 54a89d0c8a876c181c0c89ed920f4203
BLAKE2b-256 34edb43e9a9ecbac9dba2030d855a718be4c537c2ac5dec1a4f183f936774a72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 f3e7925b2e0462b59653d112c696642798ef59737415acb06aa05ea513701c43
MD5 9e2dcdbb3ceae28723e2bfb99904c9f6
BLAKE2b-256 b3ddb88794ef0d9e4af92fc67fb0e03cb8669e22f484c420196cf5b2d6219694

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a776c73d7bc52158f76f3fc515942257f639491113ab7fd819c23e7171992160
MD5 79dca949f3e1e82230577448d5278bc5
BLAKE2b-256 56f17ee543dc81c2b8dff929281e5a0b538b754b7b91af3bd033da28836d318e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7099eb24fd2757703ef3f50dc51a7a601ab27b49bb89ee04a5910fadabb7d375
MD5 365d2fc032b207aeed7462b12ea0c6a8
BLAKE2b-256 ff5e3b5c757554a88d47bfe09036b802e71aba4ae3c37115de5242257e2bfb71

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4126a9dbb4e0099c5656a9382b0206f4b3d6fd2060fb4d0b64db70b47bdb7068
MD5 0f9a7d3caa5295778322535f185012cc
BLAKE2b-256 6b98302465bbdb26c072927656de2cf130b52afc9f3bfb67077d2f5451d2aa56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 9427a8fd47ffba2809133253bd8fabb44a99bf90c9301f8a48dfbb8b05e75576
MD5 d3c510e4a5b0d00f97d526b6cff0923f
BLAKE2b-256 be23fa6e37efb11ff43358a7b401292698bb9af213b20847bb371c5d2d3ca8af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4e8e117d19d3dc01926c73d0971e36898f2385223dfeb44e9e16e11092470f5
MD5 20c3d263d2fe91d89486d2e37e847c45
BLAKE2b-256 ad65fb4e95e0d4e905d2f0806dfdd839da28fd0dcb34798793fe21e737780dd4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 def1fe42f34a3fa31463845261f40979325e2b570c62a1b8752e51e80b2c2fcc
MD5 6034192d6fa32f7439a6448cd7641690
BLAKE2b-256 94d167fe5c1fc40284eafe3f3093834e32cd1ec7ef54477d5dccf53df0e94568

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f582010437b8a917ac2f02f35933a93373bd186b230646c8f5d17c8885b49c03
MD5 722560cd9823d8c281c039840386c649
BLAKE2b-256 ecfea0bc065664d2f4c06fbd9d4815b1cc14eea5386790276c15497a3da5e735

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for qh3-0.11.3-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 53316075d16c6b7a4a4c303a537f2f4d94e14338371796ab8d0a068fc1cdbbab
MD5 2173540291ea0d59c4f22a71712c79c4
BLAKE2b-256 4416d20b58583ba9016b905055c0ede1bc20142a0fb6163caf682af866a2d365

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for qh3-0.11.3-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 fe61b319c8c8db7f095ca7288b1f6257af0b7d6f3a0b32cc538a07dd4563042b
MD5 4c81b76bd7feb5721595bcd97aff785a
BLAKE2b-256 8626e1ca256b8c1c44511e375c8aca4e91923e478022aae1007891c5068af4f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 236687590448fe3c5082c55f63bf3407f1bc8adcda48acd8b08cb64fb3208ce8
MD5 3e555fed9a159b3aae21a7a21b62f325
BLAKE2b-256 b7281f519c9a230013498ac385f583f4880b1e8cd98d39a3ed4ad6eaeb22d07e

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for qh3-0.11.3-cp37-abi3-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 c34d540ec9dd5bed00871d32647a03b334a696b5385276cdbf63fde2966a507c
MD5 110a358dad373aa6f26f7115b82d9194
BLAKE2b-256 a892bc0d05f43e2689a3ac1fbd18974d9d7ec8490be4784701b7dbfc524e9962

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c04ba398077b46b0e73244976caa410a2dd4922b8d56c7ef3528ddc039fb161f
MD5 3ec3f88ee2ba65f740b9500ee705bea3
BLAKE2b-256 63d5fac47d7d93c57229935ea630341aa4246d04a5cc4b18e873b96c3c74c142

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c978ed2cd7dfd797898fab6de3f454e176000d8b5df6a24129e2e41de6d3d1f1
MD5 a50a24c7f0dbe41859217ab20b2e8302
BLAKE2b-256 e7c37cca45887e69d56d7eaed1ceb13195a4fa12d416edba8fe839d0de800af6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f173eec6ea804ee8909e3c17536bebf2d195bbed7354d7e90cb16e183e43cbb
MD5 60a45f35977b4f7e5274b62437868f97
BLAKE2b-256 fc2093dc89e8eee2c10f2881822cda33700958839c37aa3fc35aa78227567973

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.11.3-cp37-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 421db3bf334f0c3a9008f00ccd7700736c5e36b3af348f3c8a3865123293a038
MD5 404221cdfa9f92ab887b32612bceacdb
BLAKE2b-256 37b8db476157210b477bcbf62c7de1f054aaf14d2cfd735ed67c617e246f95d4

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