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 Distributions

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

Built Distributions

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

qh3-0.14.0-pp310-pypy310_pp73-win_amd64.whl (253.5 kB view details)

Uploaded PyPyWindows x86-64

qh3-0.14.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (261.7 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

qh3-0.14.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (266.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

qh3-0.14.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (256.2 kB view details)

Uploaded PyPymacOS 10.9+ x86-64

qh3-0.14.0-pp39-pypy39_pp73-win_amd64.whl (253.5 kB view details)

Uploaded PyPyWindows x86-64

qh3-0.14.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (261.7 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

qh3-0.14.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (266.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

qh3-0.14.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (256.2 kB view details)

Uploaded PyPymacOS 10.9+ x86-64

qh3-0.14.0-pp38-pypy38_pp73-win_amd64.whl (253.5 kB view details)

Uploaded PyPyWindows x86-64

qh3-0.14.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (261.7 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

qh3-0.14.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (266.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

qh3-0.14.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (256.2 kB view details)

Uploaded PyPymacOS 10.9+ x86-64

qh3-0.14.0-cp37-abi3-win_amd64.whl (253.2 kB view details)

Uploaded CPython 3.7+Windows x86-64

qh3-0.14.0-cp37-abi3-win32.whl (250.7 kB view details)

Uploaded CPython 3.7+Windows x86

qh3-0.14.0-cp37-abi3-musllinux_1_1_x86_64.whl (345.7 kB view details)

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

qh3-0.14.0-cp37-abi3-musllinux_1_1_i686.whl (343.8 kB view details)

Uploaded CPython 3.7+musllinux: musl 1.1+ i686

qh3-0.14.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (345.2 kB view details)

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

qh3-0.14.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (342.1 kB view details)

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

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

Uploaded CPython 3.7+macOS 11.0+ ARM64

qh3-0.14.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.14.0-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for qh3-0.14.0-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 efaa17ed13e9c5ffff768bf5a654559cee61c2b24ab3e80b98d26ac26039f59f
MD5 0551db686129adbf3af210fc6f0d9d7e
BLAKE2b-256 e75a3212ff47ba0818da75475c4d370b0e2a96d33c2b15f3370c6a10cd4c68a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.14.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a8104994bda4a707b005d8f948ec29d7796b441f9c185e01faf7a2812a9e4bdc
MD5 535c939d417e0909db88648617e52a3d
BLAKE2b-256 740c05cf772d864b0aaccd74446a98f03b52d70b419e76656fc8f477f4d0c806

See more details on using hashes here.

File details

Details for the file qh3-0.14.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.14.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 87a13472587e8a3a7a63d39b55ec9cd70f5998756bcd75d239d7b93f822be79d
MD5 4f3512da76c92688ab9193149d3fdb92
BLAKE2b-256 25fd828a1a6b1768ea91d8ca8a91c6464f78ead16f1f51c2591524c5040af22a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.14.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4b4dc0272d70e63dceb9b30a492b3feca32072db4a0ac12b1717acdcaee9393d
MD5 a4db17f67cb15d7fa52f57e236a778b5
BLAKE2b-256 642492a389906727fa3104058c7e5742d527f6168d34d18698092a12f5af82c1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qh3-0.14.0-pp39-pypy39_pp73-win_amd64.whl
  • Upload date:
  • Size: 253.5 kB
  • Tags: PyPy, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for qh3-0.14.0-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 6462a45b839f320b8a02d9da0a14701c623260bd8d906014523618679a8eb7fa
MD5 6d8d2d388c8a70b5fb6caf7f42f7f9de
BLAKE2b-256 320b1547e1f13f337299a1b091c4604a8b4d887bea46f56c7b6f63233a012969

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.14.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b786195882421a7ace08d183b5933ca8f9fac94e724413dc6b982c97db0d5680
MD5 7040dd34060d0c50e5bd0f51eb09bf5e
BLAKE2b-256 d44cd8147a286fca2f501068d3b0ddade6239c6f30e8568eacce5285c9aabce9

See more details on using hashes here.

File details

Details for the file qh3-0.14.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.14.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d69cbd7106a72c80998fc50114e80b1eb12eee7096b4819daf1d9a02d6c52ba5
MD5 f709ad49fe657d596dcf0f762a063b0d
BLAKE2b-256 f9adc956afee17c7ef01fd20c9a543c49f34b1c3062922667b354545b376eed9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.14.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b947af73b7777769abf6e672e4f705194f01e5660eb8c31ad327265532d287e4
MD5 8c56dcb9e1e101649eea82abd29d7585
BLAKE2b-256 1bdfb939808d40106a70ec870e7f6582aa736406501079154d2dc674e46783d6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qh3-0.14.0-pp38-pypy38_pp73-win_amd64.whl
  • Upload date:
  • Size: 253.5 kB
  • Tags: PyPy, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for qh3-0.14.0-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 5189193799fc86735e03b0a1d60693bc1aca00e40e9f5b47be4397cef1a0c877
MD5 5b5626528cfbf1b114df87001e21a4c8
BLAKE2b-256 c780624258651d65fa5cc18c76d1d01821666938bbcb261647bb610ad628435a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.14.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 73a9ba11b437f0d744335f4817df956239222c4893335648976a6807742a6611
MD5 f8a850c8e83fd0d274fad91174cfb14b
BLAKE2b-256 84e8b46cc8ecda1fb6d90f62afaea4270f4d88d7177c6963c5d60b8932496657

See more details on using hashes here.

File details

Details for the file qh3-0.14.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.14.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3f0cfd4f58b2fb3d42583894b49b1a30f58ec277f53fc066f0a0d74d8f790caa
MD5 c4cc717edec344cc0da4d33e8cda8d41
BLAKE2b-256 3c9e18c1a92c49879b7f2a357e6c33469ed17727303e82d6689340f173da10a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.14.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fa03b9d2557d0804bf8c57425f9725e084fa32948a71dd0188c67c157611a884
MD5 f723c8e79c64fb1acb57f1df3b4269e6
BLAKE2b-256 c7eeeae8661da06f9c1405c13c68a8e8b2d777ff8b3d8d4dcdcbc49e78703599

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qh3-0.14.0-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 253.2 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.14.0-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 aca985572661ab59d9ce67df3e9e2d485bffe5d59573bfbb14dacef85eb12c68
MD5 43a4d35916fb1b44e321f5e847fdb175
BLAKE2b-256 4e5dc5800b40eacdc38b02f37ca16ef6fa5b16a6093505146ace095485015d6f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qh3-0.14.0-cp37-abi3-win32.whl
  • Upload date:
  • Size: 250.7 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.14.0-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 429246b4c46befcd9626a7c80349ed66a351be73526d5dfe01349b00204af0d3
MD5 6c83ff76c41bebe52571c1cf6335a6d2
BLAKE2b-256 c303c477b968c1564aa5d245d2b66ebba53aa16b60ede7631ee08c33c2561490

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qh3-0.14.0-cp37-abi3-musllinux_1_1_x86_64.whl
  • Upload date:
  • Size: 345.7 kB
  • Tags: CPython 3.7+, musllinux: musl 1.1+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for qh3-0.14.0-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 34ec39393f375069b6d6b9e8f5aa969805860001ba84219c6016f442b9e6376f
MD5 ac347572e72cb988f3becb53b468554c
BLAKE2b-256 d3e62c4d86954fad9258f61480904ec08b6aafefe0c49e9f75192f6dfa8835ab

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qh3-0.14.0-cp37-abi3-musllinux_1_1_i686.whl
  • Upload date:
  • Size: 343.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.6

File hashes

Hashes for qh3-0.14.0-cp37-abi3-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 f5435fbde32ee03e61b4800d135679f276827bab570dad1b2905a00e9ddf072a
MD5 d92d06b7a6e42611eda5b18c79cd6f10
BLAKE2b-256 7f8294b5414e9e9385cd9d1bd63572bcb0acb8595d224b2f1325881c3cbc3c1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.14.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a4be73ae9483b1e27088927f594ccb171b41a99a9403e08d7227c3556dc3f026
MD5 8014605fbc7512094c10693316f0fb11
BLAKE2b-256 bcce37c39e641204dcd10c046bbd678dc908a44f8c74c68732765b248b26e65e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for qh3-0.14.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ed4ffa74874e9001062a78e0545205b74f7d0373d8db433a8897e08f14f9594d
MD5 b158ff0ff6d9f72fa87e054cddf752c6
BLAKE2b-256 b067fbbcf2073e78aefe4ec5f762f2c6329890f27d03eaa239dda14c720c67c9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qh3-0.14.0-cp37-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 263.4 kB
  • Tags: CPython 3.7+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for qh3-0.14.0-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9028092d71fc872c7dd8032c2fb2e88ca0fdad4205c06cc7ca07c80386c66579
MD5 13f8eac98a840ba066b67a130bceb4d3
BLAKE2b-256 b15966c72f175d0d69bcc73ffa74ec310af8c464e9e656237f73485272845599

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qh3-0.14.0-cp37-abi3-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 259.0 kB
  • Tags: CPython 3.7+, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for qh3-0.14.0-cp37-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 72ed24c68a36e6d2d3d5d8a3e55b6f703876f8c4e9d145d17a5fbf68ec760e14
MD5 b047fadbf73c72c8e8efd4d014be1173
BLAKE2b-256 24cef6611de33e4ed44e99c9ebff7b0341e2f7d0402ea6ecf9d4d0d49d0f15a4

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