跳转到主要内容

使软件发布变得简单和可重复

项目描述

轻松实现软件发布:zest.releaser 简介和安装

zest.releaser 是一套命令行程序,帮助您自动化 Python 项目的发布任务。

它消除了所有无聊的部分。这是 zest.releaser 为您自动化的内容

  • 它更新版本号。版本号可以位于 setup.pyversion.txt 中,或在 Python 文件的 __version__ 属性中,或 setup.cfg 中。例如,它将您从 0.3.dev0(当前开发版本)切换到 0.3(发布版本)再到 0.4.dev0(新开发版本)。

  • 它更新历史/变更文件。在发布时会记录发布日期,并为即将到来的变更(新开发版本)添加新的标题。

  • 它标记发布。在您的版本控制系统创建一个以发布版本号命名的标签。

  • 它可选择性地上传源发布到 PyPI。只有当该软件包已在 PyPI 上注册时才会这样做(否则会询问,默认为“否”);zest releaser 不会发布您的私有项目!

最重要的网址

首先是最重要的三个链接

兼容性/依赖关系

https://img.shields.io/pypi/pyversions/zest.releaser?:alt:PyPI-PythonVersion https://img.shields.io/pypi/implementation/zest.releaser?:alt:PyPI-Implementation

zest.releaser 在 Python 3.8+ 上运行,包括 PyPy3。已测试到 Python 3.11,但请参阅 tox.ini 以获取官方位置。

确保:您使用 zest.releaser 发布的软件包可能在其他 Python 版本上运行:这完全取决于您的软件包。

我们依赖以下库

  • setuptools 提供入口钩子。

  • colorama 用于彩色输出(某些错误以红色打印)。

  • twine 用于通过 https 安全上传到 PyPI。普通的 setuptools 不支持此功能。

从版本 4.0 开始,有一个 recommended 额外功能,您可以通过安装 zest.releaser[recommended] 而不是 zest.releaser 来获得。它包含一些我们认为对大多数 zest.releaser 用户有用的受信任附加组件。

  • wheel 用于创建一个 Python 轮子,我们将将其与标准源分发一起上传到 PyPI。轮子是 Python 的官方二进制分发格式。从版本 8.0.0a2 开始,我们始终创建轮子,除非您在配置中明确将其关闭:create-wheel = false。如果您确定需要“通用”轮子,请遵循 wheel 文档 中的说明。

  • check-manifest 检查您的 MANIFEST.in 文件是否完整,或告诉您需要此类文件。它基本上检查是否所有受版本控制的文件都包含在我们将上传的分发中。这可能避免缺少文件的“棕色袋”发布。

  • pyroma 检查软件包是否遵循 Python 打包的最佳实践。它主要在 setup.py 文件上执行检查,例如检查 Python 版本分类器。

  • readme_renderer 以与 PyPI 相同的方式检查您的长描述。不再因为某个地方出现的小错误而在 PyPI 页面上出现未格式化的 restructured text。方便。

安装

只需简单执行 pip install zest.releasereasy_install zest.releaser 即可。如果您想安装推荐的额外工具,请执行 pip install zest.releaser[recommended]

或者,Buildout 用户可以将 zest.releaser 作为特定项目构建的一部分进行安装,通过拥有如下的构建配置

[buildout]
parts =
    scripts

[scripts]
recipe = zc.recipe.egg
eggs = zest.releaser[recommended]

版本控制系统:git

当然您必须安装一个版本控制系统。自第7版起,zest.releaser 只支持 git。

如果您使用 Subversion (svn)、Mercurial (hg)、Git-svn 或 Bazaar (bzr),请使用第6版。如果您真的想,您可能可以将旧代码的相关部分复制到一个新包中,并将其作为 zest.releaser 的附加包发布。我怀疑目前它可能只能通过 monkey patch 来工作。如果您有计划,请提交一个问题,我们可以看看如何使这部分可插拔。

可用命令

Zest.releaser 提供了四个命令,帮助您发布 Python 包。这些命令必须在版本控制的检出目录中运行。命令包括

  • prerelease:询问您版本号(默认为当前版本减去一个 'dev'),更新 setup.py 或 version.txt 以及 CHANGES/HISTORY/CHANGELOG 文件(使用 .rst/.txt/.md/.markdown 或无扩展名)与此新版本号,并建议将这些建议提交到 subversion(或 bzr 或 hg 或 git)。

  • release:复制当前检出的 trunk 或 branch,并为其创建一个版本控制标签。在临时目录中创建标签的检出。建议将此包的源分发布到 PyPI(Python 包索引)。注意:如果包尚未注册,它将不会为您完成此操作。您必须手动注册包(python setup.py register),因此这是一个有意识的决策。主要原因是不想说出:“哎呀,我上传了我们的客户端代码到互联网上;这是一个带有明文根密码的初始版本。”

  • postrelease:询问您版本号(提供一个合理的默认值),向其中添加一个开发标记,更新 setup.py 或 version.txt 以及 CHANGES/HISTORY/CHANGELOG 文件,并建议将这些建议提交到版本控制。注意,对于 git 和 hg,您也会被要求推送您的更改(自 3.27 版起)。否则,发布和标签仅存在于您的本地 hg/git 仓库中,而不在服务器上。

  • fullrelease:以上所有操作。

注意:Markdown 文件应使用“下划线”样式的标题,而不是以 # 标记为前缀的“atx”样式。

有一些额外的工具

  • longtest:一个小工具,用于渲染长描述并将其在网页浏览器中打开。在将其上传到 PyPI 之前,在本地调试格式问题时很有用。

  • lasttagdiff:一个小工具,显示当前分支与最后一个发布标签的 diff。在检查更改文件中是否充分描述了所有更改时很有用。

  • lasttaglog:一个小工具,显示自最后一个发布标签以来当前分支的 log。在检查更改文件中是否充分描述了所有更改时很有用。

  • addchangelogentry:通过命令行传递一些文本,它将此文本添加到更改日志中。这可能在您对一批包进行相同更改时非常有用。相同的文本用作提交信息。在更改日志中,文本缩进,第一行以破折号开头。命令会检测它,如果您例如使用星号作为条目第一字符。

  • bumpversion:不发布,只增加版本号。当有开发标记时,保留它。使用 --feature 选项我们更新次要版本。使用 --breaking 选项我们更新主要版本。

鸣谢

  • Reinout van Rees (Nelen & Schuurmans) 是原始作者。他和 Maurits 仍在维护它。

  • Maurits van Rees (Zest Software) 增加了很多改进,并与 Reinout 一起维护。

  • Kevin Teague (加拿大迈克尔·史密斯基因组科学中心) 添加了对多个版本控制系统的支持,特别是 Mercurial。

  • Wouter vanden Hove (根特大学) 添加了使用 collective.dist 上传到多个服务器的支持。

  • Godefroid Chapelle (BubbleNet) 为 subversion 添加了 /tag 代替 /tags。

  • Richard Mitchell (Isotoma) 添加了 Python 3 支持。

  • Mateusz Legięcki 添加了一个 dockerfile,以便更容易地进行测试。

  • Eli Sallé 为 zest.releaser 的选项添加了 pyproject.toml 支持。我们现在更现代了!

zest.releaser 的变更日志

9.2.0 (2024-06-16)

  • 修复了版本处理文档,使用 importlib 而不是 pkg_resources。 [reinout]

  • 在隔离环境中构建发行版。否则 build 无法安装构建系统所需的包,例如 hatchling。修复了问题 #448。[maurits]

9.1.3 (2024-02-07)

  • 修复了项目设置。 tox.ini 使用 extras = 而不是 deps = 来安装测试扩展。 [mtelka]

9.1.2 (2024-02-05)

  • 如果您想构建一个发布包(release=true,默认值),但实际上不想上传它,现在可以设置 upload-pypi 选项为 false(默认值为 true)。 [leplatrem]

9.1.1 (2023-10-11)

  • 在读取 ~/.pypirc 配置时,同时读取 setup.cfg,因为它可能覆盖了这些值,例如 [distutils] index-servers。修复了问题 #436。[maurits]

9.1.0 (2023-10-03)

  • 使用更新的 ‘build’ (>=1.0.0),包括轻微的 API 变更,修复了 #433。[reinout]

  • 修复了说明书中的一处错误:我们查看 __version__ 而不是之前记录的 __versions__… [reinout]

9.0.0 (2023-09-11)

  • 发布最终版本。自上次测试版以来没有变化。[maurits]

9.0.0b1 (2023-07-31)

  • 当我们调用的命令以非零退出代码退出时,在输出中明确指出这一点。询问用户是否想继续或取消。请注意,正确执行此操作可能很复杂。一些命令(如 git)似乎会将所有内容打印到 stderr,使我们认为存在错误,但实际上退出代码为零,因此应该没问题。我们不希望问太多问题,但也不希望默默地吞下重要的错误。[maurits]

9.0.0a3 (2023-07-25)

  • 更新了贡献者列表。

  • 记录了 entry points 的 hook_package_dir 设置(顺便说一下,对于大多数 entry points 来说,这不是必需的)。修复了问题 #370。

  • 允许对 git push 进行重试,它可能因受保护的分支而失败。同时显示当它发生时的可能原因。修复了问题 #385。

9.0.0a2 (2023-07-19)

  • 在调用 build 时忽略错误输出。我们只需要查看退出代码以确定它是否成功。如果您想查看可能的警告,可以调用 zest.releaser 并使用 --verbose

  • 删除了 encoding 配置选项,因为没有人再使用了(使用该选项会导致崩溃)。显然,由于我们不使用 python 2,现在它也不再需要了。修复了问题 #391。

  • 现在 longtest 更加简单了。它运行 readme_renderer 并直接在浏览器中显示结果,没有错误处理。如果您想要真正的严格检查,应使用 twine checklongtest --headless 已弃用)。优点是 longtest 现在也能正确渲染 Markdown。这增加了 readme_renderer[md] 作为依赖项。修复了 问题 363

9.0.0a1(2023-07-13)

  • 将构建系统改为 pypa/build,而不是显式使用 setuptools。

  • Zest.releaser 的设置现在也可以放置在 pyproject.toml 中。

  • 使用 zest.releaser 的原生命名空间包,而不是弃用的基于 pkg_resources 的包。

  • 添加了 pre-commit 配置以使代码更整洁(black、flake8、isort)。

  • 停止支持 Python 3.7。与切换到 buildpyproject.toml 一起,这需要版本号的大幅提升。

8.0.0 (2023-05-05)

  • 发布最终版本,自最新 alpha 版本以来没有变化。[maurits]

8.0.0a2(2023-04-06)

  • 除非您在配置中明确将其关闭,否则始终创建 wheels:[zest.releaser] create-wheel = no。如果 wheel 包不可用,我们仍然不会创建 wheels。修复了 问题 406。[maurits]

  • 当标签版本无法解析时不会失败。这可能在 lasttagloglasttagdiffbumpversion 中发生,使用 setuptools 66 或更高版本。修复了 问题 408。[maurits]

8.0.0a1(2023-02-08)

  • 停止支持 Python 3.6。[maurits]

  • 支持读取和写入 pyproject.toml 中的版本。请参阅 问题 295问题 373PEP-621,[maurits]

7.3.0 (2023-02-07)

  • 添加 run-pre-commit = yes / no 选项。默认值:no。当设置为 true 时,将运行 pre 提交钩子。这可能会在它们失败时干扰发布。[maurits]

7.2.0 (2022-12-09)

  • 根据历史文件名自动检测 history_format。[ericof]

  • 添加 history_format 选项,以在 Markdown 中显式设置更改日志条目。[ericof]

7.1.0 (2022-11-23)

  • bumpversion 选项添加到 postrelease 命令。这意味着 featurebreakingfinal。[rnc、maurits]

  • --final 选项添加到 bumpversion 命令。这意味着从版本中删除 alpha / beta / rc 标记。[maurits]

  • 添加对 Python 3.11 的支持,从测试依赖中删除 z3c.testsetup。[maurits]

7.0.0 (2022-09-09)

  • 可选地添加前缀文本到提交信息。这可以用来确保您的消息遵循某些正则表达式。要激活此功能,请将 prefix-message = [TAG] 添加到您的包的 [zest.releaser] 部分 setup.cfg,或您的全局 ~/.pypirc。或者在那里添加您最喜欢的极客名言。[LvffY]

7.0.0a3(2022-04-04)

  • 错误 381:在 prerelease 中,使用 pep440 检查版本是否是规范化的。将 pep440 添加到 recommended 额外依赖项,而不是核心依赖项:zest.releaser 也可以用于非 Python 项目。[maurits]

7.0.0a2(2022-02-10)

  • longtest 添加 --headless 选项。

7.0.0a1(2021-12-01)

进行大量清理以简化未来的开发。

  • 移除了对Subversion(svn)、Bazaar(bzr)、Mercurial(hg)的支持。

  • 移除了对Python 2和3.5的支持。

  • 增加了对Python 3.9和3.10的支持。

  • 使用Python 3.6-3.10和PyPy3进行了测试。

  • 从Travis切换到GitHub Actions。

  • 通过使用subprocess.run简化了命令的运行。

项目详情


发布历史 发布通知 | RSS源

下载文件

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

源代码分发

zest.releaser-9.2.0.tar.gz (120.4 kB 查看哈希值)

上传时间: 源代码

由以下机构支持