setuptools-scm 何时/为何将 .devXXX 附加到其生成的版本?
在几个存储库中,我维护 setuptools-scm 开始生成版本号后附加 .devXXX 的版本。这会导致问题,因为此标签对于上传到 PyPi 无效。
第一次发生这种情况时,我创建了一个解决方法,我认为这是因为我在 git 中做了一些不正确的事情。但这只是发生在一个非常简单的项目中,这真的很令人沮丧。
我之前使用的解决方法是通过
use_scm_version
劫持版本控制。这不太理想,我想了解根本原因。
提前感谢您提供的任何帮助!
文档在这里: https://github.com/pypa/setuptools_scm/#importing-in-setuppy
# setup.py
def _clean_version():
"""
This function was required because scm was generating developer versions on
GitHub Action.
"""
def get_version(version):
return str(version.tag)
def empty(version):
return ''
return {'local_scheme': get_version, 'version_scheme': empty}
setuptools.setup(
...
use_scm_version=_clean_version,
...
)
这样做是因为未标记的提交的版本值计算如下:
X.Y.(Z+1)-devN-gSHA
地点:
X.Y.Z 是您实际所在位置之上的最新标记提交。
N 是您在上一个 X.Y.Z 之后的提交次数
SHA 是您当前提交的 SHA。
-dev*
版本被视为其所遵循的测试版/预版。
所以
X.Y.(Z+1)-devN-gSHA
被视为 X.Y.(Z+1)
的测试版/预版。
我这样做了,但仍然不起作用,谁知道什么原因。我做的最后一件事是:
git标签v0.1.27
git推送起源v0.1.27
然后我仍然得到: dist/fibphoflow-0.1.27.dev0+g143b972.d20231019-py3-none-any.whl
相当令人沮丧