Normalização de nome de pacote¶
Os nomes dos projetos são “normalizados” para uso em vários contextos. Este documento descreve como os nomes dos projetos devem ser normalizados.
Nomes não normalizados válidos¶
Um nome válido consiste apenas em letras e números ASCII, ponto, sublinhado e hífen. Deve começar e terminar com uma letra ou número. Isso significa que nomes de projeto válidos são limitados àqueles que correspondem ao seguinte regex (executado com re.IGNORECASE
):
^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$
Normalização¶
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
(forma normalizada)Friendly-Bard
FRIENDLY-BARD
friendly.bard
friendly_bard
friendly--bard
FrIeNdLy-._.-bArD
(uma forma _terrível_ de descrever um nome, mas é válida)
Histórico¶
September 2015: normalized name was originally specified in PEP 503#normalized-names.
November 2015: valid non-normalized name was originally specified in PEP 508#names.