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
您也可以對特定檔案執行 linter,使用
--files
選項python tools/lint.py --files scipy/odr/models.py scipy/ndimage
如果您有大量 PEP8 問題的現有程式碼,請考慮使用
autopep8
在將程式碼併入 SciPy 之前自動修正它們。
選擇 88 個字元的行長度限制是為了符合 ruff 和 black 等流行工具的預設值。這在產生較短的檔案和減少 linter 錯誤,以及保持合理的短行和並排檢視檔案的能力之間取得了平衡。