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
toggle quoted message
Show quoted text
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
|
|
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
toggle quoted message
Show quoted text
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
|
|
So I have to ask the question why change to the new python if it has the potential of messing things up?
toggle quoted message
Show quoted text
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
toggle quoted message
Show quoted text
-----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
|
|
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
-----
toggle quoted message
Show quoted text
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.ioSubject: 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
toggle quoted message
Show quoted text
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? ----- Original Message ----- 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.
toggle quoted message
Show quoted text
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 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? ----- Original Message ----- 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
toggle quoted message
Show quoted text
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. 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 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? ----- Original Message ----- 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 > >
|
|
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
toggle quoted message
Show quoted text
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 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. 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 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? ----- Original Message ----- 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.
toggle quoted message
Show quoted text
----- 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.
toggle quoted message
Show quoted text
----- 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.
toggle quoted message
Show quoted text
----- 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.
toggle quoted message
Show quoted text
----- 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.
toggle quoted message
Show quoted text
----- 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.
toggle quoted message
Show quoted text
----- 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
|
|