Skip to content
/ qh3 Public
forked from pymobiledevice3/qh3

Lightweight QUIC and HTTP/3 implementation in Python

License

Notifications You must be signed in to change notification settings

whatuname/qh3

 
 

Repository files navigation

qh3

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.

About

Lightweight QUIC and HTTP/3 implementation in Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 96.6%
  • C 3.4%