Thanks Chris for the response!
As The Unicode Standard does define an uppercase form for the German sharp S
(U+00DF → U+1E9E), and this has been part of Unicode since version 5.1 (2008),
with the German orthography officially adopting it in 2017. The relevant case
mappings are clearly specified in the Unicode Character Database
(CaseFolding.txt / SpecialCasing.txt), so Unicode itself does recognize this
direct uppercase/lowercase relationship.
The current Python behavior (mapping "ß" → "SS") reflects older, legacy Unicode
data — not the current standard. Languages and libraries that have updated
their Unicode handling (like Java ≥9, ICU, Swift, etc.) already perform this
mapping correctly ("ß".upper() → "ẞ").
So this isn’t an issue with Unicode, but rather that Python’s internal Unicode
case conversion logic hasn’t yet been updated to reflect the more modern and
officially standardized mapping.
In other words, this is something Python could and probably should modernize —
aligning with Unicode’s current case conversion tables and modern German
orthography.
--
https://mail.python.org/mailman3//lists/python-list.python.org