Package name normalization#
Project names are “normalized” for use in various contexts. This document describes how project names should be normalized.
Valid non-normalized names#
A valid name consists only of ASCII letters and numbers, period,
underscore and hyphen. It must start and end with a letter or number.
This means that valid project names are limited to those which match the
following regex (run with
The name should be lowercased with all runs of the characters
_ replaced with a single
- character. This can be implemented in Python with the re module:
import re def normalize(name): return re.sub(r"[-_.]+", "-", name).lower()
This means that the following names are all equivalent:
FrIeNdLy-._.-bArD(a terrible way to write a name, but it is valid)