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