Files
study-tool/pyproject.toml
T
study-tool ecadae581e build: 发版时同步 uv.lock 版本,流程补 uv lock
现象:v0.0.8 发版后 uv.lock 里 study-tool 的 version 仍停在 0.0.1,与 metadata.yaml /
pyproject.toml 的 0.0.8 不一致,需要单独补一次提交。

根因:bumpversion 只配置了 metadata.yaml 和 pyproject.toml 两个文件。另外原有的两处正则
search 有两个坑:一是没开 regex = true(bump-my-version 默认按字面量搜索),二是仓库文件是
CRLF,`^...$` 锚点匹配不到行尾——真跑会直接报「Did not find」而不是改版本。

边界:只改发版配置和流程说明;不动业务代码、不改当前版本号、不打 tag。

运行了什么:`uv tool run bump-my-version bump patch --dry-run --allow-dirty -vv`,确认
metadata.yaml / pyproject.toml / uv.lock 三处都会被改、且 dry-run 没写盘(文件仍是 0.0.8)
没跑什么:没真跑 bump(会改版本号并自动提交、打 tag,留给你发版时执行);没跑测试、没构建
2026-11-01 20:50:16 +08:00

73 lines
2.0 KiB
TOML

[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[project]
name = "study-tool"
version = "0.0.8"
description = "东莞市教师培训平台多账号学习控制台"
requires-python = ">=3.10"
dependencies = [
"fastapi>=0.110",
"uvicorn>=0.27",
"requests>=2.31",
"beautifulsoup4>=4.12",
"lxml>=5.0",
"playwright>=1.40",
"ddddocr",
"python-dotenv>=1.0",
"sqlalchemy>=2.0",
]
[project.scripts]
study-tool = "study_tool.app:main"
[tool.setuptools]
package-dir = { "" = "src" }
[tool.setuptools.packages.find]
where = ["src"]
# 国内镜像:uv 默认走阿里云源,不再直连 pypi.org。
# 换源:UV_DEFAULT_INDEX=https://mirrors.cloud.tencent.com/pypi/simple uv sync
# 想回官方:UV_DEFAULT_INDEX=https://pypi.org/simple uv sync
# (清华源 pypi.tuna.tsinghua.edu.cn 会 403 uv 的 JSON simple 请求,别用)
[[tool.uv.index]]
name = "aliyun"
url = "https://mirrors.aliyun.com/pypi/simple"
default = true
[tool.ruff]
line-length = 120
extend-exclude = ["static", "web"]
# 只拦真正的错误(语法 / 未定义名 / 未用导入);历史模块仍有 star import,先不拦 F403 / F405
[tool.ruff.lint]
select = ["E4", "E7", "E9", "F"]
ignore = ["F403", "F405"]
# 发版:uv tool run bump-my-version bump patch(工作区需干净),自动改 metadata.yaml / pyproject.toml / uv.lock 三处版本、提交并打 tag
[tool.bumpversion]
current_version = "0.0.8"
commit = true
tag = true
tag_name = "v{new_version}"
message = "chore(release): v{new_version}"
[[tool.bumpversion.files]]
filename = "metadata.yaml"
search = "version: {current_version}"
replace = "version: {new_version}"
[[tool.bumpversion.files]]
filename = "pyproject.toml"
regex = true
search = '(?m)^version = "{current_version}"'
replace = 'version = "{new_version}"'
[[tool.bumpversion.files]]
filename = "uv.lock"
regex = true
search = '(?m)(name = "study-tool"\r?\n)version = "{current_version}"'
replace = '\g<1>version = "{new_version}"'