从 pyproject.toml 文件更新包版本的最佳方法

Cwi*_*ssy 5 python-3.x python-poetry

我的工作流程在包的init .py 中嵌入了一个__version__包变量。当使用诗歌(或类似的)更新包版本时,我也希望我的嵌入变量得到更新。poetry version patch__version__

我目前使用预提交挂钩(git),如下所示:

#!/bin/bash


read name version < <(poetry version)

read pversion < <(python -c  "from ${name} import __version__;print(__version__)")

init=${name}/__init__.py

if [[ "${pversion}" != "${version}" ]]; then
    (
cat <<-UPDATEINIT
""" ${name} package"""
__version__ = "${version}"
UPDATEINIT
    ) >$init
    git add $init
fi
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法我错过了,因为那个钩子看起来有点“笨重”。

小智 1

已经有一种有用的方法来使用pyproject.toml动态元数据,例如

[tool.setuptools.dynamic]
version = {attr = "my_package.__version__"}
readme = {file = "README.md"}
Run Code Online (Sandbox Code Playgroud)

来自安装工具指南