名前と正規化#
この仕様では、パッケージや追加物の名前が従うことを要求されるフォーマットを定義します。あわせて、ルックアップや比較を行う前に行われるべき標準化方法についても記述します。
名前のフォーマット#
正当な名前は 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
( ひどい 書き方の名前の例だが、正当である)