- pyrightconfig.json 钉死 Python 3.12 虚拟环境,消除由于查找系统 Python 3.9 带来的假性报错 - 修复 huya/login.py 引用不存在函数的问题并补充单元测试 - 修复 browser_harvest.py 对 set 下标访问的错误并提升报错信息质量 - 虎牙 6 个子路由显式导入依赖,消除 import * 带来的未定义变量报警 - 规范化 Pydantic Field(default=...) 默认值声明 - 完善 solver.py / app_login.py 等核心路径类型守卫与 @overload 重载 - 在 pyproject.toml 中显式锁定 ruff lint 规则集 (E4, E7, E9, F, B, I, BLE) - 门禁脚本同步增加 ruff check 检查并在 AGENTS.md 补齐实践经验总结
42 lines
1.3 KiB
Bash
Executable File
42 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# 提交前做轻量检查:Python 格式 + 前端 TypeScript。
|
|
# 全量 pytest 放在 pre-push,避免每次 commit 都跑一遍。
|
|
set -euo pipefail
|
|
|
|
cd "$(git rev-parse --show-toplevel)"
|
|
|
|
if [ "${SKIP_TESTS:-0}" = "1" ]; then
|
|
echo "[pre-commit] SKIP_TESTS=1,跳过检查"
|
|
exit 0
|
|
fi
|
|
|
|
staged="$(git diff --cached --name-only --diff-filter=ACMR)"
|
|
|
|
python_files=()
|
|
frontend_changed=0
|
|
while IFS= read -r path; do
|
|
[ -z "$path" ] && continue
|
|
case "$path" in
|
|
*.py)
|
|
[ -f "$path" ] && python_files+=("$path")
|
|
;;
|
|
web/frontend/*)
|
|
frontend_changed=1
|
|
;;
|
|
esac
|
|
done <<< "$staged"
|
|
|
|
if [ "${#python_files[@]}" -gt 0 ]; then
|
|
echo "[pre-commit] 检查 Python 格式..."
|
|
uv run --group dev ruff format --check "${python_files[@]}"
|
|
# ⚠️ 只跑 format 不够:format 不管「未使用导入 / 未排序导入 / 宽 except」这类
|
|
# 问题,之前全仓攒了 6 条(含一个 F401 死导入)没人拦。两条一起跑才算校验。
|
|
echo "[pre-commit] 检查 Python lint..."
|
|
uv run --group dev ruff check "${python_files[@]}"
|
|
echo "[pre-commit] Python 格式 + lint 通过"
|
|
fi
|
|
|
|
if [ "$frontend_changed" -eq 1 ]; then
|
|
.githooks/run-frontend-tsc.sh
|
|
fi
|