PEP8 und SciPy#
Der gesamte SciPy Python-Code sollte die PEP8 Stilrichtlinien befolgen, mit der Ausnahme, dass die Zeilenlänge auf 88 Zeichen statt auf 79 Zeichen begrenzt sein sollte. Dies ist so wichtig, dass einige Continuous-Integration-Tests auf GitHub aufgrund bestimmter PEP8-Verstöße fehlschlagen werden. Hier sind einige Tipps, um die PEP8-Konformität sicherzustellen, bevor Sie Ihren Code pushen
Viele integrierte Entwicklungsumgebungen (IDEs) bieten Optionen, die automatisch auf PEP8-Konformität prüfen. In Spyder zum Beispiel können Sie unter Tools → Einstellungen → Editor → Code-Introspektion/Analyse „Echtzeit-Code-Stilanalyse“ aktivieren und unter Tools → Einstellungen → Editor → Erweiterte Einstellungen „Automatisch nachgestellte Leerzeichen beim Speichern von Dateien entfernen“. Dies kann Ihnen helfen, PEP8-Probleme zu beheben, während Sie Ihren Code schreiben.
Beachten Sie jedoch, dass die Linting-Konfiguration von SciPy möglicherweise nicht genau mit der Ihrer IDE übereinstimmt. Wie Sie die offiziellen Prüfungen ausführen können, erfahren Sie weiter unten.
Es wird empfohlen, bestehende Stilprobleme zu ignorieren, es sei denn, sie treten in Codezeilen auf, die Sie gerade ändern. Diese Vorgehensweise stellt sicher, dass die Codebasis schrittweise bereinigt wird, ohne wertvolle Überprüfungszeit für reine Stilbereinigungen zu opfern.
Führen Sie vor dem Senden eines Pull Requests den Linter für die in Ihrem Feature-Branch vorgenommenen Änderungen aus. Die Prüfungen werden auch während der Continuous Integration durchgeführt, aber es ist schneller, sie frühzeitig zu erkennen.
Der einfachste Weg, dies zu tun, ist die Installation unseres Pre-Commit-Hooks (einmalig)
cp tools/pre-commit-hook.py .git/hooks/pre-commit
Dies führt Linting-Prüfungen vor jedem Commit durch.
Alternativ können Sie den Linter manuell vom SciPy-Stammverzeichnis aus ausführen
python dev.py lint
Sie können den Linter auch auf bestimmte Dateien anwenden, indem Sie die Option
--filesverwendenpython tools/lint.py --files scipy/odr/models.py scipy/ndimage
Wenn Sie über vorhandenen Code mit vielen PEP8-Problemen verfügen, sollten Sie
autopep8verwenden, um diese automatisch zu beheben, bevor Sie den Code in SciPy integrieren.
Die Zeilenlängenbegrenzung von 88 Zeichen wurde gewählt, um den Standardeinstellungen beliebter Tools wie ruff und black zu entsprechen. Dies stellt einen Kompromiss dar zwischen der Erstellung kürzerer Dateien und der Reduzierung von Linter-Fehlern einerseits und der Beibehaltung relativ kurzer Zeilen und der Möglichkeit, Dateien nebeneinander anzuzeigen, andererseits.