Incremental 是支援未來的 CalVer 版本管理器。
API 文件可以在這裡找到。敘述性文檔如下。
內容
操作原理
快速入門
使用安裝工具
使用幼體
使用setup.py
初始化專案
運行時集成
增量版本
更新中
不確定版本
版本號的格式為 YY.MM.PATCH。
如果您的專案名為“Shrubbery”,則其程式碼位於shrubbery/
或src/shrubbery/
中。
增量將項目的版本號碼儲存在{src/}shrubbery/_version.py
中。
若要更新版本,請執行incremental update Shrubbery
,並根據需要傳遞--rc
和/或--patch
(請參閱下面的更新)。
更改版本也會更新程式碼庫中的任何不確定版本,例如“Shrubbery NEXT”,因此您可以在文件中引用即將發布的版本。這就是增量支持未來的方式。
將 Incremental 新增至您的pyproject.toml
:
[build-system]requires = ["setuptools","incremental>=24.7.2", # ← 新增增量作為建置依賴項]build-backend = "setuptools.build_meta"[project]name = "" dynamic = ["version"] # ← 標記版本dynamicdependencies = ["incremental>=24.7.2", # ← 運行時依賴incremental]# ...[tool.incremental] # ← 啟動Incremental setuptools插件的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"] # ← 標記版本dynamicdependencies = ["incremental>=24.7.2", # ← 運行時依賴增量]# ...[tool.hatch.version]source = "incremental" # ← 啟動Incremental 的Hatchling 插件
增量可以像往常一樣在可選的[tool.incremental]
表中配置。
hatch version
指令將報告增量管理的版本。使用incremental update
指令更改版本(不支援使用hatch version
設定)。
接下來,初始化專案。
setup.py
可以從setup.py
而不是pyproject.toml
使用增量。將其新增至您的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
(可選),設定為 0 或更高以將此Version
標記為發布後版本。
dev
(可選),設定為 0 或更高以將此Version
標記為開發版本。
您可以使用.public()
方法提取 PEP-440 相容版本字串,該方法傳回包含完整版本的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("