Incremental は、将来をサポートする CalVer バージョン マネージャーです。
API ドキュメントはここにあります。物語のドキュメントが続きます。
コンテンツ
動作理論
クイックスタート
セットアップツールの使用
孵化したばかりの子の使用
setup.py
の使用
プロジェクトを初期化する
ランタイム統合
増分バージョン
更新中
不確定なバージョン
バージョン番号の形式は YY.MM.PATCH です。
プロジェクトの名前が「Shrubbery」の場合、そのコードはshrubbery/
またはsrc/shrubbery/
にあります。
Incremental は、プロジェクトのバージョン番号を{src/}shrubbery/_version.py
に保存します。
バージョンを更新するには、必要に応じて--rc
および/または--patch
渡して、 incremental update Shrubbery
を実行します (下記の「更新」を参照)。
バージョンを変更すると、コードベース内の「Shrubbery NEXT」などの不定バージョンも更新されるため、ドキュメントで次のリリースを参照できます。それがインクリメンタルが未来をサポートする方法です。
Incremental をpyproject.toml
に追加します。
[build-system]requires = ["setuptools","incremental>=24.7.2", # ← ビルドの依存関係としてインクリメンタルを追加]build-backend = "setuptools.build_meta"[project]name = "<プロジェクト名>"dynamic = ["version"] # ← バージョンをマークする Dynamicdependency = ["incremental>=24.7.2", # ← 依存実行時のインクリメンタル]# ...[tool.incremental] # ← Incremental の setuptools プラグインをアクティブ化する
[tool.incremental]
テーブルが空でも問題ありませんが、存在する必要があります。
[project] version =
エントリと[tool.setuptools.dynamic] version =
エントリを削除します。
次にプロジェクトを初期化します。
Hatchling を使用してプロジェクトをパッケージ化している場合は、 pyproject.toml
変更して Incremental の Hatchling プラグインをアクティブにします。
[build-system]requires = ["hatchling","incremental>=24.7.2", # ← ビルドの依存関係としてインクリメンタルを追加]build-backend = "hatchling.build"[project]name = "<プロジェクト名>"dynamic = ["version"] # ← バージョンをマークします。 runtime]# ...[tool.hatch.version]source = "incremental" # ← Incremental の Hatchling プラグインをアクティブにする
インクリメンタルは、オプションの[tool.incremental]
テーブルで通常どおり構成できます。
hatch version
コマンドは、増分管理バージョンを報告します。バージョンを変更するには、 incremental update
コマンドを使用します ( hatch version
での設定はサポートされていません)。
次にプロジェクトを初期化します。
setup.py
の使用Incremental はpyproject.toml
の代わりにsetup.py
から使用できます。これをsetup()
呼び出しに追加し、他のバージョン管理引数を削除します。
setup(use_incremental=True,setup_requires=['incremental'],install_requires=['incremental'], # 他のインストール依存関係も含めて... }
次に、プロジェクトを初期化します。
pipx install incremental
を使用して、Incremental をローカル環境にインストールします。次に、 incremental update
実行します。次のような_version.py
という名前のファイルがパッケージ内に作成されます。
増分インポートから Version__version__ = Version("<プロジェクト名>", 24, 1, 0)__all__ = ["__version__"]
プロジェクトの後続のインストールでは、バージョン管理に増分が使用されます。
パッケージの API で_version.py
からincremental.Version
公開できます。これを行うには、ルート パッケージの__init__.py
に次の内容を追加します。
._version インポート __version__ から
注記
インストールされているパッケージのバージョンを取得できる Python 3.6 の importlib.metadata.version() の導入以降、 __version__
属性を指定することは時代遅れになりつつあります。
このオブジェクトを公開しない場合、またはパッケージ内で使用しない場合は、実行時に Incremental に依存する必要はありません。これは、プロジェクトのdependencies
配列から (または、 setup.py
のinstall_requires
から) 削除できます。
incremental.Version
は、特定のプロジェクトのバージョンを表すクラスです。これは、次の要素で構成されます (インスタンス化中に指定されます)。
package
(必須)、このVersion
が表すパッケージの名前。
major
、 minor
、 micro
(すべて必須)、プロジェクトのVersion
の XYZ 。
release_candidate
(オプション)。0 以上に設定すると、このVersion
リリース候補 (「プレリリース」とも呼ばれる) であることをマークします。
post
(オプション)。このVersion
ポストリリースとしてマークするには、0 以上に設定します。
dev
(オプション)。このVersion
開発リリースとしてマークするには、0 以上に設定します。
PEP-440 と互換性のあるバージョン文字列を抽出するには、 .public()
メソッドを使用します。このメソッドは、完全なバージョンを含むstr
返します。これは、ユーザーに提供するか、公的に使用する必要があるバージョンです。出力例は、 "13.2.0"
、 "17.1.2dev1"
、または"18.8.0rc2"
になります。
Version
を指定してrepr()
呼び出すと、その Python ソース コード表現が得られ、 Version
でstr()
を呼び出すと、 '[Incremental, version 16.10.1]'
のような文字列が生成されます。
Incremental には、 incremental
と呼ばれる、Incremental を使用するプロジェクトのバージョンの更新を自動化するツールが含まれています。 _version.py
ファイルを更新し、増分バージョンの一部の使用を不定バージョンから現在のバージョンに自動的に更新します。 PyPI からclick
必要があります。
incremental update
そのパッケージの更新を実行します。その後に実行できるコマンドによって、次のバージョンが決まります。
--newversion=
、プロジェクト バージョンを完全に指定されたバージョン (1.2.3 や 17.1.0dev1 など) に設定します。
--rc
、現在のバージョンがリリース候補でない場合はプロジェクト バージョンを
に設定し、リリース候補の場合はリリース候補番号を 1 つ増やします。
--dev
、プロジェクトが開発リリースでない場合は開発リリース番号を 0 に設定し、開発リリースである場合は開発リリース番号を 1 つ上げます。
--patch
、リリースのパッチ番号を増やします。これにより、リリース候補番号もリセットされ、同時に--rc
渡してパッチ番号をインクリメントし、リリース候補にします。
--post
、ポストリリースでない場合はプロジェクトのポストリリース番号を 0 に設定し、ポストリリースである場合はポストリリース番号を 1 つ増やします。これにより、リリース候補および開発リリース番号もリセットされます。
引数を指定しない場合は、リリース候補番号が削除され、「完全リリース」になります。
インクリメンタルは、次の「完全」バージョンの代わりとして、「不確定」バージョンをサポートします。これは、エンドユーザーに表示されるバージョンが不明な場合に使用できます (たとえば、「で導入された」または「非推奨」)。インクリメンタルは、次の不定バージョンをサポートします。
Version("
incremental update
実行すると、これらは実際のバージョンに更新されます (ターゲットの最終バージョンが 17.1.0 であると仮定します)。
Version("
最終バージョンが作成されると、次のようになります。
Version("