Skip to main content

HTTP/2 framing layer for Python

Project description

This library contains the HTTP/2 framing code used in the hyper project. It provides a pure-Python codebase that is capable of decoding a binary stream into HTTP/2 frames.

This library is used directly by hyper and a number of other projects to provide HTTP/2 frame decoding logic.


hyperframe welcomes contributions from anyone! Unlike many other projects we are happy to accept cosmetic contributions and small contributions, in addition to large feature requests and changes.

Before you contribute (either by opening an issue or filing a pull request), please read the contribution guidelines.


hyperframe is made available under the MIT License. For more details, see the LICENSE file in the repository.


hyperframe is maintained by Cory Benfield, with contributions from others. For more details about the contributors, please see CONTRIBUTORS.rst.

Release History

3.0.0 (2016-01-08)

Backwards Incompatible API Changes

  • Parsing padded frames that have invalid padding sizes now throws an InvalidPaddingError.

2.2.0 (2015-10-15)

API Changes

  • When an unknown frame is encountered, parse_frame_header now throws a ValueError subclass: UnknownFrameError. This subclass contains the frame type and the length of the frame body.

2.1.0 (2015-10-06)

API Changes

  • Frames parsed from binary data now carry a body_len attribute that matches the frame length (minus the frame header).

2.0.0 (2015-09-21)

API Changes

  • Attempting to parse unrecognised frames now throws ValueError instead of KeyError. Thanks to @Kriechi!
  • Flags are now validated for correctness, preventing setting flags that hyperframe does not recognise and that would not serialize. Thanks to @mhils!
  • Frame properties can now be initialized in the constructors. Thanks to @mhils and @Kriechi!
  • Frames that cannot be sent on a stream now have their stream ID defaulted to 0. Thanks to @Kriechi!

Other Changes

  • Frames have a more useful repr. Thanks to @mhils!

1.1.1 (2015-07-20)

  • Fix a bug where FRAME_MAX_LEN was one byte too small.

1.1.0 (2015-06-28)

  • Add body_len property to frames to enable introspection of the actual frame length. Thanks to @jdecuyper!

1.0.1 (2015-06-27)

  • Fix bug where the frame header would have an incorrect length added to it.

1.0.0 (2015-04-12)

  • Initial extraction from hyper.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for hyperframe, version 3.0.0
Filename, size File type Python version Upload date Hashes
Filename, size hyperframe-3.0.0-py2.py3-none-any.whl (12.1 kB) File type Wheel Python version 3.5 Upload date Hashes View hashes
Filename, size hyperframe-3.0.0.tar.gz (14.4 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page