---
title: "hpack Breaking Changes on PyPI | Since.dev"
description: "What each hpack release removed, renamed or changed: 6 breaking changes in 1 version on PyPI, each with its source."
canonical_url: https://since.dev/packages/pypi/hpack
last_updated: 2026-06-23
---

# hpack breaking changes

Every breaking API change we have recorded in hpack on PyPI: 6 breaking changes in 1 version. Below are its newest version, removals and renames first, each with its source.

Newest change June 23, 2026

## 4.2.0

6 breaking changes, first published June 23, 2026.

- **Removed**  

PyPy 3.9 is no longer supported. Users on PyPy 3.9 must stay on hpack 4.1.0 or upgrade their PyPy version. [github.com](https://github.com/python-hyper/hpack/blob/v4.2.0/CHANGELOG.rst)
- **Removed**  

Python 3.9 is no longer supported. Users on Python 3.9 must stay on hpack 4.1.0 or upgrade their Python version. [github.com](https://github.com/python-hyper/hpack/blob/v4.2.0/CHANGELOG.rst)
- **Behavior changed**  

Variable integer decoding now rejects values larger than uint32, which previously decoded without error. Code relying on larger values will now fail. [github.com](https://github.com/python-hyper/hpack/blob/v4.2.0/CHANGELOG.rst)
- **Signature changed** `hpack.hpack.decode_huffman`  

Was def decode_huffman(huffman_string: bytes | bytearray | None) -> bytes; now def decode_huffman(huffman_string: bytes | bytearray | memoryview | None) -> bytes. [pypi.org](https://pypi.org/project/hpack/4.2.0/)
- **Signature changed** `hpack.hpack.decode_integer`  

Was def decode_integer(data: bytes, prefix_bits: int) -> tuple\[int, int\]; now def decode_integer(data: bytes | memoryview, prefix_bits: int) -> tuple\[int, int\]. [pypi.org](https://pypi.org/project/hpack/4.2.0/)
- **Signature changed** `hpack.huffman_table.decode_huffman`  

Was def decode_huffman(huffman_string: bytes | bytearray | None) -> bytes; now def decode_huffman(huffman_string: bytes | bytearray | memoryview | None) -> bytes. [pypi.org](https://pypi.org/project/hpack/4.2.0/)

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
