Давайте заглянем в будущее редактирования Jupyter Notebook. Будущее выглядит ярким с такими функциями, как помощь в кодировании и многое другое ☀️

Несколько дней назад я написал статью Вы все еще используете JupyterLab? и я получил потрясающий ответ. Читатели указали мне на различные новые IDE, которые разрабатываются для Data Science, но одна из них выделялась.

Михал Красовски оставил мне записку о проекте, над которым он и другие участники работали. JupyterLab-LSP - это интеграция протокола языкового сервера для JupyterLab. Короче говоря, он добавляет в JupyterLab новые суперспособности, такие как навигация по коду, подсказки при наведении, линтеры, автозаполнение и переименование. Я очень рад этому, поскольку он решает большинство проблем, в которых PyCharm превосходит JupyterLab.

Возьмем его на тест-драйв

Вот несколько ссылок, которые могут вас заинтересовать:

- Labeling and Data Engineering for Conversational AI and Analytics
- Data Science for Business Leaders [Course]
- Intro to Machine Learning with PyTorch [Course]
- Become a Growth Product Manager [Course]
- Deep Learning (Adaptive Computation and ML series) [Ebook]
- Free skill tests for Data Scientists & Machine Learning Engineers

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

Предложения по линтингу и удалению кода

После установки JupyterLab-LSP вы увидите значок «Полностью инициализирован» в строке состояния. Это означает, что JupyterLab-LSP работает.

Линтинг кода отлично работает. В приведенном ниже примере отображается предупреждение «импортировано неиспользованными».

Завершение кода

Это одна из самых ожидаемых функций для меня. Давай проверим.

Завершение кода (CC) не работало для pandas или numpy, как можно увидеть в видео ниже. Я также пробовал CC со столбцами в pandas DataFrame, но ничего не изменилось. CC отлично работал с системными библиотеками и с определенными мною классами.

Предложение подписи функции

Некоторые функции pandas принимают много аргументов, некоторые из которых я использую редко. Каждый раз, когда я использую такую ​​функцию, мне приходится искать в Google документацию, чтобы освежить свое мнение об этом.

JupyterLab-LSP добавляет предложения сигнатур функций (FSS), которые отлично работают. Вы получите красивое всплывающее окно - не слишком навязчивое, в самый раз.

FSS можно дополнительно улучшить, выделив текущий аргумент, который вы редактируете, например, плагин deoplete-jedi в NeoVim.

Предложения по сигнатуре функций работают отлично, но есть еще возможности для улучшения

Диагностическая панель

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

Переименование переменных

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

Другие функции

JupyterLab-LSP содержит множество полезных функций, таких как «Перейти к определению» - хотите ли вы увидеть, как pandas DataFrame работает «за кулисами» - просто используйте «Перейти к определению».

Форматирование кода тоже в какой-то момент станет частью расширения LSP!

Хотите увидеть, как pandas DataFrame работает за кулисами - просто используйте Go to Definition

Попробуйте сами

Убедитесь, что у вас установлена ​​последняя версия JupyterLab - 2.1.0 на момент написания. Вам также необходимо включить Extension Manager в JupyterLab.

pip install -U jupyterlab

Установите расширение сервера LSP:

pip install jupyter-lsp

Установить узел (команда для macOS):

brew install nodejs

Установите расширение внешнего интерфейса:

jupyter labextension install @krassowski/jupyterlab-lsp

Установите LSP-серверы для языков программирования:

pip install 'python-language-server[all]'

Запустите jupyterlab, и вы должны увидеть значок «Полностью инициализирован» в строке состояния.

Вердикт

Судя по моим положительным комментариям, вы могли подумать, что я буду ежедневно использовать JuypterLab 2.0 с LSP. Вы будете удивлены, узнав, что я фактически установил старую версию сразу после того, как закончил эту историю. Это почему?

Хотя новые функции работают отлично, другие расширения, которые я использую, еще не поддерживают JupyterLab 2.0. Это jupyterlab-vim для привязки клавиш Vi и jupyterlab_code_formatter для форматирования кода. Эти два расширения на данный момент важнее для меня, чем поддержка LSP. Возможно, мы сможем получить лучшее из обоих миров, поскольку кажется, что JupyterLab-LSP поддерживает также JupyterLab 1.x, но я еще не пробовал.

# for JupyterLab 1.x
jupyter labextension install @krassowski/[email protected]

Короче говоря, JupyterLab-LSP - это огромное улучшение, и я могу сказать, что обязательно буду использовать его в будущем.

Прежде чем ты уйдешь

Следуйте за мной в Twitter, где я регулярно пишу твиты о Data Science и машинном обучении.