Viele professionelle Datenwissenschaftler verwenden Jupyter Notebook, um ihre täglichen Aufgaben zu erfüllen, von vorläufigen Datenerforschung bis hin zur Modellprototyping. Die Interaktivität von Notebooks ist besonders bequem für die datenzentrierte Programmierung und ihre selbstdokumentierende Natur bietet eine hervorragende Unterstützung für die Kommunikation der analytischen Ergebnisse.
Trotzdem wurde Jupyter Notebook häufig dafür kritisiert, dass sie schlechte Programmiergewohnheiten induzieren und die besten Best Practices für Software -Engineering kaum unterstützt. Um wirklich von Notizbüchern zu profitieren, sollten Benutzer sich ihrer gemeinsamen Fallstricke bewusst sein und lernen, wie sie sie verhindern können.
In früheren Arbeiten (siehe "Best Practices für die Zusammenarbeit mit rechnerischen Notizbüchern" [1]) haben wir einen Katalog von 17 empirisch-validierten Richtlinien für die kollaborative Verwendung von Notizbüchern in einem professionellen Kontext eingeführt.
Um die Einführung dieser Best Practices zu fördern, haben wir Pynblint erstellt, ein statisches Analyse -Tool für Jupyter -Notizbücher, die in Python geschrieben wurden. PynBlint zeigt potenzielle Notebook -Defekte und empfiehlt Korrekturmaßnahmen. Es kann entweder als eigenständige CLI -Anwendung oder als Teil einer CI/CD -Pipeline betrieben werden.
Die Kernstinierungsregeln von Pynblint wurden als Operationalisierungen der Best Practices aus unserem Katalog abgeleitet. Die Plug-in-Architektur von PynBlint ermöglicht es seinen Benutzern jedoch, den Kernsatz von Überprüfungen mit ihren eigenen Linning-Regeln problemlos zu erweitern.
Python 3.7+.
PynBlint kann mit pip oder einem anderen PYPI -Paketmanager installiert werden:
pip install pynblintNach der Installation empfehlen wir, die Befehlszeilenschnittstelle des Tools zu erkunden:
pynblint --helpPynBlint kann verwendet werden, um zu analysieren:
Ein eigenständiges Notizbuch:
pynblint path/to/the/notebook.ipynbEin Code -Repository mit Notizbüchern:
pynblint path/to/the/project/dir/ (Möglicherweise auch als .zip -Archiv komprimiert):
pynblint path/to/the/compressed/archive.zipEin öffentliches Github -Repository mit Notizbüchern (Unterstützung für private Repositories ist auf unserer Roadmap?):):
pynblint --from-github https://github.com/collab-uniba/pynblintWeitere Informationen zu den verfügbaren Optionen finden Sie in der Projektdokumentation.
PynBlint implementiert derzeit 22 Lining -Regeln:
Diese Regeln stammen aus unserem umfassenden Katalog der Best Practices für die Entwicklung der kollaborativen Notebook -Entwicklung [1]. Im Folgenden finden Sie den aktuellen Implementierungszustand der Linienregeln, die mit jeder bewährten Praxis verbunden sind:
| Beste Practice von [1] | Status | Details |
|---|---|---|
| 1. Verwenden Sie die Versionskontrolle | ✅ vollständig | Vollständig implementiert |
| 2. Verwalten Sie Projektabhängigkeiten | ✅ vollständig | Vollständig implementiert |
| 3.. Verwenden Sie in sich geschlossene Umgebungen | ⏳ in Arbeit: | Geplant : Erkennung von - Virtuelle Python -Umgebungen (z. B. mit venv , pyenv oder conda ).- Containerisierte Umgebungen (z. B. Docker). |
| 4. Setzen Sie Importe am Anfang ein | ✅ vollständig | Vollständig implementiert |
| 5. Sicherstellung sicherstellen | ✅ vollständig | Vollständig implementiert |
| 6. Modularisieren Sie Ihren Code | ? Teilweise | Strom : Erkennung von Modularisierungskonstrukten in Notizbüchern. Geplant : Modularisation-fokussierte Refactoring-Empfehlungen basierend auf erkannten Mustern |
| 7. Testen Sie Ihren Code | ? Teilweise | Strom : Erkennung von Abdeckungsdaten auf Repository-Ebene. Geplant : Erkennung von Testmodulen/Funktionen unabhängig von Abdeckungstools |
| 8. Nennen Sie Ihre Notizbücher konsequent | ✅ vollständig | Vollständig implementiert |
| 9. Halten Sie sich an die Codierungsstandards | ? Teilweise | Strom : Nachweis von Zellen mit ungültiger Python -Syntax. Geplant : Integration von Python -Lintern wie Pylinint, Flake8 und Ruff |
| 10. Verwenden Sie relative Pfade | ⏳ in Arbeit: | Geplant : Identifizierung von Absolutepfadeninstanzen in Notizbüchern und Empfehlung entsprechender relativer Pfade |
| 11. Dokumentieren Sie Ihre Analyse | ✅ vollständig | Vollständig implementiert |
| 12. Nutzen Sie Markdown -Überschriften, um Ihr Notebook zu strukturieren | ✅ vollständig | Vollständig implementiert |
| 13. Halten Sie Ihr Notizbuch sauber | ✅ vollständig | Vollständig implementiert |
| 14. Halten Sie Ihr Notizbuch präzise | ✅ vollständig | Vollständig implementiert |
| 15. Unterscheidung von Produktions- und Entwicklungsartefakten | Nicht geplant | Implementierung als nicht realisierbar (siehe Hinweis unten) |
| 16. Machen Sie Ihre Notizbücher zur Verfügung | ⏳ in Arbeit: | Geplant : PynBlint stellt sicher, dass Notizbücher, die in seiner Konfiguration veröffentlicht wurden, online verfügbar sind |
| 17. Machen Sie Ihre Daten zur Verfügung | ✅ vollständig | Vollständig implementiert |
Hinweis : Best Practice Nr. 15 (Unterscheidung von Produktions-/Entwicklungsartefakten) wird nicht implementiert, da es keine objektiven Kriterien für die Bestimmung dieser Unterscheidung durch statische Analyse von Notizbüchern oder Repositories gibt.
Dieses Projekt ist gemäß den Bedingungen der MIT -Lizenz lizenziert.
[1] Luigi Quaranta, Fabio Calefato und Filippo Lanubile. 2022. Best Practices für die Zusammenarbeit mit rechnerischen Notizbüchern auslösen. Proc. ACM Hum.-Comput. Interagieren. 6 , CSCW1, Artikel 87 (April 2022), 41 Seiten. https://doi.org/10.1145/3512934