PEP8 和 SciPy#

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

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

  • 但是,请注意,SciPy 的代码风格检查配置可能与您的 IDE 的配置不完全匹配。请参阅以下内容,了解如何运行官方检查。

  • 建议您不要修改现有的代码风格问题,除非它们存在于您正在修改的代码行中。这种做法确保代码库逐渐清理,而不会将宝贵的审查时间用于仅限于代码风格的清理。

  • 在发送拉取请求之前,请在您的功能分支中对所做的更改运行代码风格检查器。这些检查也会在持续集成期间进行,但尽早发现问题会更快。

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

    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 问题的现有代码,请考虑使用 autopep8 自动修复它们,然后再将代码合并到 SciPy 中。

88 个字符的行长限制是为了与流行工具(如 ruffblack)的默认值保持一致。这在保持较短的文件和减少 linter 错误方面取得了平衡,同时保持了合理的短行长度,并能够并排查看文件。