Python 风格指南#

Pre commit 检查#

在持续集成过程中会执行一些代码质量检查。在提交 pull request 之前,最简单的本地检查方法是使用 pre-commit

设置步骤如下(在您的虚拟环境中运行这些步骤)

  1. 安装

    pip install pre-commit
    
  2. 启用

    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 检查。