以下のドキュメントをわかりやすくメモとして記載します
バージョン形式の構造
正規形式: [N!]N(.N)*[{a|b|rc}N][.postN][.devN]
構成要素(順番通り)
- エポック(オプション): 1! など
- リリースセグメント: 1.2.3 など
- プレリリース(オプション): a1, b2, rc3 など
- ポストリリース(オプション): .post1 など
- 開発リリース(オプション): .dev1 など
正規化のルール
- 大文字小文字:すべて小文字に変換される
- 区切り文字:., -, _ はすべて . に統一
- 前ゼロ:削除される(01.02.03 → 1.2.3)
- 暗黙の数値:.dev, .post などの後の数字を省略すると0
開発リリース(.dev)
- .devN で示される
- 対応するリリースの直前に配置される
- プレリリースやポストリリースと併用可能
- 数値を省略した場合は暗黙的に0
- 例:1.2.dev0, 1.2a1.dev1, 1.2.post1.dev2
ポストリリース(.post)
- .postN で示される
- リリース後の軽微な修正に使用
- 最終リリースの後に配置
- 数値を省略した場合は暗黙的に0
- 例:1.0.post1, 1.0a1.post2
プレリリース
- 3段階:
- アルファ版(a)
- ベータ版(b)
- リリース候補(rc)
- 順序:alpha < beta < release candidate < 正式リリース
- 例:1.0a1, 1.0b2, 1.0rc3
有効なバージョンの例
1.0
1.2.3
1.0a1 # アルファ版
1.0b2 # ベータ版
1.0rc3 # リリース候補
1.0.post1 # ポストリリース
1.0.dev1 # 開発版
1.0a1.dev1 # アルファ版の開発版
1.0.post1.dev1 # ポストリリースの開発版
2!1.0 # エポック付き
バージョンの順序は以下のようになります。
1.0.dev1 < 1.0a1 < 1.0a1.post1 < 1.0b1 < 1.0rc1 < 1.0 < 1.0.post1