Output changed
known regression: unicode-lowercasecanonicalize_name("İ")The PR is described as a performance refactor with no intention to change Unicode handling. The new code replaces Unicode‑aware `.lower()` with an ASCII‑only translation table, causing non‑ASCII letters like “İ” to remain uppercase. This is an unintended regression.
# About 2x faster, safe since packages only support alphanumeric characters# Emulates ``re.sub(rFound by: Nemotron strategy search, Ultra's planned example, hostile mutation, search sample · also caught by: Plain Hypothesis, Mutations of the PR's own test strings, Nemotron plan only
ran onToken Factory Sandboxes · image a2d83f6b-ca9d-4fca-95ce-558082aac714
Regression test verified passes on base, fails on head
def test_1030_p1_value_0():
"""Breakwater P1: base behaviour pinned (found by differential testing; label: likely-bug)."""
from packaging.utils import canonicalize_name
assert canonicalize_name('İ') == 'i̇'
Reproduce
uv run breakwater probe --repo https://github.com/pypa/packaging --base 52e57f20037f --head 3803ce341b59 --target packaging.utils:canonicalize_name --backend contree --input "İ"2 near-duplicate classes same behaviour, inputs with extra traits
canonicalize_name("İ ")base value: "i̇ " · head value: "İ "unicode-lowercase test verifiedcanonicalize_name("İ\u0000")base value: "i̇\u0000" · head value: "İ\u0000"unicode-lowercase test verified