Closed
Description
Bug report
Bug description:
The exception string in encondings.idna.IncrementalDecoder
is missing the 'f' prefix.
Line 319 in 3612d8f
The exception can be triggered with this snippet.
from encodings.idna import IncrementalDecoder
decoder = IncrementalDecoder(errors='boom!')
decoder.decode(b'')
On main
$ ./python test.py
Traceback (most recent call last):
File "/home/hollas/software/cpython/test.py", line 3, in <module>
decoder.decode(b'')
~~~~~~~~~~~~~~^^^^^
File "<frozen codecs>", line 325, in decode
File "/home/hollas/software/cpython/Lib/encodings/idna.py", line 319, in _buffer_decode
raise UnicodeError("Unsupported error handling: {errors}")
UnicodeError: Unsupported error handling: {errors}
The issue also exists on Python 3.13 and 3.14, but not on 3.12
$ uvx python@3.12 test.py
Traceback (most recent call last):
File "/home/hollas/software/cpython/test.py", line 3, in <module>
decoder.decode(b'')
File "<frozen codecs>", line 322, in decode
File "/usr/lib64/python3.12/encodings/idna.py", line 264, in _buffer_decode
raise UnicodeError("Unsupported error handling "+errors)
UnicodeError: Unsupported error handling boom!
(I'll submit a PR shortly)
CPython versions tested on:
CPython main branch
Operating systems tested on:
No response
Activity
danielhollas commentedon Jun 3, 2025
Note: I was inspired by the same issue reported in #134970 and used ruff linter to find this bug, specifically its RUF024 (missing-f-string-syntax) rule.
ruff check --target-version=py314 --preview --select RUF027 Lib/
It found two other hits in
Lib/test/support/__init__.py
, I'll file a separate issue for those.gh-135069: Fix exception message in encodings.idna module (#135071)
pythongh-135069: Fix exception message in encodings.idna module (pyth…
pythongh-135069: Fix exception message in encodings.idna module (pyth…
[3.14] gh-135069: Fix exception message in encodings.idna module (GH-…
[3.13] gh-135069: Fix exception message in encodings.idna module (GH-…