PEP8 和 SciPy#

所有 SciPy Python 代码应遵循 PEP8 风格指南,但行长限制为 88 个字符,而不是 79 个字符。这一点非常重要,以至于 GitHub 上的一些持续集成测试会因某些 PEP8 违规而失败。以下是一些在推送代码之前确保符合 PEP8 标准的技巧

  • 许多集成开发环境 (IDE) 都有自动检查 PEP8 符合性的选项。例如,在 Spyder 中,在“工具”→“首选项”→“编辑器”→“代码内省/分析”中 启用实时代码风格分析,并在“工具”→“首选项”→“编辑器”→“高级设置”中启用“保存文件时自动删除尾随空格”。这可以帮助您在编写代码时修复 PEP8 问题。

  • 但是,请注意 SciPy 的代码 linting 配置可能与您的 IDE 的配置不完全一致。请参阅下面有关如何运行官方检查的信息。

  • 建议不要修改现有的样式问题,除非它们存在于您正在修改的代码行中。这样做可以确保代码库逐步清理,而无需将宝贵的审查时间用于仅针对样式的清理。

  • 在发送 Pull Request 之前,请对您的功能分支中所做的更改运行代码 linting 检查。这些检查也将在持续集成期间进行,但尽早发现它们更快。

    最简单的方法是安装我们的 pre-commit 钩子(一次)

    cp tools/pre-commit-hook.py .git/hooks/pre-commit
    

    这将在每次提交之前运行 linting 检查。

    或者,您也可以从 SciPy 根目录手动运行检查

    python dev.py lint
    

    您也可以使用 --files 选项对特定文件运行代码 linting 检查

    python tools/lint.py --files scipy/odr/models.py scipy/ndimage
    
  • 如果您有包含大量 PEP8 问题的现有代码,请考虑使用 autopep8 自动修复它们,然后再将代码合并到 SciPy 中。

88 个字符的行长限制是根据流行工具(如 ruffblack)的默认设置选择的。这在产生更短的文件和减少代码 linting 错误方面取得了平衡,同时又保持了合理短的行和能够并排查看文件的能力。