名前と正規化#

この仕様では、パッケージや追加物の名前が従うことを要求されるフォーマットを定義します。あわせて、ルックアップや比較を行う前に行われるべき標準化方法についても記述します。

名前のフォーマット#

正当な名前は 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 ( ひどい 書き方の名前の例だが、正当である)

歴史#

  • 2015年9月: 503 を通じて名前の正規化に関わる仕様が承認されました。

  • 2015年11月: 508 を通じて正当な名前に関する仕様が承認されました。