Muchos científicos de datos profesionales usan el cuaderno Jupyter para realizar sus tareas diarias, desde la exploración de datos preliminar hasta la creación de prototipos de modelos. La interactividad de los cuadernos es particularmente conveniente para la programación centrada en datos y su naturaleza autocomnacumente proporciona un excelente apoyo para la comunicación de resultados analíticos.
Sin embargo, Jupyter Notebook a menudo ha sido criticado por inducir malos hábitos de programación y apenas apoyar las mejores prácticas de ingeniería de software. Para beneficiarse realmente de los cuadernos, los usuarios deben conocer sus trampas comunes y aprender a prevenirlos.
En trabajos anteriores (ver "Proporcionar las mejores prácticas para la colaboración con cuadernos computacionales" [1]), introdujimos un catálogo de 17 pautas validadas empíricamente para el uso colaborativo de cuadernos en un contexto profesional.
Para fomentar la adopción de estas mejores prácticas, hemos creado Pynblint, una herramienta de análisis estático para cuadernos Jupyter escritos en Python. Pynblint revela posibles defectos en el cuaderno y recomienda acciones correctivas. Se puede operar como una aplicación CLI independiente o como parte de una tubería CI/CD.
Las reglas de pelusas centrales de Pynblint se han derivado de operacionalizaciones de las mejores prácticas de nuestro catálogo. No obstante, la arquitectura de complemento de Pynblint permite a sus usuarios extender fácilmente el conjunto central de verificaciones con sus propias reglas de pelusa.
Python 3.7+.
Pynblint se puede instalar con pip u otro Administrador de paquetes Pypi:
pip install pynblintDespués de la instalación, recomendamos explorar la interfaz de línea de comandos de la herramienta:
pynblint --helpPynblint se puede usar para analizar:
Un cuaderno independiente:
pynblint path/to/the/notebook.ipynbUn repositorio de código que contiene cuadernos:
pynblint path/to/the/project/dir/ (posiblemente también comprimido como un archivo .zip ):
pynblint path/to/the/compressed/archive.zipUn repositorio público de GitHub que contiene cuadernos (¿Soporte para repositorios privados está en nuestra hoja de ruta?):
pynblint --from-github https://github.com/collab-uniba/pynblintPara obtener más información sobre las opciones disponibles, consulte la documentación del proyecto.
Pynblint actualmente implementa 22 reglas de pelusa:
Estas reglas se derivan de nuestro catálogo integral de las mejores prácticas para el desarrollo de cuadernos colaborativos [1]. A continuación se muestra el estado de implementación actual de las reglas de pelusa asociadas con cada mejor práctica:
| La mejor práctica de [1] | Estado | Detalles |
|---|---|---|
| 1. Use el control de la versión | ✅ Completo | Totalmente implementado |
| 2. Administrar las dependencias del proyecto | ✅ Completo | Totalmente implementado |
| 3. Use entornos autónomos | ⏳ En progreso: | Planeado : detección de - Entornos virtuales de Python (por ejemplo, creados con venv , pyenv o conda )- Entornos contenedores (por ejemplo, Docker). |
| 4. Pon las importaciones al principio | ✅ Completo | Totalmente implementado |
| 5. Asegúrese de reexecutabilidad (vuelva a ejecutar los cuadernos de arriba a abajo) | ✅ Completo | Totalmente implementado |
| 6. Modularizar su código | ? Parcial | Current : Detección de construcciones de modularización en cuadernos. Planificado : recomendaciones de refactorización centradas en la modularización basadas en patrones detectados |
| 7. Pon a prueba tu código | ? Parcial | Actual : Detección a nivel de repositorio de datos de cobertura. Planificado : Detección de módulos/funciones de prueba independientemente de las herramientas de cobertura |
| 8. Nombra tus cuadernos consistentemente | ✅ Completo | Totalmente implementado |
| 9. Cantén los estándares de codificación | ? Parcial | Current : Detección de células con sintaxis de pitón inválida. Planeado : Integración de revestimientos de pitón como Pylint, Flake8 y Ruff |
| 10. Use rutas relativas | ⏳ En progreso: | Planeado : Identificación de instancias de rutas absolutas en cuadernos y recomendación de las rutas relativas correspondientes |
| 11. Documente su análisis | ✅ Completo | Totalmente implementado |
| 12. Aproveche los encabezados de Markdown para estructurar su cuaderno | ✅ Completo | Totalmente implementado |
| 13. Mantenga su cuaderno limpio | ✅ Completo | Totalmente implementado |
| 14. Mantenga su cuaderno conciso | ✅ Completo | Totalmente implementado |
| 15. Distinga los artefactos de producción y desarrollo | No planeado | Implementación considerada inviable (ver la nota a continuación) |
| 16. Haga que sus cuadernos estén disponibles | ⏳ En progreso: | Planificado : Pynblint se asegurará de que los cuadernos marcados como se publican en su configuración estén disponibles en línea |
| 17. Haga que sus datos estén disponibles | ✅ Completo | Totalmente implementado |
Nota : No se implementarán las mejores prácticas #15 (distinguir los artefactos de producción/desarrollo), ya que no hay criterios objetivos para determinar esta distinción a través del análisis estático de cuadernos o repositorios.
Este proyecto tiene licencia bajo los términos de la licencia MIT.
[1] Luigi Quaranta, Fabio Calefato y Filippo Lanubile. 2022. Procedir las mejores prácticas para la colaboración con cuadernos computacionales. Proc. ACM Hum.-Comput. Interactuar. 6 , CSCW1, Artículo 87 (abril de 2022), 41 páginas. https://doi.org/10.1145/3512934