PEP8 和 SciPy#

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

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

  • 然而,请注意,SciPy 的代码检查配置可能与您的 IDE 不完全匹配。请参阅下方了解如何运行官方检查。

  • 建议除非现有样式问题存在于您已经在修改的代码行中,否则不要处理它们。这种做法确保代码库逐步清理,而不会将宝贵的审查时间专门用于仅样式清理。

  • 在发送拉取请求之前,请在您的特性分支上对所做的更改运行代码检查工具。这些检查也会在持续集成期间进行,但尽早发现它们会更快。

    最简单的方法是安装我们的预提交钩子(一次):

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

    这将在每次提交前运行代码检查。

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

    python dev.py lint
    

    你也可以使用 --files 选项对特定文件运行 linter:

    python tools/lint.py --files scipy/odr/models.py scipy/ndimage
    
  • 如果你有大量 PEP8 问题的现有代码,考虑在将代码合并到 SciPy 之前使用 autopep8 来自动修复它们。

88个字符的行长度限制是为了匹配像 ruffblack 这样的流行工具的默认设置。这在一方面平衡了生成较短文件和减少代码检查器错误,另一方面保持了合理短的行和并排查看文件的能力。