SuperAPI AI 工具集

managing-python-releases

编程与开发

查看项目

更新于 10-15 23:44

技能介绍

用途:规范并自动化 Python 库的发布流程,覆盖版本号、变更日志、发布与弃用管理。

主要能力:

  1. 语义化版本:MAJOR.MINOR.PATCH(如 1.2.3)。PATCH 为修复且无 API 变更,MINOR 为向后兼容的新功能,MAJOR 为破坏性变更。
  2. 变更日志:采用 Keep a Changelog 格式,分类为 Added、Changed、Deprecated、Removed、Fixed、Security,并保留 Unreleased 段落。
  3. 代码内版本:可在 src/package/init.py 写 version = "1.2.3",或用 importlib.metadata 的 version("my-package") 读取。
  4. 发布自动化:以标签触发 GitHub Actions,构建并发布到注册表,采用 trusted publishing(无需存储令牌)。示例工作流使用 actions/checkout@v4、astral-sh/setup-uv@v5、uv build、softprops/action-gh-release@v2 与 pypa/gh-action-pypi-publish@release/v1,并需 contents: write 与 id-token: write 权限。
  5. 弃用流程:用 warnings.warn 并设 stacklevel=2,使警告指向调用方。
  6. 发布步骤:更新 CHANGELOG、提升版本、提交并打标签(git tag -a v1.2.0 -m "Release v1.2.0")、推送标签,随后由 CI 或手动发布。
  7. 检查清单:发布前确认测试通过、CHANGELOG 更新、版本已提升、文档最新;发布后确认注册表显示新版本、全新安装可用、GitHub Release 已创建、文档已更新。

适用场景:需要规范化版本与变更日志、希望用 CI 自动发布、或需要设计弃用策略的 Python 项目。

限制:资料中的自动化示例以 PyPI 为例,实际需替换为项目所用注册表;本仓库(ffmpeg-skill)当前没有 .github/workflows/release.yml,0.10.0 为手动发布,注册表是 npm 而非 PyPI,且代码中无 version,版本由 package.json 读取。其他具体平台与配置细节暂未提供。