跳转到主要内容

添加命令以从所选的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.txtversion_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。 pipsetuptools 将会显示警告。

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.dev1.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。

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。

源代码分发

setuptools-version-command-99.9.tar.gz (7.2 kB 查看哈希值)

源代码

构建分发

setuptools_version_command-99.9-py2.py3-none-any.whl (7.6 kB 查看哈希值)

Python 2 Python 3

由以下赞助

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面