Names and normalization#

This specification defines the format that names for packages and extras are required to follow. It also describes how to normalize them, which should be done before lookups and comparisons.

Name format#

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 re.IGNORECASE):

^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$

Name normalization#

O nome deve ser colocado em letras minúsculas com todos os caracteres ., - ou _ substituídos por um único caractere -. Isso pode ser implementado em Python com o módulo re:

import re

def normalize(name):
    return re.sub(r"[-_.]+", "-", name).lower()

Isso significa que os seguintes nomes são todos equivalentes:

  • friendly-bard (normalized form)

  • Friendly-Bard

  • FRIENDLY-BARD

  • friendly.bard

  • friendly_bard

  • friendly--bard

  • FrIeNdLy-._.-bArD (a terrible way to write a name, but it is valid)

Histórico#

  • September 2015: The specification of name normalized was approved through 503.

  • November 2015: The specification of valid names was approved through 508.