Banyak ilmuwan data profesional menggunakan Jupyter Notebook untuk menyelesaikan tugas harian mereka, dari eksplorasi data awal hingga model prototyping. Interaktivitas Notebook sangat nyaman untuk pemrograman data-sentris dan sifat pendokteran diri mereka memberikan dukungan yang sangat baik untuk komunikasi hasil analitik.
Namun demikian, Jupyter Notebook telah sering dikritik karena mendorong kebiasaan pemrograman yang buruk dan hampir tidak mendukung praktik terbaik rekayasa perangkat lunak. Untuk benar -benar mendapat manfaat dari notebook, pengguna harus mengetahui jebakan umum mereka dan belajar bagaimana mencegahnya.
Dalam karya sebelumnya (lihat "Memperoleh Praktik Terbaik untuk Kolaborasi dengan Computational Notebooks" [1]), kami memperkenalkan katalog 17 pedoman yang divalidasi secara empiris untuk penggunaan kolaboratif notebook dalam konteks profesional.
Untuk menumbuhkan adopsi praktik terbaik ini, kami telah menciptakan Pynblint, alat analisis statis untuk buku catatan Jupyter yang ditulis dalam Python. Pynblint mengungkapkan potensi cacat buku catatan dan merekomendasikan tindakan korektif. Ini dapat dioperasikan baik sebagai aplikasi CLI mandiri atau sebagai bagian dari pipa CI/CD.
Aturan inti pynblint inti telah diturunkan sebagai operasionalisasi praktik terbaik dari katalog kami. Meskipun demikian, arsitektur plug-in Pynblint memungkinkan penggunanya untuk dengan mudah memperluas set inti cek dengan aturan sering mereka sendiri.
Python 3.7+.
Pynblint dapat diinstal dengan pip atau Manajer Paket PYPI lainnya:
pip install pynblintSetelah instalasi, kami sarankan menjelajahi antarmuka baris perintah dari alat:
pynblint --helpPynblint dapat digunakan untuk menganalisis:
Notebook mandiri:
pynblint path/to/the/notebook.ipynbRepositori kode yang berisi buku catatan:
pynblint path/to/the/project/dir/ (Mungkin juga dikompresi sebagai arsip .zip ):
pynblint path/to/the/compressed/archive.zipRepositori GitHub publik yang berisi buku catatan (dukungan untuk repositori pribadi ada di peta jalan kami?):
pynblint --from-github https://github.com/collab-uniba/pynblintUntuk informasi lebih lanjut tentang opsi yang tersedia, silakan merujuk ke dokumentasi proyek.
Pynblint saat ini mengimplementasikan 22 aturan serat:
Aturan -aturan ini berasal dari katalog komprehensif kami tentang praktik terbaik untuk pengembangan notebook kolaboratif [1]. Di bawah ini adalah keadaan implementasi saat ini dari aturan serat yang terkait dengan setiap praktik terbaik:
| Praktik Terbaik Dari [1] | Status | Detail |
|---|---|---|
| 1. Gunakan kontrol versi | ✅ Lengkap | Diterapkan sepenuhnya |
| 2. Kelola dependensi proyek | ✅ Lengkap | Diterapkan sepenuhnya |
| 3. Gunakan lingkungan mandiri | ⏳ dalam proses: | Direncanakan : Deteksi - Lingkungan virtual Python (misalnya, dibuat dengan venv , pyenv , atau conda )- Lingkungan yang dimasukkan (misalnya, Docker). |
| 4. Masukkan impor di awal | ✅ Lengkap | Diterapkan sepenuhnya |
| 5. Pastikan re-executability (Run Run Notebooks dari atas ke bawah) | ✅ Lengkap | Diterapkan sepenuhnya |
| 6. Modularisasi Kode Anda | ? Sebagian | Saat ini : Deteksi konstruksi modularisasi dalam buku catatan. Direncanakan : Rekomendasi refactoring yang berfokus pada modularisasi berdasarkan pola yang terdeteksi |
| 7. Uji kode Anda | ? Sebagian | Saat ini : Deteksi tingkat repositori dari data cakupan. Direncanakan : Deteksi modul/fungsi uji terlepas dari alat pertanggungan |
| 8. Sebutkan buku catatan Anda secara konsisten | ✅ Lengkap | Diterapkan sepenuhnya |
| 9. Tetap berpegang pada standar pengkodean | ? Sebagian | Saat ini : Deteksi sel dengan sintaksis Python tidak valid. Direncanakan : Integrasi Python Linters seperti Pylint, Flake8, dan Ruff |
| 10. Gunakan jalur relatif | ⏳ dalam proses: | Direncanakan : Identifikasi instance jalur absolut dalam buku catatan dan rekomendasi jalur relatif yang sesuai |
| 11. Dokumentasikan analisis Anda | ✅ Lengkap | Diterapkan sepenuhnya |
| 12. Leverage Markdown Headings Untuk Struktur Notebook Anda | ✅ Lengkap | Diterapkan sepenuhnya |
| 13. Jaga Bersih Notebook Anda | ✅ Lengkap | Diterapkan sepenuhnya |
| 14. Jaga agar buku catatan Anda tetap singkat | ✅ Lengkap | Diterapkan sepenuhnya |
| 15. Bedakan Artefak Produksi dan Pengembangan | Tidak direncanakan | Implementasi dianggap tidak layak (lihat catatan di bawah) |
| 16. Buat buku catatan Anda tersedia | ⏳ dalam proses: | Direncanakan : Pynblint akan memastikan bahwa notebook yang ditandai seperti yang diterbitkan dalam konfigurasinya tersedia online |
| 17. Buat data Anda tersedia | ✅ Lengkap | Diterapkan sepenuhnya |
Catatan : Praktik Terbaik #15 (membedakan artefak produksi/pengembangan) tidak akan diimplementasikan karena tidak ada kriteria objektif untuk menentukan perbedaan ini melalui analisis statis notebook atau repositori.
Proyek ini dilisensikan berdasarkan ketentuan lisensi MIT.
[1] Luigi Quaranta, Fabio Calefato, dan Filippo Lanubile. 2022. Memperoleh praktik terbaik untuk kolaborasi dengan notebook komputasi. Proc. ACM Hum.-Comput. Berinteraksi. 6 , CSCW1, Pasal 87 (April 2022), 41 halaman. https://doi.org/10.1145/3512934