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