添加命令以从所选的VCS动态获取版本
项目描述
从版本控制获取版本,而不是将其硬编码到 setup.py 中
⚠ 弃用通知 ⚠
该软件包不再维护。它不会随着Python打包生态系统的进化而进化。具体来说,截至2021年11月,它将无法与在 setup.cfg 中定义的静态元数据一起工作,而不是在 setup.py 中定义的元数据。
有一个很好的替代方案:使用 setuptools-scm。在 setup.cfg 中设置起来很简单,请参阅PyPA的 Python项目打包 指南。
介绍
不像这样在 setup.py 中硬编码版本
setup(
name='some-dist-name',
version='1.0',
...)
此软件包允许指定VCS命令如下
setup(
name='some-dist-name',
version_command='git describe',
...)
…然后会将版本更新到 some-dist-name.egg-info/version.txt,这样如果从sdist或类似的地方运行 setup.py,也可以找到版本。
当它可以从 some-dist-name.egg-info/version.txt 或 version_command 的输出中找到版本时,它会更新通常用于版本的版本键,例如在sdist文件名中使用的版本等。
setup关键字
不要指定 version 关键字参数,而是指定 version_command 关键字参数。它可以是字符串或元组。如果是字符串,则解释为要执行的命令,例如 git describe。如果是元组,则必须包含两个或三个元素,其形式为 (command, pep440_mode[, post_mode])。在 version_argument 的元组中指定 pep440_mode,而不是作为 setup 的单独参数。
传递给 version_command 关键字参数的元组的可能值列表
- command:
必须是 "git describe",但未来可能也支持其他版本控制系统。
- pep440_mode = None:
直接使用命令输出,因此忽略 PEP440。 pip 和 setuptools 将会显示警告。
- pep440_mode = "pep440-git-local":
将提交数和哈希值作为本地标识符移动
将 1.2.3 改为 1.2.3
将 1.2.3-10-abc1234 改为 1.2.3+git-10-abc1234
- pep440_mode = "pep440-git-dev":
(已弃用) 将自 Git 标签以来的提交数添加为 .dev 标签
将 1.2.3-N-abc1234 改为 1.2.3.devN
这违反了 PEP440 规范,只为向后兼容而提供。它可能会在未来被移除。
- pep440_mode = "pep440-git":
适用于预发布版本(alpha、beta、rc 等)、发布后版本(post、rev 等)和开发版本。
保留 1.2.3.dev 和 1.2.3.dev0 不变
将 1.2.3.dev-N-abc1234 改为 1.2.3.devN
将 1.2.3a-N-ab1234 改为 1.2.3aN
将 1.2.3 改为 1.2.3
将 1.2.3-10-abcd123 改为 1.2.3.post10,或者 1.2.3-rev10,根据您的要求
换句话说,标签可以是缺失的、打开的(隐式或显式为 0)或关闭的(具有大于零的数字)。如果最后一个 Git 标签是一个打开的 dev 标签,那么它将用于修订号。如果最后一个 Git 标签是一个打开的发布后标签,则将使用它。如果最后一个 Git 标签是一个打开的预发布标签,则将使用它。在其他情况下,将添加一个发布后标签。
- pep440_mode = "pep440-git-full":
类似于 "pep440-git",但将提交哈希和脏标记(如果存在)包括在本地版本部分中。
将 1.2.3.dev-N-abc1234 改为 1.2.3.devN+gabc1234
将 1.2.3-dirty 改为 1.2.3+dirty
将 1.2.3-10-abcd123-dirty 改为 1.2.3.post10+gabcd123.dirty
将哈希包含在本地标识符中可以帮助避免两个版本之间的歧义,这两个版本距离最新标签的提交数相同。
包含脏标记(需要将 command 值包含 --dirty 选项)可以确保未提交的本地更改被认为比最后一组提交更改更新。
- post_mode:
发布后标签添加模板。可选的分隔符(点、破折号或下划线),后跟"post","rev"或"r",然后是另一个可选的分隔符。也可以是单个破折号。默认为".post"。
给定git describe的输出为1.2a3-4-abcd123
".post"给出1.2a3.post4
".rev_"给出1.2a3.rev_4
"-"给出1.2a3-4
安装
要使用它,只需这样做
pip install setuptools-version-command
使用全局Python的pip。 (或使用--user)
测试
要测试它,运行./setup.py --version。
开发
在此仓库的检出目录下
virtualenv env
env/bin/pip install --editable .
env/bin/python setup.py --version
确保您已更改setup.py,以便它实际上使用setuptools-version-command。
项目详情
哈希值 for setuptools_version_command-99.9-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c183536ec74df2d29964e757e0f00a109d734de919d82a84f8bc4b8ab2af9909 |
|
MD5 | 40058032e46674a4025e477cfa352eb8 |
|
BLAKE2b-256 | 3b08fc5c68dd97eaf8e8807d045712a71af475d6a79eef7f7028b53568faae37 |