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 個字元的行長度限制是為了符合 ruffblack 等流行工具的預設值。這在產生較短的檔案和減少 linter 錯誤,以及保持合理的短行和並排檢視檔案的能力之間取得了平衡。