Re: NVDA 2018.3: wxPython 4 is not the same thing as Python 3

Reece H. Dunn

On Sun, Aug 26, 2018 at 05:06 PM, Joseph Lee wrote:

Hi all,


For the last few hours, there has been a thread regarding incompatibility of some add-ons and NVDA 2018.3, with some folks claiming that speech synthesizers are not compatible. This information is mostly false, and this may have been driven by confusion regarding wxPython 4 versus Python 3.


wxPython: NVDA 2018.3 will upgrade wxPython GUI toolkit to version 4.0.3, a necessary milestone for the eventual migration to Python 3. If an add-on uses attributes that are not found in newer wxPython releases, they won’t load. Likewise, an add-on that exclusively uses wxPython 4 material won’t work in older NVDA releases. At least some GUI elements of speech synthesizer drivers are affected, and that’s the reason why there has been an uproar regarding an important add-on. Regarding speech synthesizer drivers and GUI issues, they produce minor warnings, but apart from that, they are usable (but not forever).


Python 3: Python is a programming language. Therefore, moving from one version of a programming language to the next can be challenging, especially if it introduces incompatible syntax and throws away old internal assumptions. Python 2 to 3 migration will go through both issues and much more, and research suggests that many NVDA features and add-ons will be affected, including some synthesizers the community uses (sorry, Espeak, you’re included in this mix). Specifically, due to prevalence of Unicode, it’ll take some time to come up with routines that will work with text formatted as Unicode and other encodings, and unfortunately, some speech synthesizers will insist on using ANSI format strings when in fact Python 3 wants to read and write Unicode (Espeak is a notable case).

What is the issue/are the issues regarding espeak (I have experience converting Python 2 to 3 code)?

Are you referring to espeak wanting UTF-8 (which is like/compatible with ANSI/ASCII strings), or issues with the way the NVDA espeak binding is written?

NOTE: UTF-8, UTF-16, and UTF-32 are all different Unicode encodings. Espeak supports UTF-8 and UTF-16, but not UTF-32.

Kind regards,

In regards to add-ons, any add-on that deals with text processing are affected (speech synthesizers, for example). Also, if they use Python standard library (various Python modules), they need to take note of differences between Python 2 and 3, especially in regards to module and function renames (_winreg versus winreg, the former with an underscore and the latter without).


A more general overview of what will it take to move NVDA to Python 3 can be found at:




Join to automatically receive all group messages.