Skip to main content

bumpster

专为 Python 项目设计的智能语义化版本管理命令行工具。

简介

bumpster 是一个遵循 PEP 440 规范的 Python 项目版本管理工具。它可以自动更新项目版本号,创建 Git 提交和标签,简化版本发布流程。

主要功能

  • ✅ 完全遵循 PEP 440 版本规范
  • ✅ 支持 pyproject.toml 和 setup.py
  • ✅ 支持预发布版本(alpha、beta、rc、dev、post)
  • ✅ 自动 Git 集成(提交、标签、推送)
  • ✅ 交互式命令行界面
  • ✅ 内置版本号验证功能
  • ✅ 安全检查(分支、工作区状态)

安装

# 使用 uv 全局安装
uv tool install bumpster

开发安装

# 克隆仓库
git clone https://github.com/yarnovo/bumpster-py.git
cd bumpster-py

# 安装依赖
uv sync

# 全局安装开发版本(类似 npm link)
uv tool install -e .

使用方法

版本升级

在项目根目录运行:

# 主命令
bump

# 别名
bump-py

工具会自动:

  1. 检测当前版本
  2. 提供交互式选项
  3. 更新配置文件
  4. 创建 Git 提交和标签
  5. 推送到远程仓库(可选)

干跑模式

使用 --dry-run 选项预览操作而不实际执行:

# 预览版本更新操作
bump --dry-run

干跑模式会:

  • 显示所有将要执行的操作
  • 不修改任何文件
  • 不创建 Git 提交或标签
  • 不推送到远程仓库
  • 完全无副作用,安全预览

版本验证

使用 validate 子命令验证版本号是否符合 PEP 440 规范:

# 验证版本号
bump validate 1.0.0
bump validate 1.0.0a0
bump-py validate 2.0.0.dev1

# 输出示例 Version 1.0.0 is PEP 440 compliant  # 退出码 0 Version 'invalid' is not PEP 440 compliant  # 退出码 1

在 CI/CD 中使用:

# 在 shell 脚本中
if bump validate "$VERSION"; then
  echo "版本号有效"
else
  echo "版本号无效"
  exit 1
fi

# 或使用 Python 模块
python -m bump_version.cli validate 1.0.0

版本格式

遵循 PEP 440 规范的版本号格式:

1.0.0          # 正式版本
1.0.0a0        # Alpha 版本
1.0.0b0        # Beta 版本
1.0.0rc0       # Release Candidate
1.0.0.dev0     # 开发版本
1.0.0.post0    # 后发布版本

配置文件支持

pyproject.toml(推荐)

[project]
name = "my-package"
version = "1.0.0"

# 或 Poetry 项目
[tool.poetry]
name = "my-package" 
version = "1.0.0"

setup.py

setup(
    name="my-package",
    version="1.0.0",
    ...
)

工作流程示例

基本发布流程

# 1. 开发完成,准备发布新版本
bump
# 选择 "正式版本 (Production)"
# 选择 "Patch (修订号)"
# 版本:1.0.0 → 1.0.1

# 2. 自动完成
# - 更新 pyproject.toml
# - git commit -m "chore: release 1.0.1"
# - git tag v1.0.1
# - git push --follow-tags

预发布流程

# 1. 创建 Alpha 版本
bump
# 选择 "Alpha 版本"
# 选择 "Minor (次版本号)"
# 版本:1.0.0 → 1.1.0a0

# 2. 升级到 Beta
bump
# 选择 "Beta 版本"
# 版本:1.1.0a0 → 1.1.0b0

# 3. 发布正式版
bump
# 选择 "正式版本 (Production)"
# 版本:1.1.0b0 → 1.1.0

环境变量

  • BUMP_VERSION_SKIP_PUSH: 设置为任意值时跳过 git push

API 使用

在代码中使用版本验证功能:

from bump_version.cli import validate_version

if validate_version("1.0.0"):
    print("版本号有效")
else:
    print("版本号无效")

注意事项

  1. 使用前确保:

    • 项目已初始化 Git 仓库
    • 工作区干净(无未提交的更改)
    • 在主分支(main/master)上操作
  2. 版本号规范:

    • 必须符合 PEP 440 规范
    • 不要手动添加 'v' 前缀(工具会自动处理)
  3. Git 标签格式:

    • 自动添加 'v' 前缀:v1.0.0

文档

许可证

ISC

Release files for bumpster 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for bumpster 0.1.0
File Size Uploaded
bumpster-0.1.0.tar.gz 10.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for bumpster 0.1.0
File Interpreter ABI Platform
bumpster-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 22.5 kB

Release files / bumpster-0.1.0.tar.gz

Download URL bumpster-0.1.0.tar.gz
Size 10.6 kB
Tags Source
SHA-256 checksum
How to use checksums
cde557c1a9a5271fa7b30189c6df1dd076d7932e432e7267ac2b8697e78f91ed
BLAKE2b-256 checksum
How to use checksums
a283dac87318fdd3285c0a691652490b0961eca19c05f8ada61595717b43be5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.19

Release files / bumpster-0.1.0-py3-none-any.whl

Download URL bumpster-0.1.0-py3-none-any.whl
Size 11.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e348f80bee4d2112c0947230ad74837d7df3c47a73ad42b701a1f3f9de49f889
BLAKE2b-256 checksum
How to use checksums
498cd57d573882e2bce8a0add9c82233d504a8c372ea49b7dd2d9afcaaa72eba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.19

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page