Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | 03-May-2022 | - | ||||
docs/ | H | 28-Oct-2021 | - | 445 | 225 | |
examples/ | H | 28-Oct-2021 | - | 2,558 | 2,130 | |
src/ | H | 28-Oct-2021 | - | 10,761 | 8,685 | |
tests/ | H | 03-May-2022 | - | 10,372 | 8,350 | |
LICENSE | H A D | 28-Oct-2021 | 1.5 KiB | 26 | 22 | |
MANIFEST.in | H A D | 28-Oct-2021 | 139 | 5 | 4 | |
PKG-INFO | H A D | 28-Oct-2021 | 5.6 KiB | 154 | 106 | |
README.rst | H A D | 28-Oct-2021 | 3.8 KiB | 132 | 85 | |
setup.cfg | H A D | 28-Oct-2021 | 439 | 27 | 21 | |
setup.py | H A D | 28-Oct-2021 | 2.2 KiB | 71 | 64 |
README.rst
1aioquic 2======= 3 4|rtd| |pypi-v| |pypi-pyversions| |pypi-l| |tests| |codecov| |black| 5 6.. |rtd| image:: https://readthedocs.org/projects/aioquic/badge/?version=latest 7 :target: https://aioquic.readthedocs.io/ 8 9.. |pypi-v| image:: https://img.shields.io/pypi/v/aioquic.svg 10 :target: https://pypi.python.org/pypi/aioquic 11 12.. |pypi-pyversions| image:: https://img.shields.io/pypi/pyversions/aioquic.svg 13 :target: https://pypi.python.org/pypi/aioquic 14 15.. |pypi-l| image:: https://img.shields.io/pypi/l/aioquic.svg 16 :target: https://pypi.python.org/pypi/aioquic 17 18.. |tests| image:: https://github.com/aiortc/aioquic/workflows/tests/badge.svg 19 :target: https://github.com/aiortc/aioquic/actions 20 21.. |codecov| image:: https://img.shields.io/codecov/c/github/aiortc/aioquic.svg 22 :target: https://codecov.io/gh/aiortc/aioquic 23 24.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg 25 :target: https://github.com/python/black 26 27What is ``aioquic``? 28-------------------- 29 30``aioquic`` is a library for the QUIC network protocol in Python. It features 31a minimal TLS 1.3 implementation, a QUIC stack and an HTTP/3 stack. 32 33QUIC was standardised in RFC 9000, but HTTP/3 standardisation is still ongoing. 34``aioquic`` closely tracks the specification drafts and is regularly tested for 35interoperability against other `QUIC implementations`_. 36 37To learn more about ``aioquic`` please `read the documentation`_. 38 39Why should I use ``aioquic``? 40----------------------------- 41 42``aioquic`` has been designed to be embedded into Python client and server 43libraries wishing to support QUIC and / or HTTP/3. The goal is to provide a 44common codebase for Python libraries in the hope of avoiding duplicated effort. 45 46Both the QUIC and the HTTP/3 APIs follow the "bring your own I/O" pattern, 47leaving actual I/O operations to the API user. This approach has a number of 48advantages including making the code testable and allowing integration with 49different concurrency models. 50 51Features 52-------- 53 54- QUIC stack conforming with RFC 9000 55- HTTP/3 stack conforming with draft-ietf-quic-http-34 56- minimal TLS 1.3 implementation 57- IPv4 and IPv6 support 58- connection migration and NAT rebinding 59- logging TLS traffic secrets 60- logging QUIC events in QLOG format 61- HTTP/3 server push support 62 63Requirements 64------------ 65 66``aioquic`` requires Python 3.6 or better, and the OpenSSL development headers. 67 68Linux 69..... 70 71On Debian/Ubuntu run: 72 73.. code-block:: console 74 75 $ sudo apt install libssl-dev python3-dev 76 77On Alpine Linux you will also need the following: 78 79.. code-block:: console 80 81 $ sudo apt install bsd-compat-headers libffi-dev 82 83OS X 84.... 85 86On OS X run: 87 88.. code-block:: console 89 90 $ brew install openssl 91 92You will need to set some environment variables to link against OpenSSL: 93 94.. code-block:: console 95 96 $ export CFLAGS=-I/usr/local/opt/openssl/include 97 $ export LDFLAGS=-L/usr/local/opt/openssl/lib 98 99Windows 100....... 101 102On Windows the easiest way to install OpenSSL is to use `Chocolatey`_. 103 104.. code-block:: console 105 106 > choco install openssl 107 108You will need to set some environment variables to link against OpenSSL: 109 110.. code-block:: console 111 112 > $Env:INCLUDE = "C:\Progra~1\OpenSSL-Win64\include" 113 > $Env:LIB = "C:\Progra~1\OpenSSL-Win64\lib" 114 115Running the examples 116-------------------- 117 118`aioquic` comes with a number of examples illustrating various QUIC usecases. 119 120You can browse these examples here: https://github.com/aiortc/aioquic/tree/main/examples 121 122License 123------- 124 125``aioquic`` is released under the `BSD license`_. 126 127.. _read the documentation: https://aioquic.readthedocs.io/en/latest/ 128.. _QUIC implementations: https://github.com/quicwg/base-drafts/wiki/Implementations 129.. _cryptography: https://cryptography.io/ 130.. _Chocolatey: https://chocolatey.org/ 131.. _BSD license: https://aioquic.readthedocs.io/en/latest/license.html 132