History of changes¶
New features (backwards compatible):
- Made it so that sentinels are instances of themselves
<sentinel-type-trickiness>, to enable certain dispatch tricks on
the return value of
Connection.next_event()(see issue #8 for discussion).
Data.chunk_endproperties to the
Dataevent. These provide the user information about where chunk delimiters are in the data stream from the remote peer when chunked transfer encoding is in use. You probably shouldn’t use these, but sometimes there’s no alternative (see issue #19 for discussion).
Response.reasonattribute, making it possible to read or set the textual “reason phrase” on responses (issue #13).
This is the first release since we started using h11 to write non-trivial server code, and this experience triggered a number of substantial API changes.
Backwards incompatible changes:
- Split the old
receive_data()into the new
next_event(), and replaced the old
Pausedpseudo-event with the new
- Simplified the API by replacing the old
Connection.server_statewith the new
- Renamed the old
prepare_to_reuse()to the new
- Removed the
Backwards compatible changes:
- State machine: added a
MUST_CLOSEtransition triggered by our peer being in the
RemoteProtocolError(see Error handling). Use case: HTTP servers want to be able to distinguish between an error that originates locally (which produce a 500 status code) versus errors caused by remote misbehavior (which produce a 4xx status code).
- Changed the
python-h11/<version>. (This is similar to what requests uses, and much more searchable than plain h11.)
- Added a minimal benchmark suite, and used it to make a few small optimizations (maybe ~20% speedup?).
- Initial release.