JetBrains объявила, что в ветку выпуска PyCharm 2026.2 вошли 263 исправления и улучшения, значительная часть которых касается того, как среда разработки понимает код Python. Изменения включают более точный вывод типов, меньше ложных предупреждений, более уместное автодополнение, а также улучшения импорта и рефакторинга.
Компания утверждает, что эти изменения нацелены на детали, проявляющиеся в повседневной работе, особенно при использовании современных типов и популярных фреймворков, а не на добавление одной отдельной ключевой функции.
Более точная поддержка SQLAlchemy 2.0
Обновление устранило ряд проблем, связанных с SQLAlchemy 2.0, которые ранее приводили к появлению ложных предупреждений. PyCharm теперь корректно обрабатывает строковые ссылки на классы внутри Mapped[...], а также выводит тип, возвращаемый Session.get(), как объект модели или значение None, вместо интерпретации его как самого типа класса.
Кроме того, редактор теперь распознаёт современные средства настройки свойства hybrid_property с использованием @name.inplace.setter и обрабатывает атрибуты классов моделей, унаследованные через mixins, что сокращает количество сообщений о неожиданных аргументах при создании объектов.
Улучшенный вывод типов и анализ потока выполнения
JetBrains исправила случаи, когда анализ ошибочно сообщал, что часть кода недостижима, или терял сужение типа после прохода через циклы. При проверке числового объединения, такого как int | float, с помощью isinstance ветка else больше не считается недостижимой, а корректное сужение типа сохраняется внутри циклов while.
Исправления также включают сохранение информации о типах при использовании распаковки и звёздочных выражений, корректировку типа, получаемого при составном присваивании, таком как /=, а также улучшенную обработку Self и результатов конструкторов, использующих __new__, __init__ или metaclass __call__.
В перечислениях значения .value и .name теперь выводятся как точные типы Literal, а не расширяются до str или int. Кроме того, типы параметров декорированных функций можно выводить из ограничений, задаваемых декоратором, вместо присваивания общего типа Any.
Более полезные импорт и автодополнение
Автоматический импорт теперь повторно использует уже импортированный модуль, а не предлагает второй дублирующий импорт. Если модуль уже доступен, PyCharm предпочитает ссылаться на него по полному имени; также добавлена поддержка автоматического импорта вложенных классов.
Для строковых целей unittest.mock.patch() появилось автодополнение путей, включающих модули, классы и атрибуты. Кроме того, автодополнение при переопределении встроенных функций или функций dunder теперь полностью заполняет аннотированную сигнатуру и автоматически импортирует необходимые типы.
Что изменится на практике?
Эти улучшения сокращают время, которое разработчик тратит на проверку некорректных предупреждений или исправление предложений импорта и автодополнения. Встроенные в строку подсказки типов, по которым теперь можно щёлкнуть, чтобы перейти к определению типа, также помогают сразу в месте использования понять результат обобщённых типов.
Обновление добавило проверку форматов внутри f-строк, благодаря чему обнаруживаются неподдерживаемые спецификаторы или типы, не реализующие __format__. В рефакторинге переименование модуля теперь также обновляет связанные ссылки и инструкции импорта. Кроме того, действие Refactor | Field переименовано в Attribute, чтобы соответствовать терминологии Python, связанной с атрибутами объектов.