Начата миграция NVDA на Python 3.8, что требует внимания разработчиков и пользователей дополнений

Дата:13.03.2021
Источник:NVDA Add-ons Central
Поделиться в Twitter Поделиться в Facebook Поделиться в VKontakte Поделиться в Telegram

Программа экранного доступа NVDA, разрабатываемая организацией NV Access для операционных систем Windows, начиная с тестовой Alpha-сборки версии 21882 собирается в окружении Python 3.8, также известном как Project Walrus (проект Морж) по жаргонному названию нового оператора присваивания (:=), напоминающего пару глаз с бивнями. Данное обновление, также сопровождающееся изменением некоторых внутренних API, потенциально может привести к проблемам совместимости дополнений, поэтому их разработчикам, а также активным пользователям, рекомендуется выполнить все необходимые предварительные тестирования и доработки до выхода первой стабильной версии NVDA на базе Python 3.8. Главным образом, риску утраты совместимости подвержены дополнения с драйверами синтезаторов речи, а также дополнения, использующие pyd-файлы динамически подключаемых модулей Python.

Переход на более новую версию Python осуществляется в соответствии с ранее объявленным планом и обусловлен снятием с поддержки версии 3.7, использующейся в последней стабильной версии NVDA 2020.4. На базе Python 3.8 будет выпущена уже следующая стабильная версия NVDA 2021.1.

Перенос NVDA с Python 3.7 на 3.8 влечёт за собой намного меньшие изменения, нежели с 2.7 на 3.7, поэтому обновление на NVDA 2021.1 должно оказаться намного менее болезненным и деструктивным для сторонних дополнений и стабильности самой программы экранного доступа, нежели прошлогоднее обновление на NVDA 2019.3. Тем не менее, надо учитывать следующие ключевые изменения:

  1. Если дополнение использует динамически подключаемые модули Python в виде файлов с расширением .pyd, то для них обязательно требуется пересборка для Python 3.8. Если же стоит задача сохранить обратную совместимость дополнения назад до версии NVDA 2019.3, то следует поставлять pyd-файлы как для Python 3.7, так и для 3.8.
  2. Разработчикам дополнений теперь доступна для использования уже включённая в NVDA библиотека организации конкурентного программирования asyncio, которая может помочь легче определять асинхронные функции. Однако её подключение приведёт к утрате совместимости дополнения с NVDA 2020.4 и ниже. Впрочем, возможно, что в ходе разработки будет принято решение исключить asyncio, поэтому заинтересованным в ней разработчикам стоит дождаться стабилизации NVDA до статуса бета-версии, прежде чем принимать конкретные архитектурные решения.
  3. Набор инструментов wxPython обновлён до версии 4.1.1, что может привести к ошибкам в дополнениях, реализующих графический интерфейс, если какие-то изменения для них окажутся критическими.
  4. В Python 3.8 появились новые синтаксические конструкции, поэтому дополнения, которые будут разрабатываться с их использованием, будут несовместимы с NVDA 2020.4 и ниже.
  5. В NVDA 2021.1 произойдут изменения API речевой подсистемы, а именно:
    1. Атрибуты speech.*Command заменены на speech.commands.*Command.
    2. Из типов элементов управления убраны константы причины речи: теперь следует использовать controlTypes.OutputReason.*.
    Эти изменения тносят критический характер и могут повлиять на многие сторонние драйверы синтезаторов речи. Проблема гарантировано затрагивает такие популярные в русскоязычном сообществе синтезаторы, как Newfon 2021.01.16 и Капитан 2.0.1, поэтому для продолжения их использования с NVDA 2021.1 потребуется соответствующая доработка и обновление дополнения.

Разработчики NVDA призывают всех авторов дополнений к проведению работ по обеспечению их совместимости с окружением Python 3.8 и обновлённому внутреннему API, а пользователей к проявлению максимальной активности в отношении донесения информации о возникающих ошибках в работе NVDA и её дополнений. О проблемах в работе дополнений сообщать, разумеется, необходимо разработчикам дополнений, а не разработчикам NVDA. Тестовые версии NVDA точно также как и стабильные могут быть запущены в переносном варианте, так что осуществить тестирование интересующих дополнений и самой программы можно без отказа от стабильной версии, использующейся в повседневной работе.

Ссылки по теме:


Метки


Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2021