NVDA add-ons and Python 3

The NVDA community is transitioning from Python 2 to Python 3. This page aims to document add-ons compatible with Python 3 version of NVDA, as well as highlighting issues when using add-ons with future NVDA releases.

What is Python 3 transition?

Released in 2000, Python 2.x is one of the most popular programming languages. With support for Unicode, web technologies, and thousands of third-party libraries, Python became a language of choice for many projects, including NVDA in 2006.

In late 2000's, Python developers announced Python 3000, a project to modernize Python. Changes were made to Python syntax, standard library, and other underlying framework, including the print function, more comprehensive support for Unicode, changes to standard library, and changing iteration methods such as xrange to range. Although Python 3.x did modernize Python programming language, due to large-scale deployment of Python 2, Python developers decided to support Python 2.7 (the last version of Python 2) until January 2020 to give people time to move to Python 3.

In 2019, NV Access began its work on Python 3 transition, citing popularity of NVDA and project longevity. This work culminated with release of Project Threshold builds of NVDA in July 2019, which is based on Python 3.7 and includes a host of changes in addition to Python 3 transition such as speech refactor, which will affect add-ons. The upcoming NVDA 2019.3 will be powered by Python 3.7.

What you need to know about Python 3 transition and add-ons

Python 3 transition will affect many add-ons hosted on this website. Specifically, the following issues are known:

  • Add-on does not load because they are flagged as incompatible by NVDA.
  • Add-on does load, but errors such as syntax errors and module not found errors are seen.
  • Add-on does not load due to bytecode mismatch.
  • Add-on behaves oddly when working with text.
  • Add-on works, but certain features that rely on Python standard library are not working such as internet access.
  • Some speech synthesizer and braille display add-ons behave oddly around text output.

When you encounter these issues, you should contact the author(s) of the add-on(s) in question (see the below list for contact info for add-ons hosted on this website). Be sure to provide details when contacting authors.

Compatibility status key for add-ons listed below:

  • Yes: compatible
  • No: incompatible (manifest edits and other tricks will not work; this includes add-ons with compatibility manifest issues)
  • TBD: to be determined
  • Planned: author indicated plans to port the add-on
  • Work in progress: add-on is being ported to Python 3, including via alpha-level testing

Status of add-ons compatible with Python 3 and other changes

Below is a list of add-ons hosted on this website, along with their compatibility status with Python 3 version of NVDA and known issues if any. The list also includes contact information for add-on author(s).

Note: Add-on compatibility status subject to change without notice. Also, although one way to work around compatibility issues is editing the add-on manifest, some add-ons listed below are still incompatible.