Changelog for python3-idna: 3.18 -> 3.19 Source: HISTORY.md ## 3.19 (2026-08-XX) - Restore the `std3_rules` option, which had no effect since changes to UTS #46 processing in Unicode 16. Note that `uts46_remap()` defaults to enabling STD3 rules, so direct callers will see input containing non-LDH ASCII characters rejected again. - Performance improvements to UTS #46 mapping, particularly for ASCII-only domains. - Test on free-threaded CPython with the GIL disabled and document thread safety. - Expose the Unicode version of the generated tables as `idna.unicode_version`, and show it in `idna --version`. - Add `code`, `text`, `codepoint` and `position` attributes to `IDNAError` so that the failed rule and the offending character can be identified without parsing the exception message. - The deprecated `transitional` argument to `encode()` and `uts46_remap()` is now completely ignored, and gives a deprecation warning for the latter. - Reject A-labels that are not the canonical Punycode encoding of their U-label. - Fix CONTEXTJ violations raising `IDNAError` instead of `InvalidCodepointContext`. - Consistently raise `IDNAError` for empty labels and non-ASCII bytes passed to label helper functions and the incremental codec. - Add property-based tests, extended fuzzing targets, coverage measurement, and CI checks that the data tables match the generator output. - Various code quality and tooling improvements. Thanks to stefan6419846, LouieLuNZ, and Salvatore Corvaglia for contributions to this release.