---
title: "idna Breaking Changes on PyPI | Since.dev"
description: "What each idna release removed, renamed or changed: 5 breaking changes in 3 versions on PyPI, each with its source."
canonical_url: https://since.dev/packages/pypi/idna
last_updated: 2026-05-12
---

# idna breaking changes

Every breaking API change we have recorded in idna on PyPI: 5 breaking changes in 3 versions. Below are its newest 3 versions, removals and renames first, each with its source.

Newest change May 12, 2026

## 3.15

1 breaking change, first published May 12, 2026.

- **Signature changed** `idna.valid_string_length`  

Was def valid_string_length(label: Union\[bytes, str\], trailing_dot: bool) -> bool; now def valid_string_length(domain: Union\[bytes, str\], trailing_dot: bool) -> bool. [pypi.org](https://pypi.org/project/idna/3.15/)

## 3.14

1 breaking change, first published May 10, 2026.

- **Behavior changed**  

Inputs that are too long are now rejected immediately instead of being processed slowly. Code that passes very long inputs may now get an error where it previously succeeded. [github.com](https://github.com/kjd/idna/blob/v3.14/HISTORY.rst)

## 3.12

3 breaking changes, first published April 21, 2026.

- **Behavior changed**  

The package now uses Unicode 17.0.0 data, so some inputs may be validated or mapped differently than before. [github.com](https://github.com/kjd/idna/blob/v3.12/HISTORY.rst)
- **Signature changed** `idna.idnadata.joining_types`  

Was joining_types; now def joining_types() -> Dict\[int, int\]. [pypi.org](https://pypi.org/project/idna/3.12/)
- **Signature changed** `idna.uts46data.uts46data`  

Was uts46data; now uts46data: Tuple\[Union\[Tuple\[int, str\], Tuple\[int, str, str\]\], ...\]. [pypi.org](https://pypi.org/project/idna/3.12/)

## 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.
