PEP8 和 SciPy#

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

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

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

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

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

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

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

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

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

    python dev.py lint
    

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

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

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