Python 风格指南#
Pre commit 检查#
在持续集成过程中会执行一些代码质量检查。在提交 pull request 之前,最简单的本地检查方法是使用 pre-commit。
设置步骤如下(在您的虚拟环境中运行这些步骤)
安装
pip install pre-commit
启用
pre-commit install
现在,每当您暂存某些文件时,当您运行 git commit -m "<一些描述性消息>"
时,pre-commit
将运行在 .pre-commit-config.yaml
中定义的检查,如果其中任何一个失败,将阻止您的提交。如果任何 hook 失败,您应该修复它(如果需要),再次运行 git add <files>
,然后重新运行 git commit -m "<一些描述性消息>"
。
您可以使用 --no-verify
跳过 pre-commit
,例如:
git commit -m "wip lol" --no-verify
要跳过一个特定的 hook,您可以设置 SKIP
环境变量。例如(在 Linux 上)
SKIP=ruff git commit -m "<descriptive message>"
您可以使用以下命令手动运行所有文件上的所有 pre-commit
hooks:
pre-commit run --all-files
或者,如果您只想在文件子集上手动运行它们,
pre-commit run --files <file_1> <file_2> ... <file_n>
注意事项和故障排除#
Pre-commit 在暂存文件上运行
如果您有一些 git
更改已暂存,而另一些未暂存,则 pre-commit
将仅在暂存文件上运行。
Pre-commit 反复抱怨相同的格式更改
检查未暂存的更改(请参阅前一点)。
environment-dev.yml
文件中的空格更改
在 Windows 上,pre-commit hooks 中存在一些错误,可能会导致某些环境 YAML 文件发生更改。在 upstream 修复此问题之前,您应该**忽略这些更改**。要实际进行提交,请使用 pre-commit uninstall
停用自动化的 pre-commit
,并确保使用 pre-commit run --all
手动运行它。
mypy
步骤中的失败
我们正在使用 mypy
运行静态类型检查,以持续提高 PyMC 代码库的可靠性和类型安全性。但是,有许多文件存在未解决的类型问题,这就是为什么我们允许某些文件在 mypy
检查中失败。
如果您看到 mypy
步骤报错,则您很可能处于以下两种情况之一
😕 您的更改在一个以前没有类型问题的文件中引入了类型问题。
🥳 您的更改修复了类型问题。
在任何情况下,**请阅读 mypy
hook 的日志输出**,因为它包含有关如何继续操作的说明。
您还可以使用 python scripts/run_mypy.py [--verbose]
手动运行 mypy
检查。