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


 

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).

 

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:

https://github.com/nvaccess/nvda/issues/7105

 

Cheers,

Joseph


 

Hi,

Clarification: NVDA 2018.3 will continue to be powered by Python 2.

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Joseph Lee
Sent: Sunday, August 26, 2018 9:07 AM
To: nvda@groups.io
Subject: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

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).

 

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:

https://github.com/nvaccess/nvda/issues/7105

 

Cheers,

Joseph


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,
Reece

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:

https://github.com/nvaccess/nvda/issues/7105

 

Cheers,

Joseph


 

Hi,

When I call espeak_Initialize when initializing Espeak from NVDA, I get an exception and Espeak can’t find phonetics table from a specific location. I will need to investigate this further, as being able to get at least one synthesizer running in Python 3 mode is a crucial milestone I hope to achieve soon.

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Reece H. Dunn
Sent: Sunday, August 26, 2018 10:26 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

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,
Reece

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:

https://github.com/nvaccess/nvda/issues/7105

 

Cheers,

Joseph


Don H
 

So I have to ask the question why change to the new python if it has the potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
Hi,
When I call espeak_Initialize when initializing Espeak from NVDA, I get an exception and Espeak can’t find phonetics table from a specific location. I will need to investigate this further, as being able to get at least one synthesizer running in Python 3 mode is a crucial milestone I hope to achieve soon.
Cheers,
Joseph
*From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Reece H. Dunn
*Sent:* Sunday, August 26, 2018 10:26 AM
*To:* nvda@nvda.groups.io
*Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3
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,
Reece
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:
https://github.com/nvaccess/nvda/issues/7105
Cheers,
Joseph


 

Hi,
Several important reasons come to my mind:
* Python 2 sunset date is approaching: On January 1, 2020, support for Python 2 will be terminated by Python Software Foundation (PSF), the main entity that defines and coordinates development of Python programming language. Although there might be "night lighting" efforts - longer support by third parties, but for all intents and purposes, as far as CPython is concerned, that is the sunset date.
* Unicode: Python 2 had ability to deal with Unicode and older text encoding mechanisms. Python 3 standardizes this around Unicode. With more characters being added to Unicode standard (the latest edition, version 11.0, adds emoji and characters from additional scripts around the world), coupled with globalization and internationalization of software projects, it became important to standardize around this.
* New possibilities: Python 3 introduces features that could be used by NVDA and its add-ons, including asynchronous I/O, more predictable thread switching mechanism, virtual Python environments (for isolating code from the outside world for testing and other scenarios) and many others.
* Easier source code level debugging: if you run NVDA from source code, you'll find you're using Windows 8 when in fact you might be running 8.1 or 10. Python 3 adds native support for Windows 10, which makes it easier for developers to add new features or test bug fixes for Windows 8.1 and 10 as well as on older Windows versions.

Of course, with change comes responsibilities to make sure old code works as intended (as much as possible), and every change has its upsides and downsides. At the moment some NVDA developers (including I) are researching possible issues people will encounter when we do move to Python 3.
Cheers,
Joseph

-----Original Message-----
From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Don H
Sent: Sunday, August 26, 2018 11:39 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

So I have to ask the question why change to the new python if it has the potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
Hi,

When I call espeak_Initialize when initializing Espeak from NVDA, I
get an exception and Espeak can’t find phonetics table from a specific
location. I will need to investigate this further, as being able to
get at least one synthesizer running in Python 3 mode is a crucial
milestone I hope to achieve soon.

Cheers,

Joseph

*From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Reece
H. Dunn
*Sent:* Sunday, August 26, 2018 10:26 AM
*To:* nvda@nvda.groups.io
*Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
Python 3

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,
Reece

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:

https://github.com/nvaccess/nvda/issues/7105

Cheers,

Joseph


Gene
 

Does that mean anything for the future?  How often is support stopped for old versions.  If this occurs once every roughly ten years, this could be a serious ongoing problem.  . 
 
Should the new Pytho have some sort of emulator to allow older code to run? 
 
Gene
----- Original Message -----

From: Joseph Lee
Sent: Sunday, August 26, 2018 1:51 PM
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

Hi,
Several important reasons come to my mind:
* Python 2 sunset date is approaching: On January 1, 2020, support for Python 2 will be terminated by Python Software Foundation (PSF), the main entity that defines and coordinates development of Python programming language. Although there might be "night lighting" efforts - longer support by third parties, but for all intents and purposes, as far as CPython is concerned, that is the sunset date.
* Unicode: Python 2 had ability to deal with Unicode and older text encoding mechanisms. Python 3 standardizes this around Unicode. With more characters being added to Unicode standard (the latest edition, version 11.0, adds emoji and characters from additional scripts around the world), coupled with globalization and internationalization of software projects, it became important to standardize around this.
* New possibilities: Python 3 introduces features that could be used by NVDA and its add-ons, including asynchronous I/O, more predictable thread switching mechanism, virtual Python environments (for isolating code from the outside world for testing and other scenarios) and many others.
* Easier source code level debugging: if you run NVDA from source code, you'll find you're using Windows 8 when in fact you might be running 8.1 or 10. Python 3 adds native support for Windows 10, which makes it easier for developers to add new features or test bug fixes for Windows 8.1 and 10 as well as on older Windows versions.

Of course, with change comes responsibilities to make sure old code works as intended (as much as possible), and every change has its upsides and downsides. At the moment some NVDA developers (including I) are researching possible issues people will encounter when we do move to Python 3.
Cheers,
Joseph


-----Original Message-----
From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Don H
Sent: Sunday, August 26, 2018 11:39 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

So I have to ask the question why change to the new python if it has the potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
> Hi,
>
> When I call espeak_Initialize when initializing Espeak from NVDA, I
> get an exception and Espeak can’t find phonetics table from a specific
> location. I will need to investigate this further, as being able to
> get at least one synthesizer running in Python 3 mode is a crucial
> milestone I hope to achieve soon.
>
> Cheers,
>
> Joseph
>
> *From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Reece
> H. Dunn
> *Sent:* Sunday, August 26, 2018 10:26 AM
> *To:* nvda@nvda.groups.io
> *Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
> Python 3
>
> 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,
> Reece
>
>     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:
>
>     https://github.com/nvaccess/nvda/issues/7105
>
>     Cheers,
>
>     Joseph
>
>








 

Hi,

In the past, when Python 3 wasn’t under active development or deployed widely, NVDA source code was modified periodically to add features from various Python 2.x releases.

As for emulation: we’re talking about two completely different aspects of computing here: Python is a programming language, not an operating system. Emulation makes sense if Python was an operating system and had necessary infrastructure to run legacy code. However, being a programming language, it may not allow old assumptions to hold true in some cases (Unicode, for example). At least Python 3 interpreter will warn you if you’ve got code that depends on old assumptions, but it won’t correct it for you; in a way, you can get around it by using a compatibility layer (called “shim”), and one such compatibility layer will be included in NVDA 2018.3: the “six” module, and we got this for free as part of moving to wxPython 4.0.3.

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Gene
Sent: Sunday, August 26, 2018 12:03 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

Does that mean anything for the future?  How often is support stopped for old versions.  If this occurs once every roughly ten years, this could be a serious ongoing problem.  . 

 

Should the new Pytho have some sort of emulator to allow older code to run? 

 

Gene

----- Original Message -----

 

From: Joseph Lee

Sent: Sunday, August 26, 2018 1:51 PM

Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

Hi,
Several important reasons come to my mind:
* Python 2 sunset date is approaching: On January 1, 2020, support for Python 2 will be terminated by Python Software Foundation (PSF), the main entity that defines and coordinates development of Python programming language. Although there might be "night lighting" efforts - longer support by third parties, but for all intents and purposes, as far as CPython is concerned, that is the sunset date.
* Unicode: Python 2 had ability to deal with Unicode and older text encoding mechanisms. Python 3 standardizes this around Unicode. With more characters being added to Unicode standard (the latest edition, version 11.0, adds emoji and characters from additional scripts around the world), coupled with globalization and internationalization of software projects, it became important to standardize around this.
* New possibilities: Python 3 introduces features that could be used by NVDA and its add-ons, including asynchronous I/O, more predictable thread switching mechanism, virtual Python environments (for isolating code from the outside world for testing and other scenarios) and many others.
* Easier source code level debugging: if you run NVDA from source code, you'll find you're using Windows 8 when in fact you might be running 8.1 or 10. Python 3 adds native support for Windows 10, which makes it easier for developers to add new features or test bug fixes for Windows 8.1 and 10 as well as on older Windows versions.

Of course, with change comes responsibilities to make sure old code works as intended (as much as possible), and every change has its upsides and downsides. At the moment some NVDA developers (including I) are researching possible issues people will encounter when we do move to Python 3.
Cheers,
Joseph


-----Original Message-----
From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Don H
Sent: Sunday, August 26, 2018 11:39 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

So I have to ask the question why change to the new python if it has the potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
> Hi,
>
> When I call espeak_Initialize when initializing Espeak from NVDA, I
> get an exception and Espeak can’t find phonetics table from a specific
> location. I will need to investigate this further, as being able to
> get at least one synthesizer running in Python 3 mode is a crucial
> milestone I hope to achieve soon.
>
> Cheers,
>
> Joseph
>
> *From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Reece
> H. Dunn
> *Sent:* Sunday, August 26, 2018 10:26 AM
> *To:* nvda@nvda.groups.io
> *Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
> Python 3
>
> 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,
> Reece
>
>     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:
>
>     https://github.com/nvaccess/nvda/issues/7105
>
>     Cheers,
>
>     Joseph
>
>







kelby carlson <kelbycarlson@...>
 

Well I definitely can't afford to update by the sound of this. NVDA is my work screen reader and I can't risk anything breaking. I share the frustration of others if this is going to cause such widespread problems.


On Aug 26, 2018, at 3:11 PM, Joseph Lee <joseph.lee22590@...> wrote:

Hi,

In the past, when Python 3 wasn’t under active development or deployed widely, NVDA source code was modified periodically to add features from various Python 2.x releases.

As for emulation: we’re talking about two completely different aspects of computing here: Python is a programming language, not an operating system. Emulation makes sense if Python was an operating system and had necessary infrastructure to run legacy code. However, being a programming language, it may not allow old assumptions to hold true in some cases (Unicode, for example). At least Python 3 interpreter will warn you if you’ve got code that depends on old assumptions, but it won’t correct it for you; in a way, you can get around it by using a compatibility layer (called “shim”), and one such compatibility layer will be included in NVDA 2018.3: the “six” module, and we got this for free as part of moving to wxPython 4.0.3.

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Gene
Sent: Sunday, August 26, 2018 12:03 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

Does that mean anything for the future?  How often is support stopped for old versions.  If this occurs once every roughly ten years, this could be a serious ongoing problem.  . 

 

Should the new Pytho have some sort of emulator to allow older code to run? 

 

Gene

----- Original Message -----

 

From: Joseph Lee

Sent: Sunday, August 26, 2018 1:51 PM

Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

Hi,
Several important reasons come to my mind:
* Python 2 sunset date is approaching: On January 1, 2020, support for Python 2 will be terminated by Python Software Foundation (PSF), the main entity that defines and coordinates development of Python programming language. Although there might be "night lighting" efforts - longer support by third parties, but for all intents and purposes, as far as CPython is concerned, that is the sunset date.
* Unicode: Python 2 had ability to deal with Unicode and older text encoding mechanisms. Python 3 standardizes this around Unicode. With more characters being added to Unicode standard (the latest edition, version 11.0, adds emoji and characters from additional scripts around the world), coupled with globalization and internationalization of software projects, it became important to standardize around this.
* New possibilities: Python 3 introduces features that could be used by NVDA and its add-ons, including asynchronous I/O, more predictable thread switching mechanism, virtual Python environments (for isolating code from the outside world for testing and other scenarios) and many others.
* Easier source code level debugging: if you run NVDA from source code, you'll find you're using Windows 8 when in fact you might be running 8.1 or 10. Python 3 adds native support for Windows 10, which makes it easier for developers to add new features or test bug fixes for Windows 8.1 and 10 as well as on older Windows versions.

Of course, with change comes responsibilities to make sure old code works as intended (as much as possible), and every change has its upsides and downsides. At the moment some NVDA developers (including I) are researching possible issues people will encounter when we do move to Python 3.
Cheers,
Joseph


-----Original Message-----
From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Don H
Sent: Sunday, August 26, 2018 11:39 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

So I have to ask the question why change to the new python if it has the potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
> Hi,
>
> When I call espeak_Initialize when initializing Espeak from NVDA, I
> get an exception and Espeak can’t find phonetics table from a specific
> location. I will need to investigate this further, as being able to
> get at least one synthesizer running in Python 3 mode is a crucial
> milestone I hope to achieve soon.
>
> Cheers,
>
> Joseph
>
> *From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Reece
> H. Dunn
> *Sent:* Sunday, August 26, 2018 10:26 AM
> *To:* nvda@nvda.groups.io
> *Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
> Python 3
>
> 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,
> Reece
>
>     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:
>
>     https://github.com/nvaccess/nvda/issues/7105
>
>     Cheers,
>
>     Joseph
>
>







 

Hi Kelby,

I understand the sentiment expressed by you and others. What we saw with one particular add-on discussed throughout yesterday is just a taste of what’s to come in the future. The add-ons community is aware of the fact that Python 3 transition is a big migration, and I’ll remind add-on authors (including myself) to never forget users when we do move to Python 3 (this reminds me: I need to ask add-ons community to start contacting authors of add-ons that will exhibit problems once Python 3 transition takes place; a personal message to Ralph: I’d like to invite you to submit your add-ons for basic add-on review so they can show up on add-ons website for easier discoverability).

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of kelby carlson
Sent: Sunday, August 26, 2018 12:15 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

Well I definitely can't afford to update by the sound of this. NVDA is my work screen reader and I can't risk anything breaking. I share the frustration of others if this is going to cause such widespread problems.


On Aug 26, 2018, at 3:11 PM, Joseph Lee <joseph.lee22590@...> wrote:

Hi,

In the past, when Python 3 wasn’t under active development or deployed widely, NVDA source code was modified periodically to add features from various Python 2.x releases.

As for emulation: we’re talking about two completely different aspects of computing here: Python is a programming language, not an operating system. Emulation makes sense if Python was an operating system and had necessary infrastructure to run legacy code. However, being a programming language, it may not allow old assumptions to hold true in some cases (Unicode, for example). At least Python 3 interpreter will warn you if you’ve got code that depends on old assumptions, but it won’t correct it for you; in a way, you can get around it by using a compatibility layer (called “shim”), and one such compatibility layer will be included in NVDA 2018.3: the “six” module, and we got this for free as part of moving to wxPython 4.0.3.

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Gene
Sent: Sunday, August 26, 2018 12:03 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

Does that mean anything for the future?  How often is support stopped for old versions.  If this occurs once every roughly ten years, this could be a serious ongoing problem.  . 

 

Should the new Pytho have some sort of emulator to allow older code to run? 

 

Gene

----- Original Message -----

 

From: Joseph Lee

Sent: Sunday, August 26, 2018 1:51 PM

Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

Hi,
Several important reasons come to my mind:
* Python 2 sunset date is approaching: On January 1, 2020, support for Python 2 will be terminated by Python Software Foundation (PSF), the main entity that defines and coordinates development of Python programming language. Although there might be "night lighting" efforts - longer support by third parties, but for all intents and purposes, as far as CPython is concerned, that is the sunset date.
* Unicode: Python 2 had ability to deal with Unicode and older text encoding mechanisms. Python 3 standardizes this around Unicode. With more characters being added to Unicode standard (the latest edition, version 11.0, adds emoji and characters from additional scripts around the world), coupled with globalization and internationalization of software projects, it became important to standardize around this.
* New possibilities: Python 3 introduces features that could be used by NVDA and its add-ons, including asynchronous I/O, more predictable thread switching mechanism, virtual Python environments (for isolating code from the outside world for testing and other scenarios) and many others.
* Easier source code level debugging: if you run NVDA from source code, you'll find you're using Windows 8 when in fact you might be running 8.1 or 10. Python 3 adds native support for Windows 10, which makes it easier for developers to add new features or test bug fixes for Windows 8.1 and 10 as well as on older Windows versions.

Of course, with change comes responsibilities to make sure old code works as intended (as much as possible), and every change has its upsides and downsides. At the moment some NVDA developers (including I) are researching possible issues people will encounter when we do move to Python 3.
Cheers,
Joseph


-----Original Message-----
From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Don H
Sent: Sunday, August 26, 2018 11:39 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

So I have to ask the question why change to the new python if it has the potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
> Hi,
>
> When I call espeak_Initialize when initializing Espeak from NVDA, I
> get an exception and Espeak can’t find phonetics table from a specific
> location. I will need to investigate this further, as being able to
> get at least one synthesizer running in Python 3 mode is a crucial
> milestone I hope to achieve soon.
>
> Cheers,
>
> Joseph
>
> *From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Reece
> H. Dunn
> *Sent:* Sunday, August 26, 2018 10:26 AM
> *To:* nvda@nvda.groups.io
> *Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
> Python 3
>
> 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,
> Reece
>
>     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:
>
>     https://github.com/nvaccess/nvda/issues/7105
>
>     Cheers,
>
>     Joseph
>
>








Marshall handheld Flax
 

One other note: while transitioning to Python 3 isn't optional, there is no limit to how much testing the community can provide before the Python 3 code becomes the production release.  Are there plans to organize the user community to provide additional and more-organized testing?

Thanks!

Marshall

On Sun, Aug 26, 2018 at 3:28 PM Joseph Lee <joseph.lee22590@...> wrote:

Hi Kelby,

I understand the sentiment expressed by you and others. What we saw with one particular add-on discussed throughout yesterday is just a taste of what’s to come in the future. The add-ons community is aware of the fact that Python 3 transition is a big migration, and I’ll remind add-on authors (including myself) to never forget users when we do move to Python 3 (this reminds me: I need to ask add-ons community to start contacting authors of add-ons that will exhibit problems once Python 3 transition takes place; a personal message to Ralph: I’d like to invite you to submit your add-ons for basic add-on review so they can show up on add-ons website for easier discoverability).

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of kelby carlson
Sent: Sunday, August 26, 2018 12:15 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

Well I definitely can't afford to update by the sound of this. NVDA is my work screen reader and I can't risk anything breaking. I share the frustration of others if this is going to cause such widespread problems.


On Aug 26, 2018, at 3:11 PM, Joseph Lee <joseph.lee22590@...> wrote:

Hi,

In the past, when Python 3 wasn’t under active development or deployed widely, NVDA source code was modified periodically to add features from various Python 2.x releases.

As for emulation: we’re talking about two completely different aspects of computing here: Python is a programming language, not an operating system. Emulation makes sense if Python was an operating system and had necessary infrastructure to run legacy code. However, being a programming language, it may not allow old assumptions to hold true in some cases (Unicode, for example). At least Python 3 interpreter will warn you if you’ve got code that depends on old assumptions, but it won’t correct it for you; in a way, you can get around it by using a compatibility layer (called “shim”), and one such compatibility layer will be included in NVDA 2018.3: the “six” module, and we got this for free as part of moving to wxPython 4.0.3.

Cheers,

Joseph

 

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Gene
Sent: Sunday, August 26, 2018 12:03 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

Does that mean anything for the future?  How often is support stopped for old versions.  If this occurs once every roughly ten years, this could be a serious ongoing problem.  . 

 

Should the new Pytho have some sort of emulator to allow older code to run? 

 

Gene

----- Original Message -----

 

From: Joseph Lee

Sent: Sunday, August 26, 2018 1:51 PM

Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

 

Hi,
Several important reasons come to my mind:
* Python 2 sunset date is approaching: On January 1, 2020, support for Python 2 will be terminated by Python Software Foundation (PSF), the main entity that defines and coordinates development of Python programming language. Although there might be "night lighting" efforts - longer support by third parties, but for all intents and purposes, as far as CPython is concerned, that is the sunset date.
* Unicode: Python 2 had ability to deal with Unicode and older text encoding mechanisms. Python 3 standardizes this around Unicode. With more characters being added to Unicode standard (the latest edition, version 11.0, adds emoji and characters from additional scripts around the world), coupled with globalization and internationalization of software projects, it became important to standardize around this.
* New possibilities: Python 3 introduces features that could be used by NVDA and its add-ons, including asynchronous I/O, more predictable thread switching mechanism, virtual Python environments (for isolating code from the outside world for testing and other scenarios) and many others.
* Easier source code level debugging: if you run NVDA from source code, you'll find you're using Windows 8 when in fact you might be running 8.1 or 10. Python 3 adds native support for Windows 10, which makes it easier for developers to add new features or test bug fixes for Windows 8.1 and 10 as well as on older Windows versions.

Of course, with change comes responsibilities to make sure old code works as intended (as much as possible), and every change has its upsides and downsides. At the moment some NVDA developers (including I) are researching possible issues people will encounter when we do move to Python 3.
Cheers,
Joseph


-----Original Message-----
From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Don H
Sent: Sunday, August 26, 2018 11:39 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

So I have to ask the question why change to the new python if it has the potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
> Hi,
>
> When I call espeak_Initialize when initializing Espeak from NVDA, I
> get an exception and Espeak can’t find phonetics table from a specific
> location. I will need to investigate this further, as being able to
> get at least one synthesizer running in Python 3 mode is a crucial
> milestone I hope to achieve soon.
>
> Cheers,
>
> Joseph
>
> *From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Reece
> H. Dunn
> *Sent:* Sunday, August 26, 2018 10:26 AM
> *To:* nvda@nvda.groups.io
> *Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
> Python 3
>
> 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,
> Reece
>
>     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:
>
>     https://github.com/nvaccess/nvda/issues/7105
>
>     Cheers,
>
>     Joseph
>
>








Brian's Mail list account
 

Yes but from what I read at the start, and have not looked of late, the fixes will be done for commonly used Synths, but in the case of externally sourced ones this will have to mean the cooperation of those companies in rewriting their code.
Espeak will, I imagine be fixable. I like Espeak, as its fast and does not have the problems of real voices ie garbled at speed and the terrible lisp of Eloquence for uk English listeners.

Incidentally, I suppose as long as an add on makes no use of the gui for the wx4 versions of nvda, then most things will still work. So add ons with their own set ups etc will be the issue.
Incidentally for all our xp readers, Toolbar Explorer will run on that older nvda version for that system. I tried it last night.
Brian

bglists@...
Sent via blueyonder.
Please address personal E-mail to:-
briang1@..., putting 'Brian Gaff'
in the display name field.

----- Original Message -----
From: "Joseph Lee" <joseph.lee22590@...>
To: <nvda@groups.io>
Sent: Sunday, August 26, 2018 5:06 PM
Subject: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3


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).



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:

https://github.com/nvaccess/nvda/issues/7105



Cheers,

Joseph




Brian's Mail list account
 

I already asked this, but of course as the developers of the language do what they like \I'd imagine making something like this would be very hard and might allow people to not use the more modern system.
More to the point though non support of a language does not mean its death. It just means no updates and we are now using it and it has stayed very much the same for a long time, so security wise, will it matter how many people use the older version?
Idealistically of course a rewrite is required for all the stated reasons, but where do you fit the user into the equation. I would suggest myself that a stable latest version be always available in python 2.7 for at least two iterations of the Python 3 version, as finding those annoying little problems is not going to be fast I think. It would also be handy to talk to other projects who have made such a transition and see what their experiences have been. I bet there are still bugs in the new version of the language, so work around are probably known about in the community.
Brian

bglists@...
Sent via blueyonder.
Please address personal E-mail to:-
briang1@..., putting 'Brian Gaff'
in the display name field.

----- Original Message -----
From: "Gene" <gsasner@...>
To: <nvda@nvda.groups.io>
Sent: Sunday, August 26, 2018 8:03 PM
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3


Does that mean anything for the future? How often is support stopped for old versions. If this occurs once every roughly ten years, this could be a serious ongoing problem. .

Should the new Pytho have some sort of emulator to allow older code to run?

Gene
----- Original Message -----


From: Joseph Lee
Sent: Sunday, August 26, 2018 1:51 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3


Hi,
Several important reasons come to my mind:
* Python 2 sunset date is approaching: On January 1, 2020, support for Python 2 will be terminated by Python Software Foundation (PSF), the main entity that defines and coordinates development of Python programming language. Although there might be "night lighting" efforts - longer support by third parties, but for all intents and purposes, as far as CPython is concerned, that is the sunset date.
* Unicode: Python 2 had ability to deal with Unicode and older text encoding mechanisms. Python 3 standardizes this around Unicode. With more characters being added to Unicode standard (the latest edition, version 11.0, adds emoji and characters from additional scripts around the world), coupled with globalization and internationalization of software projects, it became important to standardize around this.
* New possibilities: Python 3 introduces features that could be used by NVDA and its add-ons, including asynchronous I/O, more predictable thread switching mechanism, virtual Python environments (for isolating code from the outside world for testing and other scenarios) and many others.
* Easier source code level debugging: if you run NVDA from source code, you'll find you're using Windows 8 when in fact you might be running 8.1 or 10. Python 3 adds native support for Windows 10, which makes it easier for developers to add new features or test bug fixes for Windows 8.1 and 10 as well as on older Windows versions.

Of course, with change comes responsibilities to make sure old code works as intended (as much as possible), and every change has its upsides and downsides. At the moment some NVDA developers (including I) are researching possible issues people will encounter when we do move to Python 3.
Cheers,
Joseph


-----Original Message-----
From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Don H
Sent: Sunday, August 26, 2018 11:39 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

So I have to ask the question why change to the new python if it has the potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
Hi,

When I call espeak_Initialize when initializing Espeak from NVDA, I
get an exception and Espeak can’t find phonetics table from a specific
location. I will need to investigate this further, as being able to
get at least one synthesizer running in Python 3 mode is a crucial
milestone I hope to achieve soon.

Cheers,

Joseph

*From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Reece
H. Dunn
*Sent:* Sunday, August 26, 2018 10:26 AM
*To:* nvda@nvda.groups.io
*Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
Python 3

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,
Reece

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:

https://github.com/nvaccess/nvda/issues/7105

Cheers,

Joseph


Brian's Mail list account
 

That is good to know. However a lot of this has not been explained well to users until you wrote these messages. A lot of the debates about have been at a very technical level and probably above the pay grade of most users... grin, and in various tickets and issues on gather which makes it unlikely many here will have ever looked at them in any case.
Brian

bglists@...
Sent via blueyonder.
Please address personal E-mail to:-
briang1@..., putting 'Brian Gaff'
in the display name field.

----- Original Message -----
From: "Joseph Lee" <joseph.lee22590@...>
To: <nvda@nvda.groups.io>
Sent: Sunday, August 26, 2018 8:11 PM
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3


Hi,

In the past, when Python 3 wasn’t under active development or deployed widely, NVDA source code was modified periodically to add features from various Python 2.x releases.

As for emulation: we’re talking about two completely different aspects of computing here: Python is a programming language, not an operating system. Emulation makes sense if Python was an operating system and had necessary infrastructure to run legacy code. However, being a programming language, it may not allow old assumptions to hold true in some cases (Unicode, for example). At least Python 3 interpreter will warn you if you’ve got code that depends on old assumptions, but it won’t correct it for you; in a way, you can get around it by using a compatibility layer (called “shim”), and one such compatibility layer will be included in NVDA 2018.3: the “six” module, and we got this for free as part of moving to wxPython 4.0.3.

Cheers,

Joseph



From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Gene
Sent: Sunday, August 26, 2018 12:03 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3



Does that mean anything for the future? How often is support stopped for old versions. If this occurs once every roughly ten years, this could be a serious ongoing problem. .



Should the new Pytho have some sort of emulator to allow older code to run?



Gene

----- Original Message -----



From: Joseph Lee <mailto:joseph.lee22590@...>

Sent: Sunday, August 26, 2018 1:51 PM

To: nvda@nvda.groups.io <mailto:nvda@nvda.groups.io>

Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3



Hi,
Several important reasons come to my mind:
* Python 2 sunset date is approaching: On January 1, 2020, support for Python 2 will be terminated by Python Software Foundation (PSF), the main entity that defines and coordinates development of Python programming language. Although there might be "night lighting" efforts - longer support by third parties, but for all intents and purposes, as far as CPython is concerned, that is the sunset date.
* Unicode: Python 2 had ability to deal with Unicode and older text encoding mechanisms. Python 3 standardizes this around Unicode. With more characters being added to Unicode standard (the latest edition, version 11.0, adds emoji and characters from additional scripts around the world), coupled with globalization and internationalization of software projects, it became important to standardize around this.
* New possibilities: Python 3 introduces features that could be used by NVDA and its add-ons, including asynchronous I/O, more predictable thread switching mechanism, virtual Python environments (for isolating code from the outside world for testing and other scenarios) and many others.
* Easier source code level debugging: if you run NVDA from source code, you'll find you're using Windows 8 when in fact you might be running 8.1 or 10. Python 3 adds native support for Windows 10, which makes it easier for developers to add new features or test bug fixes for Windows 8.1 and 10 as well as on older Windows versions.

Of course, with change comes responsibilities to make sure old code works as intended (as much as possible), and every change has its upsides and downsides. At the moment some NVDA developers (including I) are researching possible issues people will encounter when we do move to Python 3.
Cheers,
Joseph


-----Original Message-----
From: nvda@nvda.groups.io <mailto:nvda@nvda.groups.io> <nvda@nvda.groups.io <mailto:nvda@nvda.groups.io> > On Behalf Of Don H
Sent: Sunday, August 26, 2018 11:39 AM
To: nvda@nvda.groups.io <mailto:nvda@nvda.groups.io>
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

So I have to ask the question why change to the new python if it has the potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
Hi,

When I call espeak_Initialize when initializing Espeak from NVDA, I
get an exception and Espeak can’t find phonetics table from a specific
location. I will need to investigate this further, as being able to
get at least one synthesizer running in Python 3 mode is a crucial
milestone I hope to achieve soon.

Cheers,

Joseph

*From:* nvda@nvda.groups.io <mailto:nvda@nvda.groups.io> <nvda@nvda.groups.io <mailto:nvda@nvda.groups.io> > *On Behalf Of *Reece
H. Dunn
*Sent:* Sunday, August 26, 2018 10:26 AM
*To:* nvda@nvda.groups.io <mailto:nvda@nvda.groups.io>
*Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
Python 3

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,
Reece

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:

https://github.com/nvaccess/nvda/issues/7105

Cheers,

Joseph


Brian's Mail list account
 

I do not think WX4 will cause major problems.
As has been said though, unfortunately we came onto this debate before with windows XP. Its all a trade in the end. Preserving the old with the restrictions it places on future development, and biting the bullet toward a more capable system but having to sort out systemic incompatibilities caused in a complex system by relatively small changes in a language. To me though I am not totally clear why Python3 changes actual syntax and reserved words and conventions like underscores in names at all. Surely they should attempt to make the transition easy?
Brian

bglists@...
Sent via blueyonder.
Please address personal E-mail to:-
briang1@..., putting 'Brian Gaff'
in the display name field.

----- Original Message -----
From: "kelby carlson" <kelbycarlson@...>
To: <nvda@nvda.groups.io>
Sent: Sunday, August 26, 2018 8:15 PM
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3


Well I definitely can't afford to update by the sound of this. NVDA is my work screen reader and I can't risk anything breaking. I share the frustration of others if this is going to cause such widespread problems.
On Aug 26, 2018, at 3:11 PM, Joseph Lee <joseph.lee22590@...> wrote:

Hi,
In the past, when Python 3 wasn’t under active development or deployed widely, NVDA source code was modified periodically to add features from various Python 2.x releases.
As for emulation: we’re talking about two completely different aspects of computing here: Python is a programming language, not an operating system. Emulation makes sense if Python was an operating system and had necessary infrastructure to run legacy code. However, being a programming language, it may not allow old assumptions to hold true in some cases (Unicode, for example). At least Python 3 interpreter will warn you if you’ve got code that depends on old assumptions, but it won’t correct it for you; in a way, you can get around it by using a compatibility layer (called “shim”), and one such compatibility layer will be included in NVDA 2018.3: the “six” module, and we got this for free as part of moving to wxPython 4.0.3.
Cheers,
Joseph

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Gene
Sent: Sunday, August 26, 2018 12:03 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

Does that mean anything for the future? How often is support stopped for old versions. If this occurs once every roughly ten years, this could be a serious ongoing problem. .

Should the new Pytho have some sort of emulator to allow older code to run?

Gene
----- Original Message -----

From: Joseph Lee
Sent: Sunday, August 26, 2018 1:51 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

Hi,
Several important reasons come to my mind:
* Python 2 sunset date is approaching: On January 1, 2020, support for Python 2 will be terminated by Python Software Foundation (PSF), the main entity that defines and coordinates development of Python programming language. Although there might be "night lighting" efforts - longer support by third parties, but for all intents and purposes, as far as CPython is concerned, that is the sunset date.
* Unicode: Python 2 had ability to deal with Unicode and older text encoding mechanisms. Python 3 standardizes this around Unicode. With more characters being added to Unicode standard (the latest edition, version 11.0, adds emoji and characters from additional scripts around the world), coupled with globalization and internationalization of software projects, it became important to standardize around this.
* New possibilities: Python 3 introduces features that could be used by NVDA and its add-ons, including asynchronous I/O, more predictable thread switching mechanism, virtual Python environments (for isolating code from the outside world for testing and other scenarios) and many others.
* Easier source code level debugging: if you run NVDA from source code, you'll find you're using Windows 8 when in fact you might be running 8.1 or 10. Python 3 adds native support for Windows 10, which makes it easier for developers to add new features or test bug fixes for Windows 8.1 and 10 as well as on older Windows versions.

Of course, with change comes responsibilities to make sure old code works as intended (as much as possible), and every change has its upsides and downsides. At the moment some NVDA developers (including I) are researching possible issues people will encounter when we do move to Python 3.
Cheers,
Joseph


-----Original Message-----
From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Don H
Sent: Sunday, August 26, 2018 11:39 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

So I have to ask the question why change to the new python if it has the potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
Hi,

When I call espeak_Initialize when initializing Espeak from NVDA, I
get an exception and Espeak can’t find phonetics table from a specific
location. I will need to investigate this further, as being able to
get at least one synthesizer running in Python 3 mode is a crucial
milestone I hope to achieve soon.

Cheers,

Joseph

*From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Reece
H. Dunn
*Sent:* Sunday, August 26, 2018 10:26 AM
*To:* nvda@nvda.groups.io
*Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
Python 3

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,
Reece

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:

https://github.com/nvaccess/nvda/issues/7105

Cheers,

Joseph








Brian's Mail list account
 

I'd also say that nobody is going to stop the older version of NVDA from working.
Brian

bglists@...
Sent via blueyonder.
Please address personal E-mail to:-
briang1@..., putting 'Brian Gaff'
in the display name field.

----- Original Message -----
From: "kelby carlson" <kelbycarlson@...>
To: <nvda@nvda.groups.io>
Sent: Sunday, August 26, 2018 8:15 PM
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3


Well I definitely can't afford to update by the sound of this. NVDA is my work screen reader and I can't risk anything breaking. I share the frustration of others if this is going to cause such widespread problems.
On Aug 26, 2018, at 3:11 PM, Joseph Lee <joseph.lee22590@...> wrote:

Hi,
In the past, when Python 3 wasn’t under active development or deployed widely, NVDA source code was modified periodically to add features from various Python 2.x releases.
As for emulation: we’re talking about two completely different aspects of computing here: Python is a programming language, not an operating system. Emulation makes sense if Python was an operating system and had necessary infrastructure to run legacy code. However, being a programming language, it may not allow old assumptions to hold true in some cases (Unicode, for example). At least Python 3 interpreter will warn you if you’ve got code that depends on old assumptions, but it won’t correct it for you; in a way, you can get around it by using a compatibility layer (called “shim”), and one such compatibility layer will be included in NVDA 2018.3: the “six” module, and we got this for free as part of moving to wxPython 4.0.3.
Cheers,
Joseph

From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Gene
Sent: Sunday, August 26, 2018 12:03 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

Does that mean anything for the future? How often is support stopped for old versions. If this occurs once every roughly ten years, this could be a serious ongoing problem. .

Should the new Pytho have some sort of emulator to allow older code to run?

Gene
----- Original Message -----

From: Joseph Lee
Sent: Sunday, August 26, 2018 1:51 PM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

Hi,
Several important reasons come to my mind:
* Python 2 sunset date is approaching: On January 1, 2020, support for Python 2 will be terminated by Python Software Foundation (PSF), the main entity that defines and coordinates development of Python programming language. Although there might be "night lighting" efforts - longer support by third parties, but for all intents and purposes, as far as CPython is concerned, that is the sunset date.
* Unicode: Python 2 had ability to deal with Unicode and older text encoding mechanisms. Python 3 standardizes this around Unicode. With more characters being added to Unicode standard (the latest edition, version 11.0, adds emoji and characters from additional scripts around the world), coupled with globalization and internationalization of software projects, it became important to standardize around this.
* New possibilities: Python 3 introduces features that could be used by NVDA and its add-ons, including asynchronous I/O, more predictable thread switching mechanism, virtual Python environments (for isolating code from the outside world for testing and other scenarios) and many others.
* Easier source code level debugging: if you run NVDA from source code, you'll find you're using Windows 8 when in fact you might be running 8.1 or 10. Python 3 adds native support for Windows 10, which makes it easier for developers to add new features or test bug fixes for Windows 8.1 and 10 as well as on older Windows versions.

Of course, with change comes responsibilities to make sure old code works as intended (as much as possible), and every change has its upsides and downsides. At the moment some NVDA developers (including I) are researching possible issues people will encounter when we do move to Python 3.
Cheers,
Joseph


-----Original Message-----
From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Don H
Sent: Sunday, August 26, 2018 11:39 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3

So I have to ask the question why change to the new python if it has the potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
Hi,

When I call espeak_Initialize when initializing Espeak from NVDA, I
get an exception and Espeak can’t find phonetics table from a specific
location. I will need to investigate this further, as being able to
get at least one synthesizer running in Python 3 mode is a crucial
milestone I hope to achieve soon.

Cheers,

Joseph

*From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Reece
H. Dunn
*Sent:* Sunday, August 26, 2018 10:26 AM
*To:* nvda@nvda.groups.io
*Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
Python 3

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,
Reece

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:

https://github.com/nvaccess/nvda/issues/7105

Cheers,

Joseph








Brian's Mail list account
 

I have advocated for this, but there is a kind of back end increase in workload implied in this. We tend to moan here or via a ticket or on whichever list we use. We do not always use logic to report the issue very well, and unless its blindingly obvious, if a developer cannot make the problem occur, it cannot be fixed. This is a problem now. You have probably all seen the template guide for issue reporting, which attempts to make the reporter think about defining the issue as exactly as they can to save time, and it is time we are short of. Played workers on NVDA are not a huge endless resource, after all.
Brian

bglists@...
Sent via blueyonder.
Please address personal E-mail to:-
briang1@..., putting 'Brian Gaff'
in the display name field.

----- Original Message -----
From: "Marshall handheld Flax" <m.droid.flax@...>
To: <nvda@nvda.groups.io>
Sent: Sunday, August 26, 2018 10:32 PM
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as Python 3


One other note: while transitioning to Python 3 isn't optional, there is no
limit to how much testing the community can provide before the Python 3
code becomes the production release. Are there plans to organize the user
community to provide additional and more-organized testing?

Thanks!

Marshall

On Sun, Aug 26, 2018 at 3:28 PM Joseph Lee <joseph.lee22590@...>
wrote:

Hi Kelby,

I understand the sentiment expressed by you and others. What we saw with
one particular add-on discussed throughout yesterday is just a taste of
what’s to come in the future. The add-ons community is aware of the fact
that Python 3 transition is a big migration, and I’ll remind add-on authors
(including myself) to never forget users when we do move to Python 3 (this
reminds me: I need to ask add-ons community to start contacting authors of
add-ons that will exhibit problems once Python 3 transition takes place; a
personal message to Ralph: I’d like to invite you to submit your add-ons
for basic add-on review so they can show up on add-ons website for easier
discoverability).

Cheers,

Joseph



*From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *kelby
carlson
*Sent:* Sunday, August 26, 2018 12:15 PM
*To:* nvda@nvda.groups.io
*Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
Python 3



Well I definitely can't afford to update by the sound of this. NVDA is my
work screen reader and I can't risk anything breaking. I share the
frustration of others if this is going to cause such widespread problems.


On Aug 26, 2018, at 3:11 PM, Joseph Lee <joseph.lee22590@...> wrote:

Hi,

In the past, when Python 3 wasn’t under active development or deployed
widely, NVDA source code was modified periodically to add features from
various Python 2.x releases.

As for emulation: we’re talking about two completely different aspects of
computing here: Python is a programming language, not an operating system.
Emulation makes sense if Python was an operating system and had necessary
infrastructure to run legacy code. However, being a programming language,
it may not allow old assumptions to hold true in some cases (Unicode, for
example). At least Python 3 interpreter will warn you if you’ve got code
that depends on old assumptions, but it won’t correct it for you; in a way,
you can get around it by using a compatibility layer (called “shim”), and
one such compatibility layer will be included in NVDA 2018.3: the “six”
module, and we got this for free as part of moving to wxPython 4.0.3.

Cheers,

Joseph



*From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Gene
*Sent:* Sunday, August 26, 2018 12:03 PM
*To:* nvda@nvda.groups.io
*Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
Python 3



Does that mean anything for the future? How often is support stopped for
old versions. If this occurs once every roughly ten years, this could be a
serious ongoing problem. .



Should the new Pytho have some sort of emulator to allow older code to
run?



Gene

----- Original Message -----



*From:* Joseph Lee <joseph.lee22590@...>

*Sent:* Sunday, August 26, 2018 1:51 PM

*To:* nvda@nvda.groups.io

*Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
Python 3



Hi,
Several important reasons come to my mind:
* Python 2 sunset date is approaching: On January 1, 2020, support for
Python 2 will be terminated by Python Software Foundation (PSF), the main
entity that defines and coordinates development of Python programming
language. Although there might be "night lighting" efforts - longer support
by third parties, but for all intents and purposes, as far as CPython is
concerned, that is the sunset date.
* Unicode: Python 2 had ability to deal with Unicode and older text
encoding mechanisms. Python 3 standardizes this around Unicode. With more
characters being added to Unicode standard (the latest edition, version
11.0, adds emoji and characters from additional scripts around the world),
coupled with globalization and internationalization of software projects,
it became important to standardize around this.
* New possibilities: Python 3 introduces features that could be used by
NVDA and its add-ons, including asynchronous I/O, more predictable thread
switching mechanism, virtual Python environments (for isolating code from
the outside world for testing and other scenarios) and many others.
* Easier source code level debugging: if you run NVDA from source code,
you'll find you're using Windows 8 when in fact you might be running 8.1 or
10. Python 3 adds native support for Windows 10, which makes it easier for
developers to add new features or test bug fixes for Windows 8.1 and 10 as
well as on older Windows versions.

Of course, with change comes responsibilities to make sure old code works
as intended (as much as possible), and every change has its upsides and
downsides. At the moment some NVDA developers (including I) are researching
possible issues people will encounter when we do move to Python 3.
Cheers,
Joseph


-----Original Message-----
From: nvda@nvda.groups.io <nvda@nvda.groups.io> On Behalf Of Don H
Sent: Sunday, August 26, 2018 11:39 AM
To: nvda@nvda.groups.io
Subject: Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
Python 3

So I have to ask the question why change to the new python if it has the
potential of messing things up?

On 8/26/2018 1:14 PM, Joseph Lee wrote:
Hi,

When I call espeak_Initialize when initializing Espeak from NVDA, I
get an exception and Espeak can’t find phonetics table from a specific
location. I will need to investigate this further, as being able to
get at least one synthesizer running in Python 3 mode is a crucial
milestone I hope to achieve soon.

Cheers,

Joseph

*From:* nvda@nvda.groups.io <nvda@nvda.groups.io> *On Behalf Of *Reece
H. Dunn
*Sent:* Sunday, August 26, 2018 10:26 AM
*To:* nvda@nvda.groups.io
*Subject:* Re: [nvda] NVDA 2018.3: wxPython 4 is not the same thing as
Python 3

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,
Reece

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:

https://github.com/nvaccess/nvda/issues/7105

Cheers,

Joseph