1

我们使用简单的日期时间版本对所有公司包进行版本控制。现在我们正在考虑pyproject.toml改用setup.py. 是否也可以在那里进行灵活的版本控制?

version = datetime.datetime.now().strftime('%Y.%m.%d.%H%M')

# Actual setup
setup(
    name="some-package",
    version=version,
    description='Some description',
    packages=find_namespace_packages(where='src', include=['company.project.*']),
    package_dir={'': 'src'},
    python_requires='>=3.6',
    install_requires=[  
        'numpy',
        'numba'
    ],
)

我需要什么语法来调整 pyproject.toml 中的版本控制?这个正在使用poetry,但没有必要。

[tool.poetry]
name = "some-package"
version = "0.1.0"
description = ""
readme = "README.md"
4

1 回答 1

1

诗歌似乎不支持这一点,例如参见issue #4299

弗利特做到了。Flit 允许我们将版本声明为“动态” pyproject.toml

[project]
name = 'some_package'
dynamic = ['version']
description = 'Description of the package.'

[build-system]
requires = ['flit_core>=3.2,<4']
build-backend = 'flit_core.buildapi'

然后版本由包的__version__属性确定。例如,__init__.py可能包含以下内容:

import datetime
__version__ = datetime.datetime.now().strftime('%Y.%m.%d.%H%M')

但是请注意,在您的特定情况下,使用 构建包时flit build,Flit 将观察到版本号不符合PEP 440并相应地对其进行规范化,即从日期和月份数字中删除前导零。

于 2021-12-08T14:22:07.193 回答