poetry-dynamic-versioning:如何用VCS标签实现Python项目版本自动管理?
poetry-dynamic-versioning如何用VCS标签实现Python项目版本自动管理【免费下载链接】poetry-dynamic-versioningPlugin for Poetry to enable dynamic versioning based on VCS tags项目地址: https://gitcode.com/gh_mirrors/po/poetry-dynamic-versioningpoetry-dynamic-versioning是一个为Poetry设计的Python插件能够基于版本控制系统VCS标签实现动态版本管理。它支持Git、Mercurial等多种VCS通过自动化版本提取和文件更新让开发者告别手动修改版本号的繁琐工作专注于代码开发本身。 为什么需要动态版本管理在传统开发流程中每次发布新版本都需要手动修改pyproject.toml和代码中的__version__变量不仅容易出错还可能因版本号不一致导致构建问题。poetry-dynamic-versioning通过以下方式解决这些痛点自动化版本提取直接从VCS标签如git tag v1.0.0中提取版本信息临时文件修改在poetry build等命令执行期间自动更新版本相关文件完成后自动还原灵活版本格式支持PEP 440、SemVer等多种版本规范可自定义版本格式多文件同步自动更新__version__变量和版本元组保持项目版本一致性 快速安装指南前置条件Python 3.7Poetry 1.2.0安装步骤添加插件依赖在项目的pyproject.toml中添加以下配置然后运行poetry install[tool.poetry.requires-plugins] poetry-dynamic-versioning { version 1.0.0,2.0.0, extras [plugin] }启用插件执行命令自动配置项目poetry dynamic-versioning enable验证配置确认pyproject.toml中已添加必要配置[project] dynamic [version] [tool.poetry] version 0.0.0 # 占位符版本 [tool.poetry-dynamic-versioning] enable true配置构建系统可选为支持PEP 517构建前端添加以下配置[build-system] requires [poetry-core1.0.0, poetry-dynamic-versioning1.0.0,2.0.0] build-backend poetry_dynamic_versioning.backend⚙️ 核心配置选项poetry-dynamic-versioning提供丰富的配置选项满足不同项目需求。主要配置位于pyproject.toml的[tool.poetry-dynamic-versioning]部分基础设置enable true启用插件必需vcs git指定版本控制系统默认anystyle pep440版本格式规范支持pep440/semver/pvp版本格式定制通过format或format-jinja自定义版本输出格式# 简单格式示例 format v{base}{distance}.{commit} # Jinja模板示例更灵活 format-jinja {% if distance 0 %}{{ base }}{% else %}{{ base }}.dev{{ distance }}{% endif %}文件替换配置默认自动更新Python文件中的__version__和__version_tuple__可通过以下配置扩展[tool.poetry-dynamic-versioning.substitution] files [*.py, docs/version.txt] # 要更新的文件 patterns [ (^__version__\s*\s*[])[^]*([]), # 字符串替换 { value (^VERSION\s*\s*)\d\.\d\.\d, mode str } # 自定义模式 ] 使用流程详解1. 创建版本标签使用VCS创建版本标签以Git为例git tag v1.0.0 -m Initial stable release git push origin v1.0.02. 执行构建命令运行Poetry命令时插件会自动注入版本信息poetry build # 构建时自动使用v1.0.0版本3. 查看构建结果构建的wheel/sdist包将包含正确的版本信息而源代码文件保持干净无版本修改。4. 开发版本管理未打标签的提交会自动生成开发版本例如距离v1.0.0有3个提交1.0.0.post3.dev028c1684启用bump true后1.0.1.dev328c1684自动递增补丁号 高级功能环境变量覆盖POETRY_DYNAMIC_VERSIONING_BYPASS1.2.3强制使用指定版本POETRY_DYNAMIC_VERSIONING_DEBUG1启用调试日志命令行模式直接生成版本文件不自动还原poetry dynamic-versioning apply # 应用版本到文件 poetry dynamic-versioning revert # 还原文件修改持久化版本文件配置特定文件保留版本修改适用于可编辑安装[tool.poetry-dynamic-versioning.files.myapp/_version.py] persistent-substitution true initial-content __version__ 0.0.0 __version_tuple__ (0, 0, 0) 相关资源项目配置文件pyproject.toml插件源代码poetry_dynamic_versioning/测试用例tests/ 常见问题Q: 为什么poetry run看不到动态版本A: 由于Poetry设计限制动态版本仅在build、publish等构建命令中生效run/shell环境不支持。可使用命令行模式生成持久化版本文件解决。Q: 如何处理浅克隆仓库A: 设置fix-shallow-repository true插件会自动执行git fetch --unshallow获取完整历史。Q: 支持PEP 621项目元数据吗A: 支持在Poetry 2.0中配置[project]部分并设置dynamic [version]即可启用PEP 621模式。通过poetry-dynamic-versioning开发者可以实现版本管理的自动化和标准化减少人为错误提高发布效率。无论是小型个人项目还是大型团队协作这个工具都能为Python项目的版本管理带来显著提升。要开始使用只需克隆仓库并按照安装指南配置git clone https://gitcode.com/gh_mirrors/po/poetry-dynamic-versioning【免费下载链接】poetry-dynamic-versioningPlugin for Poetry to enable dynamic versioning based on VCS tags项目地址: https://gitcode.com/gh_mirrors/po/poetry-dynamic-versioning创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考