Мы рады объявить, что Pylance, наша быстрая и многофункциональная языковая поддержка Python в Visual Studio Code, официально вышла из предварительной версии и достигла своего первого стабильного выпуска.
Ранее на этой неделе мы объявили, что, начиная с майского выпуска расширения Python, Pylance теперь также является сервером языка Python по умолчанию в Visual Studio Code. Pylance также теперь включен в пакет расширения ядра Python в качестве дополнительной зависимости, что означает, что мы автоматически установим его для вас, но у вас есть возможность использовать другой языковой сервер по вашему выбору.
Предпосылки
В июне прошлого года мы выпустили общедоступную предварительную версию нового языкового сервера Python, Pylance, в рамках обязательства предоставить пользователям Python надежные и производительные языковые функции в Visual Studio Code. После публичной предварительной версии Pylance мы получили как похвалу, так и конструктивные отзывы от сообщества, которые мы использовали для нашей работы в течение последних одиннадцати месяцев.
Сегодня мы рады сообщить, что основной набор функций Pylance достиг стабильной версии в Visual Studio Code!
Обзор функций Pylance
Начиная с нашего первоначального выпуска, мы продолжали улучшать производительность и удобство использования нескольких ключевых функций (например, завершения, автоматического импорта, справки по сигнатуре функций, строк документации) и добавляли новые функции (например, извлечение переменных, контекстное выделение).
Если вы еще не являетесь пользователем Pylance, вот краткий обзор некоторых из важных функций, которые языковой сервер предоставляет для разработки на Python в Visual Studio Code.
Auto-import completions (Автоимпорт завершений)
Благодаря автоматическому импорту вы можете получать интеллектуальные предложения по импорту в списке завершений для установленных и стандартных библиотечных модулей. После выбора соответствующий импорт будет добавлен в начало файла, поэтому вам не нужно прокручивать вверх и добавлять его вручную. Авто-импорт завершений также включает четкую Preview-версию оператора импорта, который будет добавлен в ваш файл во всплывающей подсказке, чтобы вы точно знали, какой символ импортируете. Если вы уже импортировали другие подмодули или функции из этого модуля, Pylance внесет поправки в существующий оператор, добавив новый символ в алфавитном порядке, чтобы упорядочить ваш импорт.

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

Навигация по коду
Pylance также предоставляет функциональные возможности навигации по коду, такие как переход к определению и переход к объявлению, чтобы вы могли быстро перейти к пользовательскому коду, исходным файлам (например, .py) или типу файлов (.pyi).

Рефакторинг действий кода - извлечение переменной и извлечение метода
Pylance также предоставляет вам возможность использовать действия рефакторинга кода, которые позволяют выделять строки кода и автоматически выполнять рефакторинг и извлекать их в новые методы или переменные одним нажатием кнопки.
Extract Variable

Extract Method

Семантическая раскраска
Семантическая раскраска Pylance помогает улучшить читаемость и понимание вашего кода. Если вы не знакомы с семантической окраской, это расширение для выделения синтаксиса. Pylance генерирует семантические токены, которые используются темами для применения цветов на основе семантического значения символов (например, переменные, функции, модули имеют разные цвета, примененные к ним).
Чтобы увидеть эту новую функцию в действии, вам нужно будет применить тему, поддерживающую семантический цвет. Некоторые отличные темы для опробования семантической раскраски - это встроенная тема Dark + или One Dark Pro, используемые ниже.

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

Поддержка проверки типов через Pyright
Поскольку Pylance использует нашу программу проверки типов с открытым исходным кодом под названием Pyright, языковой сервер также поставляется со встроенной проверкой статических типов, если вы заинтересованы в написании типизированного Python. По умолчанию функция проверки типов не включена, и вы увидите диагностику (ошибки и предупреждения) в своем коде только в том случае, если у вас синтаксически недопустимый Python. Однако вы можете включить базовую или строгую проверку типов, настроив python.analysis.typeCheckingMode. Этот параметр использует проверку типов Pyright для применения базового или полного набора правил к вашей кодовой базе соответственно. Диагностика, производимая в этом режиме, может помочь улучшить качество вашего кода и упростить поиск крайних случаев.

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

Фидбек
Если у вас есть какие-либо вопросы, комментарии или отзывы о вашем опыте, свяжитесь с нами на GitHub.