Looks like it’s twine that’s doing it. From twine/package.py:
def _safe_name(name: str) -> str:
"""Convert an arbitrary string to a standard distribution name.
Any runs of non-alphanumeric/. characters are replaced with a single '-'.
Copied from pkg_resources.safe_name for compatibility with warehouse.
See https://github.com/pypa/twine/issues/743.
"""
return re.sub("[^A-Za-z0-9.]+", "-", name)
So this is probably more appropriate for Amending PEP 427 (and PEP 625) on package normalization rules
@admins, is it possible to move the thread from Stop Allowing deleting things from PyPI? - #79 above in this topic over to that topic?