Многие профессиональные ученые данных используют ноутбук Jupyter для выполнения своих ежедневных задач, от предварительного исследования данных до моделирования прототипирования. Интерактивность ноутбуков особенно удобна для программирования, ориентированного на данные, и их самодокументирование обеспечивает отличную поддержку для передачи аналитических результатов.
Тем не менее, ноутбук Jupyter часто подвергался критике за то, что он вызывает плохие привычки программирования и едва ли поддержку лучших практик разработки программного обеспечения. Чтобы по -настоящему извлечь выгоду из ноутбуков, пользователи должны знать о своих общих ловушках и научиться их предотвратить.
В предыдущей работе (см. «Выявление лучших практик для сотрудничества с вычислительными ноутбуками» [1]), мы представили каталог из 17 эмпирически проверенных руководящих принципов для совместного использования ноутбуков в профессиональном контексте.
Чтобы способствовать принятию этих лучших практик, мы создали Pynblint, статический инструмент анализа для ноутбуков Jupyter, написанных на Python. Pynblint раскрывает потенциальные дефекты ноутбуков и рекомендует корректирующие действия. Он может работать либо в качестве автономного применения CLI, либо как часть трубопровода CI/CD.
Основные правила ливней Pynblint были получены в качестве введения лучших практик из нашего каталога. Тем не менее, архитектура плагина Pynblint позволяет его пользователям легко расширять основной набор чеков с помощью своих собственных правил сжима.
Python 3.7+.
Pynblint может быть установлен с помощью pip или другого диспетчера пакетов PYPI:
pip install pynblintПосле установки мы рекомендуем изучить интерфейс командной строки инструмента:
pynblint --helpPynblint можно использовать для анализа:
автономный ноутбук:
pynblint path/to/the/notebook.ipynbхранилище кода, содержащее записные книжки:
pynblint path/to/the/project/dir/ (Возможно, также сжимается как архив .zip ):
pynblint path/to/the/compressed/archive.zipОбщественный репозиторий GitHub, содержащий тетради (поддержка частных репозитории находится на нашей дорожной карте?):
pynblint --from-github https://github.com/collab-uniba/pynblintДля получения дополнительной информации о доступных вариантах, пожалуйста, обратитесь к документации проекта.
Pynblint в настоящее время реализует 22 правила ливни:
Эти правила получены из нашего комплексного каталога лучших практик для совместной разработки ноутбуков [1]. Ниже приводится текущее состояние внедрения правил личинга, связанных с каждой лучшей практикой:
| Лучшая практика [1] | Статус | Подробности |
|---|---|---|
| 1. Используйте управление версией | ✅ Завершить | Полностью реализовано |
| 2. Управление зависимостями проекта | ✅ Завершить | Полностью реализовано |
| 3. Используйте автономные среды | ⏳ в процессе: | Запланировано : обнаружение - Виртуальные среды Python (например, созданы с venv , pyenv или conda )- Контейнерные среды (например, докер). |
| 4. Положите импорт в начале | ✅ Завершить | Полностью реализовано |
| 5. Убедитесь | ✅ Завершить | Полностью реализовано |
| 6. Модулизуйте свой код | ? Частично | Ток : обнаружение конструкций модуляризации в ноутбуках. Планируется : рекомендации по рефакторингу, ориентированные на модуль, на основе обнаруженных паттернов |
| 7. Проверьте свой код | ? Частично | Текущий : обнаружение данных на уровне хранилища. Запланировано : обнаружение тестовых модулей/функций независимо от инструментов покрытия |
| 8. Назовите свои ноутбуки последовательно | ✅ Завершить | Полностью реализовано |
| 9. Придерживайтесь стандартов кодирования | ? Частично | Ток : обнаружение клеток с неверным синтаксисом питона. Запланировано : интеграция линтеров Python, таких как Pylint, Flake8 и Ruff |
| 10. Используйте относительные пути | ⏳ в процессе: | Запланировано : идентификация экземпляров абсолютных путей в записных книжках и рекомендации соответствующих относительных путей |
| 11. Документируйте ваш анализ | ✅ Завершить | Полностью реализовано |
| 12. Используйте заголовки разметки для структуры вашего ноутбука | ✅ Завершить | Полностью реализовано |
| 13. Держите ноутбук в чистоте | ✅ Завершить | Полностью реализовано |
| 14. Держите свою ноутбук краткой | ✅ Завершить | Полностью реализовано |
| 15. Различают артефакты производства и развития | Не запланировано | Реализация считается невозможной (см. Примечание ниже) |
| 16. Сделайте ваши записные книжки доступными | ⏳ в процессе: | Запланировано : Pynblint гарантирует, что ноутбуки, помеченные в виде опубликованных в ее конфигурации, доступны в Интернете |
| 17. Сделайте ваши данные доступными | ✅ Завершить | Полностью реализовано |
Примечание : наилучшая практика № 15 (различие артефактов производства/разработки) не будет реализована, поскольку нет никаких объективных критериев для определения этого различия посредством статического анализа ноутбуков или репозиториев.
Этот проект лицензирован в соответствии с условиями лицензии MIT.
[1] Луиджи Каварта, Фабио Калефато и Филиппо Ланубиле. 2022. Выявление лучших практик для сотрудничества с вычислительными ноутбуками. Прокурор ACM Hum.-Comput. Взаимодействовать. 6 , CSCW1, статья 87 (апрель 2022 г.), 41 страница. https://doi.org/10.1145/3512934