PEP8 和 SciPy#

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

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

  • 但是,请注意,SciPy 的 linting 配置可能与您的 IDE 并不完全匹配。 请参阅下文,了解如何运行官方检查。

  • 建议在不修改代码行的情况下,保持现有的风格问题不变。 这种做法确保代码库逐渐清理,而不会将宝贵的审查时间专门用于仅进行风格清理。

  • 在发送 Pull Request 之前,在您的功能分支中运行 linter 检查更改。 检查也会在持续集成期间进行,但尽早发现它们会更快。

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

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

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

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

    spin lint
    

    您还可以使用 --files 选项对特定文件运行 linter。

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

行长度限制为 88 个字符,是为了与流行的工具(如 ruffblack)的默认值相匹配。 这在生成较短的文件和减少 linter 错误以及保持合理长度的行和并排查看文件的能力之间取得了平衡。