パッケージ名の正規化#
プロジェクト名は、さまざまな文脈で使用するために "正規化" されます。この説明文書では、プロジェクト名がどのように正規化されるべきかについて記述します。
正当な非正規化名#
正当な名前は ASCII 文字・数字・ピリオド・アンダースコア・ハイフンだけで構成されているものです。名前の先頭と末尾は文字か数字でなければなりません。正当なプロジェクト名は、次の正規表現に (re.IGNORECASE
付きで) マッチするものに限らるということになります:
^([A-Z0-9]|[A-Z0-9][A-Z0-9._-]*[A-Z0-9])$
正規化#
名前は、すべての文字を小文字にして、 .
・ ,
・ _
の文字が連続で1個以上出現したらそれを単独の -
の文字に置き換えるべきです。これは、 Python の re モジュールを使って実装することができます:
import re
def normalize(name):
return re.sub(r"[-_.]+", "-", name).lower()
次に挙げる名前はすべて同等ということになります:
friendly-bard
(正規化形式)Friendly-Bard
FRIENDLY-BARD
friendly.bard
friendly_bard
friendly--bard
FrIeNdLy-._.-bArD
(a terrible way to write a name, but it is valid)
歴史#
2015年9月: 正規化された名称は、元々は PEP 503#normalized-names で仕様化されていました。
2015年11月: 正当であるが正規化されてはいない名称は、元々は PEP 508#names で仕様化されていました。