Skip to main content

h11-mypyc

A fork of h11 whose annotations have been made accurate enough for mypyc to compile it, which is worth ~1.9x on the benchmark suite. It installs as h11_mypyc, so it sits alongside the original rather than replacing it.

This is a little HTTP/1.1 library written from scratch in Python, heavily inspired by hyper-h2.

It's a "bring-your-own-I/O" library; h11-mypyc contains no IO code whatsoever. This means you can hook h11-mypyc up to your favorite network API, and that could be anything you want: synchronous, threaded, asynchronous, or your own implementation of RFC 6214 -- h11-mypyc won't judge you. (Compare this to the current state of the art, where every time a new network API comes along then someone gets to start over reimplementing the entire HTTP protocol from scratch.) Cory Benfield made an excellent blog post describing the benefits of this approach, or if you like video then here's his PyCon 2016 talk on the same theme.

This also means that h11-mypyc is not immediately useful out of the box: it's a toolkit for building programs that speak HTTP, not something that could directly replace requests or twisted.web or whatever. But h11-mypyc makes it much easier to implement something like requests or twisted.web.

At a high level, working with h11-mypyc goes like this:

  1. First, create an h11_mypyc.Connection object to track the state of a single HTTP/1.1 connection.

  2. When you read data off the network, pass it to conn.receive_data(...); you'll get back a list of objects representing high-level HTTP "events".

  3. When you want to send a high-level HTTP event, create the corresponding "event" object and pass it to conn.send(...); this will give you back some bytes that you can then push out through the network.

For example, a client might instantiate and then send a h11_mypyc.Request object, then zero or more h11_mypyc.Data objects for the request body (e.g., if this is a POST), and then a h11_mypyc.EndOfMessage to indicate the end of the message. Then the server would then send back a h11_mypyc.Response, some h11_mypyc.Data, and its own h11_mypyc.EndOfMessage. If either side violates the protocol, you'll get a h11_mypyc.ProtocolError exception.

h11-mypyc is suitable for implementing both servers and clients, and has a pleasantly symmetric API: the events you send as a client are exactly the ones that you receive as a server and vice-versa.

Here's an example of a tiny HTTP client

It also has a fine manual.

FAQ

Whyyyyy?

I wanted to play with HTTP in Curio and Trio, which at the time didn't have any HTTP libraries. So I thought, no big deal, Python has, like, a dozen different implementations of HTTP, surely I can find one that's reusable. I didn't find one, but I did find Cory's call-to-arms blog-post. So I figured, well, fine, if I have to implement HTTP from scratch, at least I can make sure no-one else has to ever again.

Should I use it?

Maybe. You should be aware that it's a very young project. But, it's feature complete and has an exhaustive test-suite and complete docs, so the next step is for people to try using it and see how it goes :-). If you do then please let us know -- if nothing else we'll want to talk to you before making any incompatible changes!

What are the features/limitations?

Roughly speaking, it's trying to be a robust, complete, and non-hacky implementation of the first "chapter" of the HTTP/1.1 spec: RFC 7230: HTTP/1.1 Message Syntax and Routing. That is, it mostly focuses on implementing HTTP at the level of taking bytes on and off the wire, and the headers related to that, and tries to be anal about spec conformance. It doesn't know about higher-level concerns like URL routing, conditional GETs, cross-origin cookie policies, or content negotiation. But it does know how to take care of framing, cross-version differences in keep-alive handling, and the "obsolete line folding" rule, so you can focus your energies on the hard / interesting parts for your application, and it tries to support the full specification in the sense that any useful HTTP/1.1 conformant application should be able to use h11-mypyc.

It is published both as a mypyc-compiled wheel and as a pure-Python one; pip picks the compiled build where a wheel exists for your interpreter and falls back to the pure one everywhere else, PyPy included.

It has a test suite with 100.0% coverage for both statements and branches.

Currently it supports Python 3.10+ and PyPy 3. The last Python 2-compatible version was h11 0.11.x. (Originally it had a Cython wrapper for http-parser and a beautiful nested state machine implemented with yield from to postprocess the output. But I had to take these out -- the new parser needs fewer lines-of-code than the old parser wrapper, is written in pure Python, uses no exotic language syntax, and has more features. It's sad, really; that old state machine was really slick. I just need a few sentences here to mourn that.)

It is benchmarked and profiled: make bench-compare measures the compiled build against the interpreted one, and make bench-py runs the per-path suite in tests/test_benchmarks.py. Upstream erred on the side of simplicity and robustness over micro-optimization, and at the architectural level tried hard to avoid fundamentally bad decisions, e.g., I believe that all the parsing algorithms remain linear-time even in the face of pathological input like slowloris, and there are no byte-by-byte loops. (I also believe that it maintains bounded memory usage in the face of arbitrary/pathological input.)

The whole library is ~800 lines-of-code. You can read and understand the whole thing in less than an hour. Most of the energy invested in this so far has been spent on trying to keep things simple by minimizing special-cases and ad hoc state manipulation; even though it is now quite small and simple, I'm still annoyed that I haven't figured out how to make it even smaller and simpler. (Unfortunately, HTTP does not lend itself to simplicity.)

The API is ~feature complete and I don't expect the general outlines to change much, but you can't judge an API's ergonomics until you actually document and use it, so I'd expect some changes in the details.

How do I try it?

$ pip install h11-mypyc
$ git clone git@github.com:danfimov/h11
$ cd h11/examples
$ python basic-client.py

and go from there.

License?

MIT

Code of conduct?

Contributors are requested to follow our code of conduct in all project spaces.

Metadata

Release files for h11-mypyc 0.17.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for h11-mypyc 0.17.0
File Size Uploaded
h11_mypyc-0.17.0.tar.gz 38.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for h11-mypyc 0.17.0
File
h11_mypyc-0.17.0-py3-none-any.whl Python 3 none any Details
h11_mypyc-0.17.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
h11_mypyc-0.17.0-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
h11_mypyc-0.17.0-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
h11_mypyc-0.17.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
h11_mypyc-0.17.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
h11_mypyc-0.17.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
h11_mypyc-0.17.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
h11_mypyc-0.17.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
h11_mypyc-0.17.0-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
h11_mypyc-0.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
h11_mypyc-0.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64, Linux glibc 2.17+ ARM64 Details
h11_mypyc-0.17.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
h11_mypyc-0.17.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
h11_mypyc-0.17.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
h11_mypyc-0.17.0-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
h11_mypyc-0.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
h11_mypyc-0.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
h11_mypyc-0.17.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
h11_mypyc-0.17.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
h11_mypyc-0.17.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
h11_mypyc-0.17.0-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
h11_mypyc-0.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
h11_mypyc-0.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
h11_mypyc-0.17.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
h11_mypyc-0.17.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
h11_mypyc-0.17.0-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
h11_mypyc-0.17.0-cp310-cp310-musllinux_1_2_aarch64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ ARM64 Details
h11_mypyc-0.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
h11_mypyc-0.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 Details
h11_mypyc-0.17.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 11.6 MB

Release files / h11_mypyc-0.17.0.tar.gz

Download URL h11_mypyc-0.17.0.tar.gz
Size 38.6 kB
Tags Source
SHA-256 checksum
How to use checksums
a832916437b04987ea79e0f1fc8f0928cc533a1c26152f90f922c07686c78544
BLAKE2b-256 checksum
How to use checksums
cdc915e382e195a074dd81dbc4d13a53c0fd62dfd7ceda737793d667971bba90
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-py3-none-any.whl

Download URL h11_mypyc-0.17.0-py3-none-any.whl
Size 38.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2d3a1961a788f8de0733607d6fa0dcf01f943fd7eb76ea4fbcf92b0922437404
BLAKE2b-256 checksum
How to use checksums
35985163387afd5f33392725342623a4e41d6ebd2187ddc7245cf59ec79ae490
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp314-cp314-win_amd64.whl

Download URL h11_mypyc-0.17.0-cp314-cp314-win_amd64.whl
Size 215.2 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
c30810afe8a9d2d0dbfab71534818163ec4128645d6c1d06118d24eb49684808
BLAKE2b-256 checksum
How to use checksums
7b3e66af2e41ff5d658ed656cac1608597ec5385e034d6b21e40cc06afb73780
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL h11_mypyc-0.17.0-cp314-cp314-musllinux_1_2_x86_64.whl
Size 473.8 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
abe3f8207c73c9d47b62e5151436753450c7b5f00e8ae3c484f085d79e3eef24
BLAKE2b-256 checksum
How to use checksums
0683115aa1de038302e39053eb315cc123fecf07dced5fc6d5b99299828f5230
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL h11_mypyc-0.17.0-cp314-cp314-musllinux_1_2_aarch64.whl
Size 471.8 kB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
fe6dbee541e5a9748c7cd841afedaf7686be0be5531575475e7beead672fef21
BLAKE2b-256 checksum
How to use checksums
e3423f6bdc2a8e6de4524180b8eed67ba0b6612545c320d51ea97ff50c15171b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL h11_mypyc-0.17.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 477.1 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f71fda40ea33e5a27410a1186c2d70d8bf7b8b127616920a5976f59a31c6cfea
BLAKE2b-256 checksum
How to use checksums
2545f10c9307df765adbd1da747a493f73238d935dd5139645e5567cbcb2d5c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL h11_mypyc-0.17.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 465.0 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
246c5909a9fda399b3ef6e05948faec2682873fcccaf9f70aa437cc880638a87
BLAKE2b-256 checksum
How to use checksums
3444dea79cc128b07a8ae0c08c2e80d8e1ecedf7c123d3b554822001c3d51204
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL h11_mypyc-0.17.0-cp314-cp314-macosx_11_0_arm64.whl
Size 239.2 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
63634af694f8bef9dbdee1d65599750aaf61a9a8816d6fec321679e0e4e19ba9
BLAKE2b-256 checksum
How to use checksums
388ed17a95ae05850a68568786c7fe3a1b3a8a7db95de343cd9228ca4a10ecea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp313-cp313-win_amd64.whl

Download URL h11_mypyc-0.17.0-cp313-cp313-win_amd64.whl
Size 212.3 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
de21b0af11ef3fa3759a943622eef5ad7b2b9df7a01910ac91f80dda58030705
BLAKE2b-256 checksum
How to use checksums
acb28f6ecc4f6b3503a090c5ff2c70540a82ba36571e6af8751534d4d5d64466
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL h11_mypyc-0.17.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 472.3 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
4ace8b2829db367399ae07a65f0d852ba80449bdec62be1f7a43cb423940ffb9
BLAKE2b-256 checksum
How to use checksums
f2db415a4f7f2bb4abefdfb327bfaece78fb81391a5d52cbcb1ea712ef412ca4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL h11_mypyc-0.17.0-cp313-cp313-musllinux_1_2_aarch64.whl
Size 467.2 kB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
31cf43894138b29671195a5bae6e6850864f0f0b1e7f4f09485e5ebfb5736086
BLAKE2b-256 checksum
How to use checksums
f7783f5606039ee2f24c6066b16310010e9c043dfbdaf8828c94379bab0833f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL h11_mypyc-0.17.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 475.9 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4418fbbcf47a617ee677cd903b9fb1d243f720eb9ccc05fe2e9e5371845b5896
BLAKE2b-256 checksum
How to use checksums
2eb7e904e7047451f48f7d853961db4c0c11a83f17d0f51d887fa2cce6d78cb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL h11_mypyc-0.17.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 460.4 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
243627cb902e3b78062d93821728f2e6c94d000d154ab34697e70874a7e787b2
BLAKE2b-256 checksum
How to use checksums
523b82dd1c988004ea178ea9a19d4e5d4efc6de1782d89572bc94703e0bc1e5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL h11_mypyc-0.17.0-cp313-cp313-macosx_11_0_arm64.whl
Size 239.7 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6a7b1beaed8ea391e1f10b1cb97214b91e05b60c6fca30d748da6e0a37628b7a
BLAKE2b-256 checksum
How to use checksums
b6f85454b7c106533e46655f504b5eed28c0709f7d456f2f394057b0334365f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp312-cp312-win_amd64.whl

Download URL h11_mypyc-0.17.0-cp312-cp312-win_amd64.whl
Size 211.7 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
b630f79f264dd122467a2ab4ef9c7d267cc493e89b686567167f5a256f53728e
BLAKE2b-256 checksum
How to use checksums
fddb7e4b1c9bc077a6e7a3afd53365b6bc5c59c3dcff6714a2bee9859be4ad47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL h11_mypyc-0.17.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 475.5 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
0af16d7690364c6d1fa6c4bebe513e91c36935f6ff39cf92548e7f75413f1f55
BLAKE2b-256 checksum
How to use checksums
607f29100c878178cd1af023887a73951fab7ae32f04def827084c9746a83ab9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL h11_mypyc-0.17.0-cp312-cp312-musllinux_1_2_aarch64.whl
Size 470.9 kB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
0af1745e369f6c51b09beb7f6c3e35df555e5b70ce395c6e1b69a5e42ff7adfc
BLAKE2b-256 checksum
How to use checksums
561ede38e8ea1fcde99711eed406f51f01b924206bcc44c1b36640d93179ae9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL h11_mypyc-0.17.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 479.2 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d45247ade017f0dd55778e994ef2324609e24bb58c116eb3778d1a5e6c441abd
BLAKE2b-256 checksum
How to use checksums
fc7fd976024a7df44a9cde71b1c785fce2f2e2f2f7ebde7ad1f97d32f5c14343
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL h11_mypyc-0.17.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 464.2 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f9e8ec7d34a2ebb863a8f4515525a4d6ae54665d8ea791b9bea53ed5c6a043df
BLAKE2b-256 checksum
How to use checksums
f18c25067213322cdb7fb47ce7675996bd98515e99f3cd01ba669b3c1980ebb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL h11_mypyc-0.17.0-cp312-cp312-macosx_11_0_arm64.whl
Size 241.2 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ab69c7f6f612cf15a6bc91e61c133897651f03d20687ee6993369c142c70aafe
BLAKE2b-256 checksum
How to use checksums
fb95fbd861937a9b01a85e2815c1f7d4777653ab737f36c141b89a364bf5f72e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp311-cp311-win_amd64.whl

Download URL h11_mypyc-0.17.0-cp311-cp311-win_amd64.whl
Size 208.8 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8f56754f63cd22e18f78239399509d661d301ee273e1aaf7098331bd95190ee3
BLAKE2b-256 checksum
How to use checksums
df5cb7893ccd5dd12850c05fe96161d9655a9e686c98b5f2bce2bb4630368e60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL h11_mypyc-0.17.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 454.5 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
2839dce17915efab78d7363ccb2dd1495974ef591199e488425b0c36adf7aa41
BLAKE2b-256 checksum
How to use checksums
43b09aa8a10605373d7c824b06a10462104d70e5d7dd91193c685eac1ca5ab44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL h11_mypyc-0.17.0-cp311-cp311-musllinux_1_2_aarch64.whl
Size 457.8 kB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
25562268bf54bed9bc20291f6c2c7e317cc6d1428edb7bcadb89e56c103208a6
BLAKE2b-256 checksum
How to use checksums
3ebc6e2949995c5aec02f19464c05a42c6405d7ed3dbd072f3f1f5445075e71d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL h11_mypyc-0.17.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 457.2 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f86294da23186dd2ee6dec5322b795067f0e0774627486a1dc242c170ab06191
BLAKE2b-256 checksum
How to use checksums
42d352fe2973e3e9a8a5f4e2530aef010e1c35823bba501e03e814d63030a9c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL h11_mypyc-0.17.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 449.6 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9de5b88dbcbcec2c9822bbed37e64c0b566c418652a3b40dc907b0c913397767
BLAKE2b-256 checksum
How to use checksums
e1118d16d94685995f16da106d70465a24597d5e47c8e7a188b9c1fef3f5642c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL h11_mypyc-0.17.0-cp311-cp311-macosx_11_0_arm64.whl
Size 238.9 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
76828dd57895c637e15c5d2cc58dacb0703f69fe4070ec613cb7a85a2cd88959
BLAKE2b-256 checksum
How to use checksums
6e2be37e6acc1a7b0bf1d5bec700dc76fa6e2747176154abf08f47f8d8155f39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp310-cp310-win_amd64.whl

Download URL h11_mypyc-0.17.0-cp310-cp310-win_amd64.whl
Size 209.0 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
f8b6601dab39035ceff6f61bf6ddb083db60d018cfce3f838afa8f602d312cc7
BLAKE2b-256 checksum
How to use checksums
cff15a6851cc59f33f1ac022aeb2294dea0a273a7ddcfabef5a2fea626aa2473
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL h11_mypyc-0.17.0-cp310-cp310-musllinux_1_2_x86_64.whl
Size 456.3 kB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
3ff84283eb5bb9ce0830bb61b02527b6a5385327e39d04e6e0fe513a5f56bb02
BLAKE2b-256 checksum
How to use checksums
9051f091107072225e3176d1e3435a58d730a170d82f252b0b2713a15a60b8fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp310-cp310-musllinux_1_2_aarch64.whl

Download URL h11_mypyc-0.17.0-cp310-cp310-musllinux_1_2_aarch64.whl
Size 460.2 kB
Tags CPython 3.10 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
3bae57d9d3227ac862d060e3961d32928fedc00b909cd9d98de62402feef425c
BLAKE2b-256 checksum
How to use checksums
089424dd4670286c48073f7193f852857553790a06330390d4aa7e4026b591d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL h11_mypyc-0.17.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 458.7 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c754ebc1311270bf922dd42ba37ce4b644ec5d1951bb2a20251c5ae54e01f70c
BLAKE2b-256 checksum
How to use checksums
15c037a81e1bfdd3534fec33db2414a697eb0022d805fb5d268667e5d7461006
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

Download URL h11_mypyc-0.17.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Size 452.8 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
7aa3826282080e9142cd59f3f38da8008d27e61341e0a2d669455656ecf017de
BLAKE2b-256 checksum
How to use checksums
a46c310669c6a589bc60b4f52c55073d76639998f8bf41801ecfb3a442ca9e58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / h11_mypyc-0.17.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL h11_mypyc-0.17.0-cp310-cp310-macosx_11_0_arm64.whl
Size 241.4 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c26a705f21a2ad25a048d6d061ff272b127551708a222a1d9206fca4ead0972a
BLAKE2b-256 checksum
How to use checksums
5ec9c710f8460cb907ee37142b5e9eee8d3f7cf7f0500c29659fdb448cf314af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.17.0 This release

32 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page