PEP8 和 SciPy#
所有 SciPy Python 代码都应遵循 PEP8 样式指南,但行长度应限制为 88 个字符,而不是 79 个字符。这一点非常重要,以至于 GitHub 上的一些持续集成测试会因某些 PEP8 违规而失败。以下是一些在推送代码之前确保符合 PEP8 的技巧
许多集成开发环境(IDE)都有自动检查 PEP8 合规性的选项。例如,在 Spyder 中,在工具 → 首选项 → 编辑器 → 代码内省/分析中启用实时代码样式分析,并在工具 → 首选项 → 编辑器 → 高级设置中启用“保存文件时自动删除尾随空格”。这可以帮助你在编写代码时修复 PEP8 问题。
但请注意,SciPy 的 lint 配置可能与你的 IDE 的配置不完全匹配。请参阅下文,了解如何运行官方检查。
建议不要改动现有的样式问题,除非它们存在于你正在修改的代码行中。此做法确保代码库逐步清理,而无需将宝贵的审查时间专门用于仅样式的清理。
在发送拉取请求之前,请在你的功能分支中所做的更改上运行 linter。检查也将在持续集成期间进行,但尽早发现它们会更快。
最简单的方法是安装我们的 pre-commit hook(一次)
cp tools/pre-commit-hook.py .git/hooks/pre-commit
这将在每次提交之前运行 lint 检查。
或者,你可以从 SciPy 根目录手动运行检查
python dev.py lint
你还可以使用
--files
选项在特定文件上运行 linterpython tools/lint.py --files scipy/odr/models.py scipy/ndimage
如果你有大量存在 PEP8 问题的现有代码,请考虑使用
autopep8
在将代码合并到 SciPy 之前自动修复它们。
选择 88 个字符的行长度限制是为了匹配 ruff 和 black 等流行工具的默认值。这在生成较短的文件和减少 linter 错误之间,以及保持合理短的行和能够并排查看文件之间取得了平衡。