代码之家  ›  专栏  ›  技术社区  ›  Roelant

将pyproject.toml与datetime的灵活版本一起使用

  •  0
  • Roelant  · 技术社区  · 3 年前

    我们用一个简单的日期时间版本来版本化我们公司的所有软件包。现在我们正在考虑转移到 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"
    
    0 回复  |  直到 3 年前
        1
  •  1
  •   john-hen    3 年前

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

    但是 Flit 做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 normalize 相应地,即从日期和月份数字中删除前导零。