Представляем jupytemplate: настраиваемые шаблоны для Jupyter

Ноутбуки Jupyter потрясающие. Они сочетают в себе код, вывод и текст, обеспечивая быстрое создание прототипов, раннюю отладку и эффективное повествование.

Тем не менее, у ноутбуков есть свои ограничения, наиболее неприятными из которых являются ограниченная масштабируемость, тенденция подталкивать разработчиков к дублированию кода и отсутствие стандартной структуры.

Этим темам посвящено множество статей, сообщений и бесед. Два из них имеют особое значение для данной статьи. Джоэл Грус в статье Я не люблю записные книжки обвиняет записные книжки в том, что они прививают вредные привычки разработчикам и специалистам по обработке данных. Отвечая на вопрос Джоэла на Medium, Уилл Кёрсен предлагает винить грехи, а не грешников, и предлагает интересное решение.

Шаблон для блокнотов

Шаблон. Стандартный, но гибкий каркас для любого вида записной книжки по науке о данных. Если людям предоставляют надлежащую структуру для наполнения их контентом, утверждает Уилл, их подталкивают к внедрению передовых практик.

Преимущество этого подхода в том, что он изменяет значения по умолчанию.

Когда мы прочитали сообщение Уилла, я и команда специалистов по анализу данных xtream сразу же начали искать пакет, реализующий решение. К сожалению, мы обнаружили, что таких вещей не существует ни на PiPy, ни на conda.

Затем мы решили создать собственное: мы разработали расширение Jupyter с двумя основными функциями.

Во-первых, он позволяет создавать каждую новую записную книжку на основе шаблона. Шаблон представляет собой записную книжку, поэтому пользователи могут легко редактировать его и адаптировать к различным потребностям. Также мы предоставляем возможность вставки шаблона в существующую записную книжку.

Шаблон по умолчанию, поставляемый с расширением, состоит из 6 разделов:

  1. Аннотация: краткое изложение блокнота с описанием его цели, методологии, результатов и предлагаемых дальнейших действий.
  2. Настройка: импорт пакетов и локальных модулей, при этом наиболее распространенные библиотеки науки о данных уже импортированы с их стандартными псевдонимами.
  3. Параметры: определение параметров, влияющих на записную книжку.
  4. Импорт данных: инструкции для загрузки всех данных, которые будут использоваться в записной книжке.
  5. Обработка данных: основная обработка, которую часто необходимо разделить на подразделы.
  6. Ссылки: полезные ссылки на литературу или другие записные книжки.

Важно отметить, что это всего лишь шаблон по умолчанию. Каждый специалист по данным может создавать свои собственные. Если вы это сделаете, дайте мне знать, чтобы мы могли улучшить наш репозиторий.

Во-вторых, каждый раз, когда записная книжка сохраняется как Без названия, пользователя просят переименовать ее.

Конечно, обе функции могут быть включены или отключены в конфигурации расширения.

Преимущества

Заметные улучшения стали заметны, как только мы ввели использование расширения в наш рабочий процесс.

Благодаря общему каркасу записные книжки других членов команды стало легче читать и делиться ими. Аннотация, в частности, предоставила нам двухминутное резюме, позволяющее читателю решить, стоит ли углубляться в код или заглядывать в другие места.

Когда разделы были готовы к заполнению, мы начали чувствовать себя виноватыми при поверхностном документировании нашего кода. Это привело к появлению более длинных и содержательных комментариев, что улучшило общую читаемость блокнотов.

Когда локальный импорт настроен и готов к использованию, не было никаких оправданий для предотвращения рефакторинга соответствующего кода из записной книжки в общие модули.

Поскольку в шаблоне явно указаны соглашения об именах, о них нельзя забыть.

Наконец, со стандартным импортом, встроенным в шаблон, мы смогли сэкономить несколько минут на поиске путей для правильного импорта модулей.

Быстрый старт

Наше расширение доступно в пакете jupytemplate с открытым исходным кодом и опубликовано на GitHub: https://github.com/xtreamsrl/jupytemplate.

Хотя это и не обязательно, мы предлагаем начать загрузку всего набора расширений jupyter, который на данный момент не включает jupytemplate.

Затем установите jupytemplate, запустив:

pip install jupytemplate

Наконец, включите расширение в локальном экземпляре Jupyter:

jupyter nbextension install --py jupytemplate --sys-prefix
jupyter nbextension enable jupytemplate/main --sys-prefix

Подробнее в документации на GitHub.

Вот и все. Теперь у вас должно получиться сделать что-то подобное.

Спасибо, мой читатель, что попали сюда!

Мы всегда приветствуем любые комментарии, вопросы или общие отзывы. Вы можете связаться со мной в LinkedIn (ссылка ниже).

Если вам понравилась эта статья, вас могут заинтересовать:

Если вам интересно, что такое я или xtream, зацените нас в LinkedIn!