Topics

Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1


 

Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of NV Access.

More than a year ago, you may recall NV Access announcing Project Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA 2019.3 in early 2020. Well, the progress continues with Project Walrus, an (active) effort to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA fork may have noticed a branch called “walrus”, and that’s what that branch is about.

Project Walrus comes from “walrus” operator (:=), used to denote assignment expressions introduced in Python 3.8. With assignment expression, you can do something like:

if someVariable := someCondition:

    …

 

As opposed to:

someVariable = something

if someVariable == someCondition:

    …

 

Project Walrus actually began shortly after NVDA 2019.3 was released – as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were released. Due to control label issues in newer wxPython 4.0.x releases, I decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control label issues. Along the way, some tweaks were made to not only run NVDA under Python 3.8, but also gain the ability to build it under Python 3.8 as well. In fact, with tweaks and dependency updates, you can build NVDA under Python 3.9.

 

The overall goal of Project Walrus is to port NVDA to run well under Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1) include:

  • Assignment expressions (walrus operator)
  • Directly using gettext.pgettext to specify context for translatable strings, replacing a built-in function workaround in current NVDA releases.
  • Os.add_dll_directory to securely load DLL’s from known locations (the function in question is built into Windows 8; Windows 7 SP1 users must install a KB update to use NVDA from now on, but most installations should have this installed).
  • Actionable toast messages (more so on Windows 10). Among many things, this will simplify NVDA update notifications.
  • Updated wxWidgets localizations for many languages.

 

Why not Python 3.9? Python 3.9 does not support Windows 7 (you can’t install Python 3.9 on Windows 7) as Microsoft ended extended support for Windows 7 in January 2020. Although paid support is available for enterprises until early 2023, Python Software Foundation follows official support timeline from Microsoft, therefore Python 3.9 (October 2020) does not support Windows 7. Another reason is user base – according to NV Access, 17 percent of NVDA installations checking for updates report running on Windows 7. Besides, Python 3.8 will receive bug fixes until sometime in 2021, so we have time before moving onto Python 3.9, or when ready, Python 3.10 in 2022.

 

To demonstrate Project Walrus, two prototype builds will be released in a few hours (hosted on my personal website):

  • A Python 3.7 version with wxPython 4.1.1 applied
  • Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will be detailed once released.

 

Thanks, and please stay safe and healthy.

Cheers,

Joseph


Brian's Mail list account
 

Funny that, the notation seems almost to be making it like a lot of the old basic languages from my youth.

Brian

bglists@blueyonder.co.uk
Sent via blueyonder.
Please address personal E-mail to:-
briang1@blueyonder.co.uk, putting 'Brian Gaff'
in the display name field.
Newsgroup monitored: alt.comp.blind-users

----- Original Message -----
From: "Joseph Lee" <joseph.lee22590@gmail.com>
To: <nvda-devel@groups.io>
Sent: Sunday, December 27, 2020 5:11 AM
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1


Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of NV
Access.

More than a year ago, you may recall NV Access announcing Project Threshold
to move NVDA from Python 2.7 to 3.7, resulting in NVDA 2019.3 in early 2020.
Well, the progress continues with Project Walrus, an (active) effort to port
NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in hopes of
showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA fork may have
noticed a branch called "walrus", and that's what that branch is about.

Project Walrus comes from "walrus" operator (:=), used to denote assignment
expressions introduced in Python 3.8. With assignment expression, you can do
something like:

if someVariable := someCondition:

.



As opposed to:

someVariable = something

if someVariable == someCondition:

.



Project Walrus actually began shortly after NVDA 2019.3 was released - as
soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were released.
Due to control label issues in newer wxPython 4.0.x releases, I decided to
wait until 4.1.0 alpha came out, as 4.1.0 fixes control label issues. Along
the way, some tweaks were made to not only run NVDA under Python 3.8, but
also gain the ability to build it under Python 3.8 as well. In fact, with
tweaks and dependency updates, you can build NVDA under Python 3.9.



The overall goal of Project Walrus is to port NVDA to run well under Python
3.8, as well as prepare for wxPython 4.1.1. Key changes thanks to Project
Walrus (specifically, Python 3.8 and wxPython 4.1.1) include:

* Assignment expressions (walrus operator)
* Directly using gettext.pgettext to specify context for translatable
strings, replacing a built-in function workaround in current NVDA releases.
* Os.add_dll_directory to securely load DLL's from known locations
(the function in question is built into Windows 8; Windows 7 SP1 users must
install a KB update to use NVDA from now on, but most installations should
have this installed).
* Actionable toast messages (more so on Windows 10). Among many
things, this will simplify NVDA update notifications.
* Updated wxWidgets localizations for many languages.



Why not Python 3.9? Python 3.9 does not support Windows 7 (you can't install
Python 3.9 on Windows 7) as Microsoft ended extended support for Windows 7
in January 2020. Although paid support is available for enterprises until
early 2023, Python Software Foundation follows official support timeline
from Microsoft, therefore Python 3.9 (October 2020) does not support Windows
7. Another reason is user base - according to NV Access, 17 percent of NVDA
installations checking for updates report running on Windows 7. Besides,
Python 3.8 will receive bug fixes until sometime in 2021, so we have time
before moving onto Python 3.9, or when ready, Python 3.10 in 2022.



To demonstrate Project Walrus, two prototype builds will be released in a
few hours (hosted on my personal website):

* A Python 3.7 version with wxPython 4.1.1 applied
* Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will be
detailed once released.



Thanks, and please stay safe and healthy.

Cheers,

Joseph






Bill Dengler
 

Personally, I’d like to see us move to 3.9 (dependency compatibility not withstanding) as soon as possible.

Windows 7 is end of life, and the performance improvements and new language features in 3.9 shouldn’t hold back users of current software. As 2021.1 will be an API-breaking release, deprecating very old operating system versions seems in line with removing old app modules and making API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely. Users on an unsupported OS don’t tend to be that interested in the latest and greatest.

Thanks,

Bill

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of NV Access.

More than a year ago, you may recall NV Access announcing Project Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA 2019.3 in early 2020. Well, the progress continues with Project Walrus, an (active) effort to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA fork may have noticed a branch called “walrus”, and that’s what that branch is about.

Project Walrus comes from “walrus” operator (:=), used to denote assignment expressions introduced in Python 3.8. With assignment expression, you can do something like:

if someVariable := someCondition:

    …

 

As opposed to:

someVariable = something

if someVariable == someCondition:

    …

 

Project Walrus actually began shortly after NVDA 2019.3 was released – as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were released. Due to control label issues in newer wxPython 4.0.x releases, I decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control label issues. Along the way, some tweaks were made to not only run NVDA under Python 3.8, but also gain the ability to build it under Python 3.8 as well. In fact, with tweaks and dependency updates, you can build NVDA under Python 3.9.

 

The overall goal of Project Walrus is to port NVDA to run well under Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1) include:

  • Assignment expressions (walrus operator)
  • Directly using gettext.pgettext to specify context for translatable strings, replacing a built-in function workaround in current NVDA releases.
  • Os.add_dll_directory to securely load DLL’s from known locations (the function in question is built into Windows 8; Windows 7 SP1 users must install a KB update to use NVDA from now on, but most installations should have this installed).
  • Actionable toast messages (more so on Windows 10). Among many things, this will simplify NVDA update notifications.
  • Updated wxWidgets localizations for many languages.

 

Why not Python 3.9? Python 3.9 does not support Windows 7 (you can’t install Python 3.9 on Windows 7) as Microsoft ended extended support for Windows 7 in January 2020. Although paid support is available for enterprises until early 2023, Python Software Foundation follows official support timeline from Microsoft, therefore Python 3.9 (October 2020) does not support Windows 7. Another reason is user base – according to NV Access, 17 percent of NVDA installations checking for updates report running on Windows 7. Besides, Python 3.8 will receive bug fixes until sometime in 2021, so we have time before moving onto Python 3.9, or when ready, Python 3.10 in 2022.

 

To demonstrate Project Walrus, two prototype builds will be released in a few hours (hosted on my personal website):

  • A Python 3.7 version with wxPython 4.1.1 applied
  • Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will be detailed once released.

 

Thanks, and please stay safe and healthy.

Cheers,

Joseph


Andy B.
 

I would like to see NVDA keep up with the current releases of Python and WX. As Bill said, users on older operating systems don’t usually care about the newest of things. On the other hand, those who care about the newest of things might want to use newer language features in 3.9. The Linux world has been on Python 3.9 for a while now. Linux isn’t better than Windows, and I am not here to start a war. However, what does it say about NVDA when Orca is already able to make use of Python 3.9. In fact, Orca screen reader gives it’s users a choice on what Python version we want to use. The only thing the documentation states is that we have to use at least Python 3.75, and no later than 3.9. If NVDA could give us that choice, things might have a better outcome than always lagging behind a version of dependencies.

 

 

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill Dengler
Sent: Sunday, December 27, 2020 4:44 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Personally, I’d like to see us move to 3.9 (dependency compatibility not withstanding) as soon as possible.

Windows 7 is end of life, and the performance improvements and new language features in 3.9 shouldn’t hold back users of current software. As 2021.1 will be an API-breaking release, deprecating very old operating system versions seems in line with removing old app modules and making API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely. Users on an unsupported OS don’t tend to be that interested in the latest and greatest.

Thanks,

Bill

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of NV Access.

More than a year ago, you may recall NV Access announcing Project Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA 2019.3 in early 2020. Well, the progress continues with Project Walrus, an (active) effort to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA fork may have noticed a branch called “walrus”, and that’s what that branch is about.

Project Walrus comes from “walrus” operator (:=), used to denote assignment expressions introduced in Python 3.8. With assignment expression, you can do something like:

if someVariable := someCondition:

    …

 

As opposed to:

someVariable = something

if someVariable == someCondition:

    …

 

Project Walrus actually began shortly after NVDA 2019.3 was released – as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were released. Due to control label issues in newer wxPython 4.0.x releases, I decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control label issues. Along the way, some tweaks were made to not only run NVDA under Python 3.8, but also gain the ability to build it under Python 3.8 as well. In fact, with tweaks and dependency updates, you can build NVDA under Python 3.9.

 

The overall goal of Project Walrus is to port NVDA to run well under Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1) include:

  • Assignment expressions (walrus operator)
  • Directly using gettext.pgettext to specify context for translatable strings, replacing a built-in function workaround in current NVDA releases.
  • Os.add_dll_directory to securely load DLL’s from known locations (the function in question is built into Windows 8; Windows 7 SP1 users must install a KB update to use NVDA from now on, but most installations should have this installed).
  • Actionable toast messages (more so on Windows 10). Among many things, this will simplify NVDA update notifications.
  • Updated wxWidgets localizations for many languages.

 

Why not Python 3.9? Python 3.9 does not support Windows 7 (you can’t install Python 3.9 on Windows 7) as Microsoft ended extended support for Windows 7 in January 2020. Although paid support is available for enterprises until early 2023, Python Software Foundation follows official support timeline from Microsoft, therefore Python 3.9 (October 2020) does not support Windows 7. Another reason is user base – according to NV Access, 17 percent of NVDA installations checking for updates report running on Windows 7. Besides, Python 3.8 will receive bug fixes until sometime in 2021, so we have time before moving onto Python 3.9, or when ready, Python 3.10 in 2022.

 

To demonstrate Project Walrus, two prototype builds will be released in a few hours (hosted on my personal website):

  • A Python 3.7 version with wxPython 4.1.1 applied
  • Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will be detailed once released.

 

Thanks, and please stay safe and healthy.

Cheers,

Joseph


Travis Siegel
 

Actually, Brian, that := notation is more of a pascal construct. That's the syntax used to assign variables in pascal, one that has always made a lot of sense to me, because then there's no double equals to check equality, simply a single equals symbol, it prevents a lot of errors such as you get in C where a single equals is for assignment, and a double one is for  comparison. I'm thinking this new construct will make python code a lot more readable, which can only be a good thing.

On 12/27/2020 2:44 AM, Brian's Mail list account via groups.io wrote:
Funny that, the notation seems almost to be making it like a lot of the old basic languages from my youth.

Brian

bglists@blueyonder.co.uk
Sent via blueyonder.
Please address personal E-mail to:-
briang1@blueyonder.co.uk, putting 'Brian Gaff'
in the display name field.
Newsgroup monitored: alt.comp.blind-users
----- Original Message ----- From: "Joseph Lee" <joseph.lee22590@gmail.com>
To: <nvda-devel@groups.io>
Sent: Sunday, December 27, 2020 5:11 AM
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1


Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of NV
Access.

More than a year ago, you may recall NV Access announcing Project Threshold
to move NVDA from Python 2.7 to 3.7, resulting in NVDA 2019.3 in early 2020.
Well, the progress continues with Project Walrus, an (active) effort to port
NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in hopes of
showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA fork may have
noticed a branch called "walrus", and that's what that branch is about.

Project Walrus comes from "walrus" operator (:=), used to denote assignment
expressions introduced in Python 3.8. With assignment expression, you can do
something like:

if someVariable := someCondition:

   .



As opposed to:

someVariable = something

if someVariable == someCondition:

   .



Project Walrus actually began shortly after NVDA 2019.3 was released - as
soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were released.
Due to control label issues in newer wxPython 4.0.x releases, I decided to
wait until 4.1.0 alpha came out, as 4.1.0 fixes control label issues. Along
the way, some tweaks were made to not only run NVDA under Python 3.8, but
also gain the ability to build it under Python 3.8 as well. In fact, with
tweaks and dependency updates, you can build NVDA under Python 3.9.



The overall goal of Project Walrus is to port NVDA to run well under Python
3.8, as well as prepare for wxPython 4.1.1. Key changes thanks to Project
Walrus (specifically, Python 3.8 and wxPython 4.1.1) include:

* Assignment expressions (walrus operator)
* Directly using gettext.pgettext to specify context for translatable
strings, replacing a built-in function workaround in current NVDA releases.
* Os.add_dll_directory to securely load DLL's from known locations
(the function in question is built into Windows 8; Windows 7 SP1 users must
install a KB update to use NVDA from now on, but most installations should
have this installed).
* Actionable toast messages (more so on Windows 10). Among many
things, this will simplify NVDA update notifications.
* Updated wxWidgets localizations for many languages.



Why not Python 3.9? Python 3.9 does not support Windows 7 (you can't install
Python 3.9 on Windows 7) as Microsoft ended extended support for Windows 7
in January 2020. Although paid support is available for enterprises until
early 2023, Python Software Foundation follows official support timeline
from Microsoft, therefore Python 3.9 (October 2020) does not support Windows
7. Another reason is user base - according to NV Access, 17 percent of NVDA
installations checking for updates report running on Windows 7. Besides,
Python 3.8 will receive bug fixes until sometime in 2021, so we have time
before moving onto Python 3.9, or when ready, Python 3.10 in 2022.



To demonstrate Project Walrus, two prototype builds will be released in a
few hours (hosted on my personal website):

* A Python 3.7 version with wxPython 4.1.1 applied
* Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will be
detailed once released.



Thanks, and please stay safe and healthy.

Cheers,

Joseph










Travis Siegel
 

Regarding dependencies, it's always a crapshoot as to whether the latest versions of any given library will be available on a newer release of python.  Often times, they do get updated, and all is well, but sometimes, there's a delay in implementation, and if it's a critical part of NVDA, this prevents immediate adoption of the new versions, (as evidenced by the bit about wxpython in the original email), so insisting on the latest and greatest despite user preference isn't always the best option.

I'm sure plans are in the works to update to new versions of python, as soon as is technically feasible, but in the meantime, personally, I say as long as it works, the version it uses is immaterial.

On 12/27/2020 7:32 AM, Andy B. wrote:

I would like to see NVDA keep up with the current releases of Python and WX. As Bill said, users on older operating systems don’t usually care about the newest of things. On the other hand, those who care about the newest of things might want to use newer language features in 3.9. The Linux world has been on Python 3.9 for a while now. Linux isn’t better than Windows, and I am not here to start a war. However, what does it say about NVDA when Orca is already able to make use of Python 3.9. In fact, Orca screen reader gives it’s users a choice on what Python version we want to use. The only thing the documentation states is that we have to use at least Python 3.75, and no later than 3.9. If NVDA could give us that choice, things might have a better outcome than always lagging behind a version of dependencies.

 

 

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill Dengler
Sent: Sunday, December 27, 2020 4:44 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Personally, I’d like to see us move to 3.9 (dependency compatibility not withstanding) as soon as possible.

Windows 7 is end of life, and the performance improvements and new language features in 3.9 shouldn’t hold back users of current software. As 2021.1 will be an API-breaking release, deprecating very old operating system versions seems in line with removing old app modules and making API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely. Users on an unsupported OS don’t tend to be that interested in the latest and greatest.

Thanks,

Bill

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of NV Access.

More than a year ago, you may recall NV Access announcing Project Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA 2019.3 in early 2020. Well, the progress continues with Project Walrus, an (active) effort to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA fork may have noticed a branch called “walrus”, and that’s what that branch is about.

Project Walrus comes from “walrus” operator (:=), used to denote assignment expressions introduced in Python 3.8. With assignment expression, you can do something like:

if someVariable := someCondition:

    …

 

As opposed to:

someVariable = something

if someVariable == someCondition:

    …

 

Project Walrus actually began shortly after NVDA 2019.3 was released – as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were released. Due to control label issues in newer wxPython 4.0.x releases, I decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control label issues. Along the way, some tweaks were made to not only run NVDA under Python 3.8, but also gain the ability to build it under Python 3.8 as well. In fact, with tweaks and dependency updates, you can build NVDA under Python 3.9.

 

The overall goal of Project Walrus is to port NVDA to run well under Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1) include:

  • Assignment expressions (walrus operator)
  • Directly using gettext.pgettext to specify context for translatable strings, replacing a built-in function workaround in current NVDA releases.
  • Os.add_dll_directory to securely load DLL’s from known locations (the function in question is built into Windows 8; Windows 7 SP1 users must install a KB update to use NVDA from now on, but most installations should have this installed).
  • Actionable toast messages (more so on Windows 10). Among many things, this will simplify NVDA update notifications.
  • Updated wxWidgets localizations for many languages.

 

Why not Python 3.9? Python 3.9 does not support Windows 7 (you can’t install Python 3.9 on Windows 7) as Microsoft ended extended support for Windows 7 in January 2020. Although paid support is available for enterprises until early 2023, Python Software Foundation follows official support timeline from Microsoft, therefore Python 3.9 (October 2020) does not support Windows 7. Another reason is user base – according to NV Access, 17 percent of NVDA installations checking for updates report running on Windows 7. Besides, Python 3.8 will receive bug fixes until sometime in 2021, so we have time before moving onto Python 3.9, or when ready, Python 3.10 in 2022.

 

To demonstrate Project Walrus, two prototype builds will be released in a few hours (hosted on my personal website):

  • A Python 3.7 version with wxPython 4.1.1 applied
  • Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will be detailed once released.

 

Thanks, and please stay safe and healthy.

Cheers,

Joseph


 

Hi,

As of now, wxPython 4.1.1 does have a Python 3.9 wheel, so that dependency is satisfied. There are other important dependencies that must be met, BRLTTY Python bindings being a notable one (currently Python 3.7 binding exists but not for newer Python releases).

In theory Python 3.9 version of NVDA could run on Windows 7 and Server 2008 R2, but can’t guarantee that bug fixes (unless bugs in the scale of WannaCry is found) for Windows 7 will make it to consumers and small businesses. There are also features in newer dependencies that will help improve user experience, some of which cannot be implemented consistently because Windows 7 does not support certain things – for example, toast notifications will improve NVDA’s update check and notification experience but only on Windows 8.x and 10; certain Windows API and features, including touch support and audio ducking, will not work on Windows 7.

I will investigate creating a Python 3.9 based Project Walrus prototype if there is demand for it (based on past responses, it appears there is). For now, Python 3.7 and 3.8 will get priority in Walrus. Ultimately, it is really up to NV Access folks to decide which python version to target, and if 3.9 is chosen, I hope a message will be sent to Windows 7 that will assure users that NVDA 2020.4 will still work on Windows 7 (my add-ons will continue to support Windows 7 unless Python 3.9 is chosen; still, I might require users to use Windows 8.1 or 10 when using my add-ons earlier, perhaps by next summer).

Cheers,

Joseph

 

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Travis Siegel
Sent: Sunday, December 27, 2020 9:09 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Regarding dependencies, it's always a crapshoot as to whether the latest versions of any given library will be available on a newer release of python.  Often times, they do get updated, and all is well, but sometimes, there's a delay in implementation, and if it's a critical part of NVDA, this prevents immediate adoption of the new versions, (as evidenced by the bit about wxpython in the original email), so insisting on the latest and greatest despite user preference isn't always the best option.

I'm sure plans are in the works to update to new versions of python, as soon as is technically feasible, but in the meantime, personally, I say as long as it works, the version it uses is immaterial.

On 12/27/2020 7:32 AM, Andy B. wrote:

I would like to see NVDA keep up with the current releases of Python and WX. As Bill said, users on older operating systems don’t usually care about the newest of things. On the other hand, those who care about the newest of things might want to use newer language features in 3.9. The Linux world has been on Python 3.9 for a while now. Linux isn’t better than Windows, and I am not here to start a war. However, what does it say about NVDA when Orca is already able to make use of Python 3.9. In fact, Orca screen reader gives it’s users a choice on what Python version we want to use. The only thing the documentation states is that we have to use at least Python 3.75, and no later than 3.9. If NVDA could give us that choice, things might have a better outcome than always lagging behind a version of dependencies.

 

 

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill Dengler
Sent: Sunday, December 27, 2020 4:44 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Personally, I’d like to see us move to 3.9 (dependency compatibility not withstanding) as soon as possible.

Windows 7 is end of life, and the performance improvements and new language features in 3.9 shouldn’t hold back users of current software. As 2021.1 will be an API-breaking release, deprecating very old operating system versions seems in line with removing old app modules and making API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely. Users on an unsupported OS don’t tend to be that interested in the latest and greatest.

Thanks,

Bill

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of NV Access.

More than a year ago, you may recall NV Access announcing Project Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA 2019.3 in early 2020. Well, the progress continues with Project Walrus, an (active) effort to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA fork may have noticed a branch called “walrus”, and that’s what that branch is about.

Project Walrus comes from “walrus” operator (:=), used to denote assignment expressions introduced in Python 3.8. With assignment expression, you can do something like:

if someVariable := someCondition:

    …

 

As opposed to:

someVariable = something

if someVariable == someCondition:

    …

 

Project Walrus actually began shortly after NVDA 2019.3 was released – as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were released. Due to control label issues in newer wxPython 4.0.x releases, I decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control label issues. Along the way, some tweaks were made to not only run NVDA under Python 3.8, but also gain the ability to build it under Python 3.8 as well. In fact, with tweaks and dependency updates, you can build NVDA under Python 3.9.

 

The overall goal of Project Walrus is to port NVDA to run well under Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1) include:

  • Assignment expressions (walrus operator)
  • Directly using gettext.pgettext to specify context for translatable strings, replacing a built-in function workaround in current NVDA releases.
  • Os.add_dll_directory to securely load DLL’s from known locations (the function in question is built into Windows 8; Windows 7 SP1 users must install a KB update to use NVDA from now on, but most installations should have this installed).
  • Actionable toast messages (more so on Windows 10). Among many things, this will simplify NVDA update notifications.
  • Updated wxWidgets localizations for many languages.

 

Why not Python 3.9? Python 3.9 does not support Windows 7 (you can’t install Python 3.9 on Windows 7) as Microsoft ended extended support for Windows 7 in January 2020. Although paid support is available for enterprises until early 2023, Python Software Foundation follows official support timeline from Microsoft, therefore Python 3.9 (October 2020) does not support Windows 7. Another reason is user base – according to NV Access, 17 percent of NVDA installations checking for updates report running on Windows 7. Besides, Python 3.8 will receive bug fixes until sometime in 2021, so we have time before moving onto Python 3.9, or when ready, Python 3.10 in 2022.

 

To demonstrate Project Walrus, two prototype builds will be released in a few hours (hosted on my personal website):

  • A Python 3.7 version with wxPython 4.1.1 applied
  • Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will be detailed once released.

 

Thanks, and please stay safe and healthy.

Cheers,

Joseph


 

Hi all,

And now, the prototype builds:

 

Things to note:

  • BRLTTY, as well as several add-ons,  will not work on Python 3.8 build.
  • In some cases you may notice that NVDA will not respond when you try to preform some NVDA commands while NVDA menu is open. This is also the case when you open NVDA’s About dialog.
  • Input gestures dialog will not open due to sizer flag changes in wxPython 4.1.x.

 

I’ll look into releasing a Python 3.9 based prototype in coming days.

Cheers,

Joseph

 

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee via groups.io
Sent: Sunday, December 27, 2020 9:38 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Hi,

As of now, wxPython 4.1.1 does have a Python 3.9 wheel, so that dependency is satisfied. There are other important dependencies that must be met, BRLTTY Python bindings being a notable one (currently Python 3.7 binding exists but not for newer Python releases).

In theory Python 3.9 version of NVDA could run on Windows 7 and Server 2008 R2, but can’t guarantee that bug fixes (unless bugs in the scale of WannaCry is found) for Windows 7 will make it to consumers and small businesses. There are also features in newer dependencies that will help improve user experience, some of which cannot be implemented consistently because Windows 7 does not support certain things – for example, toast notifications will improve NVDA’s update check and notification experience but only on Windows 8.x and 10; certain Windows API and features, including touch support and audio ducking, will not work on Windows 7.

I will investigate creating a Python 3.9 based Project Walrus prototype if there is demand for it (based on past responses, it appears there is). For now, Python 3.7 and 3.8 will get priority in Walrus. Ultimately, it is really up to NV Access folks to decide which python version to target, and if 3.9 is chosen, I hope a message will be sent to Windows 7 that will assure users that NVDA 2020.4 will still work on Windows 7 (my add-ons will continue to support Windows 7 unless Python 3.9 is chosen; still, I might require users to use Windows 8.1 or 10 when using my add-ons earlier, perhaps by next summer).

Cheers,

Joseph

 

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Travis Siegel
Sent: Sunday, December 27, 2020 9:09 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Regarding dependencies, it's always a crapshoot as to whether the latest versions of any given library will be available on a newer release of python.  Often times, they do get updated, and all is well, but sometimes, there's a delay in implementation, and if it's a critical part of NVDA, this prevents immediate adoption of the new versions, (as evidenced by the bit about wxpython in the original email), so insisting on the latest and greatest despite user preference isn't always the best option.

I'm sure plans are in the works to update to new versions of python, as soon as is technically feasible, but in the meantime, personally, I say as long as it works, the version it uses is immaterial.

On 12/27/2020 7:32 AM, Andy B. wrote:

I would like to see NVDA keep up with the current releases of Python and WX. As Bill said, users on older operating systems don’t usually care about the newest of things. On the other hand, those who care about the newest of things might want to use newer language features in 3.9. The Linux world has been on Python 3.9 for a while now. Linux isn’t better than Windows, and I am not here to start a war. However, what does it say about NVDA when Orca is already able to make use of Python 3.9. In fact, Orca screen reader gives it’s users a choice on what Python version we want to use. The only thing the documentation states is that we have to use at least Python 3.75, and no later than 3.9. If NVDA could give us that choice, things might have a better outcome than always lagging behind a version of dependencies.

 

 

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill Dengler
Sent: Sunday, December 27, 2020 4:44 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Personally, I’d like to see us move to 3.9 (dependency compatibility not withstanding) as soon as possible.

Windows 7 is end of life, and the performance improvements and new language features in 3.9 shouldn’t hold back users of current software. As 2021.1 will be an API-breaking release, deprecating very old operating system versions seems in line with removing old app modules and making API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely. Users on an unsupported OS don’t tend to be that interested in the latest and greatest.

Thanks,

Bill

From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1

 

Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of NV Access.

More than a year ago, you may recall NV Access announcing Project Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA 2019.3 in early 2020. Well, the progress continues with Project Walrus, an (active) effort to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA fork may have noticed a branch called “walrus”, and that’s what that branch is about.

Project Walrus comes from “walrus” operator (:=), used to denote assignment expressions introduced in Python 3.8. With assignment expression, you can do something like:

if someVariable := someCondition:

    …

 

As opposed to:

someVariable = something

if someVariable == someCondition:

    …

 

Project Walrus actually began shortly after NVDA 2019.3 was released – as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were released. Due to control label issues in newer wxPython 4.0.x releases, I decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control label issues. Along the way, some tweaks were made to not only run NVDA under Python 3.8, but also gain the ability to build it under Python 3.8 as well. In fact, with tweaks and dependency updates, you can build NVDA under Python 3.9.

 

The overall goal of Project Walrus is to port NVDA to run well under Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1) include:

  • Assignment expressions (walrus operator)
  • Directly using gettext.pgettext to specify context for translatable strings, replacing a built-in function workaround in current NVDA releases.
  • Os.add_dll_directory to securely load DLL’s from known locations (the function in question is built into Windows 8; Windows 7 SP1 users must install a KB update to use NVDA from now on, but most installations should have this installed).
  • Actionable toast messages (more so on Windows 10). Among many things, this will simplify NVDA update notifications.
  • Updated wxWidgets localizations for many languages.

 

Why not Python 3.9? Python 3.9 does not support Windows 7 (you can’t install Python 3.9 on Windows 7) as Microsoft ended extended support for Windows 7 in January 2020. Although paid support is available for enterprises until early 2023, Python Software Foundation follows official support timeline from Microsoft, therefore Python 3.9 (October 2020) does not support Windows 7. Another reason is user base – according to NV Access, 17 percent of NVDA installations checking for updates report running on Windows 7. Besides, Python 3.8 will receive bug fixes until sometime in 2021, so we have time before moving onto Python 3.9, or when ready, Python 3.10 in 2022.

 

To demonstrate Project Walrus, two prototype builds will be released in a few hours (hosted on my personal website):

  • A Python 3.7 version with wxPython 4.1.1 applied
  • Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will be detailed once released.

 

Thanks, and please stay safe and healthy.

Cheers,

Joseph


Brian's Mail list account
 

True, but a lot of the same constructs go back a very long way for me.

I still don' think I could learn Python, since its been so long since I wrote code back in the 8 bit z80 days in fact.
Brian

bglists@blueyonder.co.uk
Sent via blueyonder.
Please address personal E-mail to:-
briang1@blueyonder.co.uk, putting 'Brian Gaff'
in the display name field.
Newsgroup monitored: alt.comp.blind-users

----- Original Message -----
From: "Travis Siegel" <tsiegel@softcon.com>
To: <nvda-devel@groups.io>
Sent: Sunday, December 27, 2020 5:03 PM
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1


Actually, Brian, that := notation is more of a pascal construct. That's
the syntax used to assign variables in pascal, one that has always made
a lot of sense to me, because then there's no double equals to check
equality, simply a single equals symbol, it prevents a lot of errors
such as you get in C where a single equals is for assignment, and a
double one is for comparison. I'm thinking this new construct will make
python code a lot more readable, which can only be a good thing.


On 12/27/2020 2:44 AM, Brian's Mail list account via groups.io wrote:
Funny that, the notation seems almost to be making it like a lot of the old basic languages from my youth.

Brian

bglists@blueyonder.co.uk
Sent via blueyonder.
Please address personal E-mail to:-
briang1@blueyonder.co.uk, putting 'Brian Gaff'
in the display name field.
Newsgroup monitored: alt.comp.blind-users
----- Original Message ----- From: "Joseph Lee" <joseph.lee22590@gmail.com>
To: <nvda-devel@groups.io>
Sent: Sunday, December 27, 2020 5:11 AM
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1


Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of NV
Access.

More than a year ago, you may recall NV Access announcing Project Threshold
to move NVDA from Python 2.7 to 3.7, resulting in NVDA 2019.3 in early 2020.
Well, the progress continues with Project Walrus, an (active) effort to port
NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in hopes of
showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA fork may have
noticed a branch called "walrus", and that's what that branch is about.

Project Walrus comes from "walrus" operator (:=), used to denote assignment
expressions introduced in Python 3.8. With assignment expression, you can do
something like:

if someVariable := someCondition:

.



As opposed to:

someVariable = something

if someVariable == someCondition:

.



Project Walrus actually began shortly after NVDA 2019.3 was released - as
soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were released.
Due to control label issues in newer wxPython 4.0.x releases, I decided to
wait until 4.1.0 alpha came out, as 4.1.0 fixes control label issues. Along
the way, some tweaks were made to not only run NVDA under Python 3.8, but
also gain the ability to build it under Python 3.8 as well. In fact, with
tweaks and dependency updates, you can build NVDA under Python 3.9.



The overall goal of Project Walrus is to port NVDA to run well under Python
3.8, as well as prepare for wxPython 4.1.1. Key changes thanks to Project
Walrus (specifically, Python 3.8 and wxPython 4.1.1) include:

* Assignment expressions (walrus operator)
* Directly using gettext.pgettext to specify context for translatable
strings, replacing a built-in function workaround in current NVDA releases.
* Os.add_dll_directory to securely load DLL's from known locations
(the function in question is built into Windows 8; Windows 7 SP1 users must
install a KB update to use NVDA from now on, but most installations should
have this installed).
* Actionable toast messages (more so on Windows 10). Among many
things, this will simplify NVDA update notifications.
* Updated wxWidgets localizations for many languages.



Why not Python 3.9? Python 3.9 does not support Windows 7 (you can't install
Python 3.9 on Windows 7) as Microsoft ended extended support for Windows 7
in January 2020. Although paid support is available for enterprises until
early 2023, Python Software Foundation follows official support timeline
from Microsoft, therefore Python 3.9 (October 2020) does not support Windows
7. Another reason is user base - according to NV Access, 17 percent of NVDA
installations checking for updates report running on Windows 7. Besides,
Python 3.8 will receive bug fixes until sometime in 2021, so we have time
before moving onto Python 3.9, or when ready, Python 3.10 in 2022.



To demonstrate Project Walrus, two prototype builds will be released in a
few hours (hosted on my personal website):

* A Python 3.7 version with wxPython 4.1.1 applied
* Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will be
detailed once released.



Thanks, and please stay safe and healthy.

Cheers,

Joseph











Brian's Mail list account
 

I disagree since the main thrust of nvda at the current time is for those with older devices. In poorer countries it can be hard to get windows 10 machines. I only use Windows 7 due to the need for me to run software that windows 10 trashes every update. This is important to me, and I'd hat to lose the compatibility.

Brian

bglists@blueyonder.co.uk
Sent via blueyonder.
Please address personal E-mail to:-
briang1@blueyonder.co.uk, putting 'Brian Gaff'
in the display name field.
Newsgroup monitored: alt.comp.blind-users

----- Original Message -----
From: "Andy B." <sonfire11@gmail.com>
To: <nvda-devel@groups.io>
Sent: Sunday, December 27, 2020 12:32 PM
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8 and wxPython 4.1.1


I would like to see NVDA keep up with the current releases of Python and WX.
As Bill said, users on older operating systems don't usually care about the
newest of things. On the other hand, those who care about the newest of
things might want to use newer language features in 3.9. The Linux world has
been on Python 3.9 for a while now. Linux isn't better than Windows, and I
am not here to start a war. However, what does it say about NVDA when Orca
is already able to make use of Python 3.9. In fact, Orca screen reader gives
it's users a choice on what Python version we want to use. The only thing
the documentation states is that we have to use at least Python 3.75, and no
later than 3.9. If NVDA could give us that choice, things might have a
better outcome than always lagging behind a version of dependencies.





From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill Dengler
Sent: Sunday, December 27, 2020 4:44 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1



Personally, I'd like to see us move to 3.9 (dependency compatibility not
withstanding) as soon as possible.

Windows 7 is end of life
<https://support.microsoft.com/en-us/windows/windows-7-support-ended-on-janu
ary-14-2020-b75d4580-2cc7-895a-2c9c-1466d9a53962#:~:text=The%20specific%20en
d%20of%20support,longer%20available%20for%20the%20product.> , and the
performance improvements and new language features in 3.9 shouldn't hold
back users of current software. As 2021.1 will be an API-breaking release,
deprecating very old operating system versions seems in line with removing
old app modules and making API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely. Users on
an unsupported OS don't tend to be that interested in the latest and
greatest.

Thanks,

Bill

From: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
<nvda-devel@groups.io <mailto:nvda-devel@groups.io> > On Behalf Of Joseph
Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to Python 3.8
and wxPython 4.1.1



Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of NV
Access.

More than a year ago, you may recall NV Access announcing Project Threshold
to move NVDA from Python 2.7 to 3.7, resulting in NVDA 2019.3 in early 2020.
Well, the progress continues with Project Walrus, an (active) effort to port
NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in hopes of
showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA fork may have
noticed a branch called "walrus", and that's what that branch is about.

Project Walrus comes from "walrus" operator (:=), used to denote assignment
expressions introduced in Python 3.8. With assignment expression, you can do
something like:

if someVariable := someCondition:

.



As opposed to:

someVariable = something

if someVariable == someCondition:

.



Project Walrus actually began shortly after NVDA 2019.3 was released - as
soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were released.
Due to control label issues in newer wxPython 4.0.x releases, I decided to
wait until 4.1.0 alpha came out, as 4.1.0 fixes control label issues. Along
the way, some tweaks were made to not only run NVDA under Python 3.8, but
also gain the ability to build it under Python 3.8 as well. In fact, with
tweaks and dependency updates, you can build NVDA under Python 3.9.



The overall goal of Project Walrus is to port NVDA to run well under Python
3.8, as well as prepare for wxPython 4.1.1. Key changes thanks to Project
Walrus (specifically, Python 3.8 and wxPython 4.1.1) include:

* Assignment expressions (walrus operator)
* Directly using gettext.pgettext to specify context for translatable
strings, replacing a built-in function workaround in current NVDA releases.
* Os.add_dll_directory to securely load DLL's from known locations
(the function in question is built into Windows 8; Windows 7 SP1 users must
install a KB update to use NVDA from now on, but most installations should
have this installed).
* Actionable toast messages (more so on Windows 10). Among many
things, this will simplify NVDA update notifications.
* Updated wxWidgets localizations for many languages.



Why not Python 3.9? Python 3.9 does not support Windows 7 (you can't install
Python 3.9 on Windows 7) as Microsoft ended extended support for Windows 7
in January 2020. Although paid support is available for enterprises until
early 2023, Python Software Foundation follows official support timeline
from Microsoft, therefore Python 3.9 (October 2020) does not support Windows
7. Another reason is user base - according to NV Access, 17 percent of NVDA
installations checking for updates report running on Windows 7. Besides,
Python 3.8 will receive bug fixes until sometime in 2021, so we have time
before moving onto Python 3.9, or when ready, Python 3.10 in 2022.



To demonstrate Project Walrus, two prototype builds will be released in a
few hours (hosted on my personal website):

* A Python 3.7 version with wxPython 4.1.1 applied
* Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will be
detailed once released.



Thanks, and please stay safe and healthy.

Cheers,

Joseph








 

Hello everyone,
Update: Python 3.9 version of NVDA will not run on Windows 7, at least my
binary version won't; when launched, Windows says, "NVDA Application has
stopped working" with "ucrtbase.dll" as the faulting module, indicating a
runtime problem. I'll provide an update if I find out what happens if I
launch Python 3.9 embeddable package inside Windows 7 (if it doesn't work,
then we are stuck with Python 3.8 if the aim is to support Windows 7 users
for a while longer; if not, Python 3.9 is recommended).
Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Brian's Mail
list account via groups.io
Sent: Monday, December 28, 2020 3:26 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

I disagree since the main thrust of nvda at the current time is for those
with older devices. In poorer countries it can be hard to get windows 10
machines. I only use Windows 7 due to the need for me to run software that
windows 10 trashes every update. This is important to me, and I'd hat to
lose the compatibility.

Brian

bglists@blueyonder.co.uk
Sent via blueyonder.
Please address personal E-mail to:-
briang1@blueyonder.co.uk, putting 'Brian Gaff'
in the display name field.
Newsgroup monitored: alt.comp.blind-users
----- Original Message -----
From: "Andy B." <sonfire11@gmail.com>
To: <nvda-devel@groups.io>
Sent: Sunday, December 27, 2020 12:32 PM
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1


I would like to see NVDA keep up with the current releases of Python
and WX.
As Bill said, users on older operating systems don't usually care
about the newest of things. On the other hand, those who care about
the newest of things might want to use newer language features in 3.9.
The Linux world has been on Python 3.9 for a while now. Linux isn't
better than Windows, and I am not here to start a war. However, what
does it say about NVDA when Orca is already able to make use of Python
3.9. In fact, Orca screen reader gives it's users a choice on what
Python version we want to use. The only thing the documentation states
is that we have to use at least Python 3.75, and no later than 3.9.
If NVDA could give us that choice, things might have a better outcome
than always lagging behind a version of dependencies.





From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill
Dengler
Sent: Sunday, December 27, 2020 4:44 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8 and wxPython 4.1.1



Personally, I'd like to see us move to 3.9 (dependency compatibility
not
withstanding) as soon as possible.

Windows 7 is end of life
<https://support.microsoft.com/en-us/windows/windows-7-support-ended-o
n-janu
ary-14-2020-b75d4580-2cc7-895a-2c9c-1466d9a53962#:~:text=The%20specifi
c%20en d%20of%20support,longer%20available%20for%20the%20product.> ,
and the performance improvements and new language features in 3.9
shouldn't hold back users of current software. As 2021.1 will be an
API-breaking release, deprecating very old operating system versions
seems in line with removing old app modules and making
API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely.
Users on an unsupported OS don't tend to be that interested in the
latest and greatest.

Thanks,

Bill

From: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
<nvda-devel@groups.io <mailto:nvda-devel@groups.io> > On Behalf Of
Joseph Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8
and wxPython 4.1.1



Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of
NV Access.

More than a year ago, you may recall NV Access announcing Project
Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA
2019.3 in early 2020.
Well, the progress continues with Project Walrus, an (active) effort
to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in
hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA
fork may have noticed a branch called "walrus", and that's what that
branch is about.

Project Walrus comes from "walrus" operator (:=), used to denote
assignment expressions introduced in Python 3.8. With assignment
expression, you can do something like:

if someVariable := someCondition:

.



As opposed to:

someVariable = something

if someVariable == someCondition:

.



Project Walrus actually began shortly after NVDA 2019.3 was released -
as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were
released.
Due to control label issues in newer wxPython 4.0.x releases, I
decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control label
issues.
Along
the way, some tweaks were made to not only run NVDA under Python 3.8,
but also gain the ability to build it under Python 3.8 as well. In
fact, with tweaks and dependency updates, you can build NVDA under Python
3.9.



The overall goal of Project Walrus is to port NVDA to run well under
Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks
to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1)
include:

* Assignment expressions (walrus operator)
* Directly using gettext.pgettext to specify context for translatable
strings, replacing a built-in function workaround in current NVDA
releases.
* Os.add_dll_directory to securely load DLL's from known locations
(the function in question is built into Windows 8; Windows 7 SP1 users
must install a KB update to use NVDA from now on, but most
installations should have this installed).
* Actionable toast messages (more so on Windows 10). Among many
things, this will simplify NVDA update notifications.
* Updated wxWidgets localizations for many languages.



Why not Python 3.9? Python 3.9 does not support Windows 7 (you can't
install Python 3.9 on Windows 7) as Microsoft ended extended support
for Windows 7 in January 2020. Although paid support is available for
enterprises until early 2023, Python Software Foundation follows
official support timeline from Microsoft, therefore Python 3.9
(October 2020) does not support Windows 7. Another reason is user base
- according to NV Access, 17 percent of NVDA installations checking
for updates report running on Windows 7. Besides, Python 3.8 will
receive bug fixes until sometime in 2021, so we have time before
moving onto Python 3.9, or when ready, Python 3.10 in 2022.



To demonstrate Project Walrus, two prototype builds will be released
in a few hours (hosted on my personal website):

* A Python 3.7 version with wxPython 4.1.1 applied
* Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will
be detailed once released.



Thanks, and please stay safe and healthy.

Cheers,

Joseph









Bill Dengler
 

Please send the list your Python 3.9 test build.
Windows 7 is end-of-life.
Bill

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Tuesday, 29 December 2020 12:38
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Hello everyone,
Update: Python 3.9 version of NVDA will not run on Windows 7, at least my
binary version won't; when launched, Windows says, "NVDA Application has
stopped working" with "ucrtbase.dll" as the faulting module, indicating a
runtime problem. I'll provide an update if I find out what happens if I
launch Python 3.9 embeddable package inside Windows 7 (if it doesn't work,
then we are stuck with Python 3.8 if the aim is to support Windows 7 users
for a while longer; if not, Python 3.9 is recommended).
Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Brian's Mail
list account via groups.io
Sent: Monday, December 28, 2020 3:26 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

I disagree since the main thrust of nvda at the current time is for those
with older devices. In poorer countries it can be hard to get windows 10
machines. I only use Windows 7 due to the need for me to run software that
windows 10 trashes every update. This is important to me, and I'd hat to
lose the compatibility.

Brian

bglists@blueyonder.co.uk
Sent via blueyonder.
Please address personal E-mail to:-
briang1@blueyonder.co.uk, putting 'Brian Gaff'
in the display name field.
Newsgroup monitored: alt.comp.blind-users
----- Original Message -----
From: "Andy B." <sonfire11@gmail.com>
To: <nvda-devel@groups.io>
Sent: Sunday, December 27, 2020 12:32 PM
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1


I would like to see NVDA keep up with the current releases of Python
and WX.
As Bill said, users on older operating systems don't usually care
about the newest of things. On the other hand, those who care about
the newest of things might want to use newer language features in 3.9.
The Linux world has been on Python 3.9 for a while now. Linux isn't
better than Windows, and I am not here to start a war. However, what
does it say about NVDA when Orca is already able to make use of Python
3.9. In fact, Orca screen reader gives it's users a choice on what
Python version we want to use. The only thing the documentation states
is that we have to use at least Python 3.75, and no later than 3.9.
If NVDA could give us that choice, things might have a better outcome
than always lagging behind a version of dependencies.





From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill
Dengler
Sent: Sunday, December 27, 2020 4:44 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8 and wxPython 4.1.1



Personally, I'd like to see us move to 3.9 (dependency compatibility
not
withstanding) as soon as possible.

Windows 7 is end of life
<https://support.microsoft.com/en-us/windows/windows-7-support-ended-o
n-janu
ary-14-2020-b75d4580-2cc7-895a-2c9c-1466d9a53962#:~:text=The%20specifi
c%20en d%20of%20support,longer%20available%20for%20the%20product.> ,
and the performance improvements and new language features in 3.9
shouldn't hold back users of current software. As 2021.1 will be an
API-breaking release, deprecating very old operating system versions
seems in line with removing old app modules and making
API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely.
Users on an unsupported OS don't tend to be that interested in the
latest and greatest.

Thanks,

Bill

From: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
<nvda-devel@groups.io <mailto:nvda-devel@groups.io> > On Behalf Of
Joseph Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8
and wxPython 4.1.1



Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of
NV Access.

More than a year ago, you may recall NV Access announcing Project
Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA
2019.3 in early 2020.
Well, the progress continues with Project Walrus, an (active) effort
to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in
hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA
fork may have noticed a branch called "walrus", and that's what that
branch is about.

Project Walrus comes from "walrus" operator (:=), used to denote
assignment expressions introduced in Python 3.8. With assignment
expression, you can do something like:

if someVariable := someCondition:

.



As opposed to:

someVariable = something

if someVariable == someCondition:

.



Project Walrus actually began shortly after NVDA 2019.3 was released -
as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were
released.
Due to control label issues in newer wxPython 4.0.x releases, I
decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control label
issues.
Along
the way, some tweaks were made to not only run NVDA under Python 3.8,
but also gain the ability to build it under Python 3.8 as well. In
fact, with tweaks and dependency updates, you can build NVDA under Python
3.9.



The overall goal of Project Walrus is to port NVDA to run well under
Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks
to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1)
include:

* Assignment expressions (walrus operator)
* Directly using gettext.pgettext to specify context for translatable
strings, replacing a built-in function workaround in current NVDA
releases.
* Os.add_dll_directory to securely load DLL's from known locations
(the function in question is built into Windows 8; Windows 7 SP1 users
must install a KB update to use NVDA from now on, but most
installations should have this installed).
* Actionable toast messages (more so on Windows 10). Among many
things, this will simplify NVDA update notifications.
* Updated wxWidgets localizations for many languages.



Why not Python 3.9? Python 3.9 does not support Windows 7 (you can't
install Python 3.9 on Windows 7) as Microsoft ended extended support
for Windows 7 in January 2020. Although paid support is available for
enterprises until early 2023, Python Software Foundation follows
official support timeline from Microsoft, therefore Python 3.9
(October 2020) does not support Windows 7. Another reason is user base
- according to NV Access, 17 percent of NVDA installations checking
for updates report running on Windows 7. Besides, Python 3.8 will
receive bug fixes until sometime in 2021, so we have time before
moving onto Python 3.9, or when ready, Python 3.10 in 2022.



To demonstrate Project Walrus, two prototype builds will be released
in a few hours (hosted on my personal website):

* A Python 3.7 version with wxPython 4.1.1 applied
* Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will
be detailed once released.



Thanks, and please stay safe and healthy.

Cheers,

Joseph









 

Hi,
Windows 7 is end of life as far as consumers are concerned, but not quite
yet for businesses. I would imagine another WannaCry type problem will force
them to upgrade to Windows 10.
I'm looking into refining Python 3.9 build, and based on tests done with
embeddable Python 3.9 archive (essentially a portable version of Python
3.9), there is a missing system DLL that will prevent Python 3.9 from
running on Windows 7. Based on the sentiment I'm hearing, my recommendation
is that it would be better to adopt Python 3.9 with Windows 7/Server 2008 R2
users told to upgrade to Windows 10 or stay with 2020.4. In the meantime,
I'll provide a link to download Python 3.9 prototype (same issues as Python
3.8 prototype such as inability to use BRLTTY due to missing C extension).
Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill Dengler
Sent: Tuesday, December 29, 2020 10:15 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Please send the list your Python 3.9 test build.
Windows 7 is end-of-life.
Bill

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Tuesday, 29 December 2020 12:38
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Hello everyone,
Update: Python 3.9 version of NVDA will not run on Windows 7, at least my
binary version won't; when launched, Windows says, "NVDA Application has
stopped working" with "ucrtbase.dll" as the faulting module, indicating a
runtime problem. I'll provide an update if I find out what happens if I
launch Python 3.9 embeddable package inside Windows 7 (if it doesn't work,
then we are stuck with Python 3.8 if the aim is to support Windows 7 users
for a while longer; if not, Python 3.9 is recommended).
Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Brian's Mail
list account via groups.io
Sent: Monday, December 28, 2020 3:26 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

I disagree since the main thrust of nvda at the current time is for those
with older devices. In poorer countries it can be hard to get windows 10
machines. I only use Windows 7 due to the need for me to run software that
windows 10 trashes every update. This is important to me, and I'd hat to
lose the compatibility.

Brian

bglists@blueyonder.co.uk
Sent via blueyonder.
Please address personal E-mail to:-
briang1@blueyonder.co.uk, putting 'Brian Gaff'
in the display name field.
Newsgroup monitored: alt.comp.blind-users
----- Original Message -----
From: "Andy B." <sonfire11@gmail.com>
To: <nvda-devel@groups.io>
Sent: Sunday, December 27, 2020 12:32 PM
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1


I would like to see NVDA keep up with the current releases of Python
and WX.
As Bill said, users on older operating systems don't usually care
about the newest of things. On the other hand, those who care about
the newest of things might want to use newer language features in 3.9.
The Linux world has been on Python 3.9 for a while now. Linux isn't
better than Windows, and I am not here to start a war. However, what
does it say about NVDA when Orca is already able to make use of Python
3.9. In fact, Orca screen reader gives it's users a choice on what
Python version we want to use. The only thing the documentation states
is that we have to use at least Python 3.75, and no later than 3.9.
If NVDA could give us that choice, things might have a better outcome
than always lagging behind a version of dependencies.





From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill
Dengler
Sent: Sunday, December 27, 2020 4:44 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8 and wxPython 4.1.1



Personally, I'd like to see us move to 3.9 (dependency compatibility
not
withstanding) as soon as possible.

Windows 7 is end of life
<https://support.microsoft.com/en-us/windows/windows-7-support-ended-o
n-janu
ary-14-2020-b75d4580-2cc7-895a-2c9c-1466d9a53962#:~:text=The%20specifi
c%20en d%20of%20support,longer%20available%20for%20the%20product.> ,
and the performance improvements and new language features in 3.9
shouldn't hold back users of current software. As 2021.1 will be an
API-breaking release, deprecating very old operating system versions
seems in line with removing old app modules and making
API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely.
Users on an unsupported OS don't tend to be that interested in the
latest and greatest.

Thanks,

Bill

From: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
<nvda-devel@groups.io <mailto:nvda-devel@groups.io> > On Behalf Of
Joseph Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8
and wxPython 4.1.1



Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of
NV Access.

More than a year ago, you may recall NV Access announcing Project
Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA
2019.3 in early 2020.
Well, the progress continues with Project Walrus, an (active) effort
to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in
hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA
fork may have noticed a branch called "walrus", and that's what that
branch is about.

Project Walrus comes from "walrus" operator (:=), used to denote
assignment expressions introduced in Python 3.8. With assignment
expression, you can do something like:

if someVariable := someCondition:

.



As opposed to:

someVariable = something

if someVariable == someCondition:

.



Project Walrus actually began shortly after NVDA 2019.3 was released -
as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were
released.
Due to control label issues in newer wxPython 4.0.x releases, I
decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control
label
issues.
Along
the way, some tweaks were made to not only run NVDA under Python 3.8,
but also gain the ability to build it under Python 3.8 as well. In
fact, with tweaks and dependency updates, you can build NVDA under
Python
3.9.



The overall goal of Project Walrus is to port NVDA to run well under
Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks
to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1)
include:

* Assignment expressions (walrus operator)
* Directly using gettext.pgettext to specify context for translatable
strings, replacing a built-in function workaround in current NVDA
releases.
* Os.add_dll_directory to securely load DLL's from known locations
(the function in question is built into Windows 8; Windows 7 SP1 users
must install a KB update to use NVDA from now on, but most
installations should have this installed).
* Actionable toast messages (more so on Windows 10). Among many
things, this will simplify NVDA update notifications.
* Updated wxWidgets localizations for many languages.



Why not Python 3.9? Python 3.9 does not support Windows 7 (you can't
install Python 3.9 on Windows 7) as Microsoft ended extended support
for Windows 7 in January 2020. Although paid support is available for
enterprises until early 2023, Python Software Foundation follows
official support timeline from Microsoft, therefore Python 3.9
(October 2020) does not support Windows 7. Another reason is user base
- according to NV Access, 17 percent of NVDA installations checking
for updates report running on Windows 7. Besides, Python 3.8 will
receive bug fixes until sometime in 2021, so we have time before
moving onto Python 3.9, or when ready, Python 3.10 in 2022.



To demonstrate Project Walrus, two prototype builds will be released
in a few hours (hosted on my personal website):

* A Python 3.7 version with wxPython 4.1.1 applied
* Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will
be detailed once released.



Thanks, and please stay safe and healthy.

Cheers,

Joseph









 

Hi,
Here it is, Python 3.9 prototype:
https://josephsl.net/files/nvdabuilds/nvda_snapshot_wxPython411-20201229py39
.exe

Things to note:
* Just like Python 3.8 prototype, no BRLTTY support yet due to missing C
extension.
* You cannot run this prototype on Windows 7.

Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
via groups.io
Sent: Tuesday, December 29, 2020 10:43 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Hi,
Windows 7 is end of life as far as consumers are concerned, but not quite
yet for businesses. I would imagine another WannaCry type problem will force
them to upgrade to Windows 10.
I'm looking into refining Python 3.9 build, and based on tests done with
embeddable Python 3.9 archive (essentially a portable version of Python
3.9), there is a missing system DLL that will prevent Python 3.9 from
running on Windows 7. Based on the sentiment I'm hearing, my recommendation
is that it would be better to adopt Python 3.9 with Windows 7/Server 2008 R2
users told to upgrade to Windows 10 or stay with 2020.4. In the meantime,
I'll provide a link to download Python 3.9 prototype (same issues as Python
3.8 prototype such as inability to use BRLTTY due to missing C extension).
Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill Dengler
Sent: Tuesday, December 29, 2020 10:15 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Please send the list your Python 3.9 test build.
Windows 7 is end-of-life.
Bill

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Tuesday, 29 December 2020 12:38
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Hello everyone,
Update: Python 3.9 version of NVDA will not run on Windows 7, at least my
binary version won't; when launched, Windows says, "NVDA Application has
stopped working" with "ucrtbase.dll" as the faulting module, indicating a
runtime problem. I'll provide an update if I find out what happens if I
launch Python 3.9 embeddable package inside Windows 7 (if it doesn't work,
then we are stuck with Python 3.8 if the aim is to support Windows 7 users
for a while longer; if not, Python 3.9 is recommended).
Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Brian's Mail
list account via groups.io
Sent: Monday, December 28, 2020 3:26 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

I disagree since the main thrust of nvda at the current time is for those
with older devices. In poorer countries it can be hard to get windows 10
machines. I only use Windows 7 due to the need for me to run software that
windows 10 trashes every update. This is important to me, and I'd hat to
lose the compatibility.

Brian

bglists@blueyonder.co.uk
Sent via blueyonder.
Please address personal E-mail to:-
briang1@blueyonder.co.uk, putting 'Brian Gaff'
in the display name field.
Newsgroup monitored: alt.comp.blind-users
----- Original Message -----
From: "Andy B." <sonfire11@gmail.com>
To: <nvda-devel@groups.io>
Sent: Sunday, December 27, 2020 12:32 PM
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1


I would like to see NVDA keep up with the current releases of Python
and WX.
As Bill said, users on older operating systems don't usually care
about the newest of things. On the other hand, those who care about
the newest of things might want to use newer language features in 3.9.
The Linux world has been on Python 3.9 for a while now. Linux isn't
better than Windows, and I am not here to start a war. However, what
does it say about NVDA when Orca is already able to make use of Python
3.9. In fact, Orca screen reader gives it's users a choice on what
Python version we want to use. The only thing the documentation states
is that we have to use at least Python 3.75, and no later than 3.9.
If NVDA could give us that choice, things might have a better outcome
than always lagging behind a version of dependencies.





From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill
Dengler
Sent: Sunday, December 27, 2020 4:44 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8 and wxPython 4.1.1



Personally, I'd like to see us move to 3.9 (dependency compatibility
not
withstanding) as soon as possible.

Windows 7 is end of life
<https://support.microsoft.com/en-us/windows/windows-7-support-ended-o
n-janu
ary-14-2020-b75d4580-2cc7-895a-2c9c-1466d9a53962#:~:text=The%20specifi
c%20en d%20of%20support,longer%20available%20for%20the%20product.> ,
and the performance improvements and new language features in 3.9
shouldn't hold back users of current software. As 2021.1 will be an
API-breaking release, deprecating very old operating system versions
seems in line with removing old app modules and making
API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely.
Users on an unsupported OS don't tend to be that interested in the
latest and greatest.

Thanks,

Bill

From: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
<nvda-devel@groups.io <mailto:nvda-devel@groups.io> > On Behalf Of
Joseph Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8
and wxPython 4.1.1



Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of
NV Access.

More than a year ago, you may recall NV Access announcing Project
Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA
2019.3 in early 2020.
Well, the progress continues with Project Walrus, an (active) effort
to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in
hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA
fork may have noticed a branch called "walrus", and that's what that
branch is about.

Project Walrus comes from "walrus" operator (:=), used to denote
assignment expressions introduced in Python 3.8. With assignment
expression, you can do something like:

if someVariable := someCondition:

.



As opposed to:

someVariable = something

if someVariable == someCondition:

.



Project Walrus actually began shortly after NVDA 2019.3 was released -
as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were
released.
Due to control label issues in newer wxPython 4.0.x releases, I
decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control
label
issues.
Along
the way, some tweaks were made to not only run NVDA under Python 3.8,
but also gain the ability to build it under Python 3.8 as well. In
fact, with tweaks and dependency updates, you can build NVDA under
Python
3.9.



The overall goal of Project Walrus is to port NVDA to run well under
Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks
to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1)
include:

* Assignment expressions (walrus operator)
* Directly using gettext.pgettext to specify context for translatable
strings, replacing a built-in function workaround in current NVDA
releases.
* Os.add_dll_directory to securely load DLL's from known locations
(the function in question is built into Windows 8; Windows 7 SP1 users
must install a KB update to use NVDA from now on, but most
installations should have this installed).
* Actionable toast messages (more so on Windows 10). Among many
things, this will simplify NVDA update notifications.
* Updated wxWidgets localizations for many languages.



Why not Python 3.9? Python 3.9 does not support Windows 7 (you can't
install Python 3.9 on Windows 7) as Microsoft ended extended support
for Windows 7 in January 2020. Although paid support is available for
enterprises until early 2023, Python Software Foundation follows
official support timeline from Microsoft, therefore Python 3.9
(October 2020) does not support Windows 7. Another reason is user base
- according to NV Access, 17 percent of NVDA installations checking
for updates report running on Windows 7. Besides, Python 3.8 will
receive bug fixes until sometime in 2021, so we have time before
moving onto Python 3.9, or when ready, Python 3.10 in 2022.



To demonstrate Project Walrus, two prototype builds will be released
in a few hours (hosted on my personal website):

* A Python 3.7 version with wxPython 4.1.1 applied
* Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will
be detailed once released.



Thanks, and please stay safe and healthy.

Cheers,

Joseph









Bill Dengler
 

Any chance of getting a signed (i.e. with UIAccess) build of this?
Would like to run and test with this for a while.
Thanks,
Bill

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Tuesday, 29 December 2020 13:58
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Hi,
Here it is, Python 3.9 prototype:
https://josephsl.net/files/nvdabuilds/nvda_snapshot_wxPython411-20201229py39
.exe

Things to note:
* Just like Python 3.8 prototype, no BRLTTY support yet due to missing C
extension.
* You cannot run this prototype on Windows 7.

Cheers,
Joseph


-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
via groups.io
Sent: Tuesday, December 29, 2020 10:43 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Hi,
Windows 7 is end of life as far as consumers are concerned, but not quite
yet for businesses. I would imagine another WannaCry type problem will force
them to upgrade to Windows 10.
I'm looking into refining Python 3.9 build, and based on tests done with
embeddable Python 3.9 archive (essentially a portable version of Python
3.9), there is a missing system DLL that will prevent Python 3.9 from
running on Windows 7. Based on the sentiment I'm hearing, my recommendation
is that it would be better to adopt Python 3.9 with Windows 7/Server 2008 R2
users told to upgrade to Windows 10 or stay with 2020.4. In the meantime,
I'll provide a link to download Python 3.9 prototype (same issues as Python
3.8 prototype such as inability to use BRLTTY due to missing C extension).
Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill Dengler
Sent: Tuesday, December 29, 2020 10:15 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Please send the list your Python 3.9 test build.
Windows 7 is end-of-life.
Bill

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Tuesday, 29 December 2020 12:38
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Hello everyone,
Update: Python 3.9 version of NVDA will not run on Windows 7, at least my
binary version won't; when launched, Windows says, "NVDA Application has
stopped working" with "ucrtbase.dll" as the faulting module, indicating a
runtime problem. I'll provide an update if I find out what happens if I
launch Python 3.9 embeddable package inside Windows 7 (if it doesn't work,
then we are stuck with Python 3.8 if the aim is to support Windows 7 users
for a while longer; if not, Python 3.9 is recommended).
Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Brian's Mail
list account via groups.io
Sent: Monday, December 28, 2020 3:26 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

I disagree since the main thrust of nvda at the current time is for those
with older devices. In poorer countries it can be hard to get windows 10
machines. I only use Windows 7 due to the need for me to run software that
windows 10 trashes every update. This is important to me, and I'd hat to
lose the compatibility.

Brian

bglists@blueyonder.co.uk
Sent via blueyonder.
Please address personal E-mail to:-
briang1@blueyonder.co.uk, putting 'Brian Gaff'
in the display name field.
Newsgroup monitored: alt.comp.blind-users
----- Original Message -----
From: "Andy B." <sonfire11@gmail.com>
To: <nvda-devel@groups.io>
Sent: Sunday, December 27, 2020 12:32 PM
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1


I would like to see NVDA keep up with the current releases of Python
and WX.
As Bill said, users on older operating systems don't usually care
about the newest of things. On the other hand, those who care about
the newest of things might want to use newer language features in 3.9.
The Linux world has been on Python 3.9 for a while now. Linux isn't
better than Windows, and I am not here to start a war. However, what
does it say about NVDA when Orca is already able to make use of Python
3.9. In fact, Orca screen reader gives it's users a choice on what
Python version we want to use. The only thing the documentation states
is that we have to use at least Python 3.75, and no later than 3.9.
If NVDA could give us that choice, things might have a better outcome
than always lagging behind a version of dependencies.





From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill
Dengler
Sent: Sunday, December 27, 2020 4:44 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8 and wxPython 4.1.1



Personally, I'd like to see us move to 3.9 (dependency compatibility
not
withstanding) as soon as possible.

Windows 7 is end of life
<https://support.microsoft.com/en-us/windows/windows-7-support-ended-o
n-janu
ary-14-2020-b75d4580-2cc7-895a-2c9c-1466d9a53962#:~:text=The%20specifi
c%20en d%20of%20support,longer%20available%20for%20the%20product.> ,
and the performance improvements and new language features in 3.9
shouldn't hold back users of current software. As 2021.1 will be an
API-breaking release, deprecating very old operating system versions
seems in line with removing old app modules and making
API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely.
Users on an unsupported OS don't tend to be that interested in the
latest and greatest.

Thanks,

Bill

From: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
<nvda-devel@groups.io <mailto:nvda-devel@groups.io> > On Behalf Of
Joseph Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8
and wxPython 4.1.1



Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of
NV Access.

More than a year ago, you may recall NV Access announcing Project
Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA
2019.3 in early 2020.
Well, the progress continues with Project Walrus, an (active) effort
to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in
hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA
fork may have noticed a branch called "walrus", and that's what that
branch is about.

Project Walrus comes from "walrus" operator (:=), used to denote
assignment expressions introduced in Python 3.8. With assignment
expression, you can do something like:

if someVariable := someCondition:

.



As opposed to:

someVariable = something

if someVariable == someCondition:

.



Project Walrus actually began shortly after NVDA 2019.3 was released -
as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were
released.
Due to control label issues in newer wxPython 4.0.x releases, I
decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control
label
issues.
Along
the way, some tweaks were made to not only run NVDA under Python 3.8,
but also gain the ability to build it under Python 3.8 as well. In
fact, with tweaks and dependency updates, you can build NVDA under
Python
3.9.



The overall goal of Project Walrus is to port NVDA to run well under
Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks
to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1)
include:

* Assignment expressions (walrus operator)
* Directly using gettext.pgettext to specify context for translatable
strings, replacing a built-in function workaround in current NVDA
releases.
* Os.add_dll_directory to securely load DLL's from known locations
(the function in question is built into Windows 8; Windows 7 SP1 users
must install a KB update to use NVDA from now on, but most
installations should have this installed).
* Actionable toast messages (more so on Windows 10). Among many
things, this will simplify NVDA update notifications.
* Updated wxWidgets localizations for many languages.



Why not Python 3.9? Python 3.9 does not support Windows 7 (you can't
install Python 3.9 on Windows 7) as Microsoft ended extended support
for Windows 7 in January 2020. Although paid support is available for
enterprises until early 2023, Python Software Foundation follows
official support timeline from Microsoft, therefore Python 3.9
(October 2020) does not support Windows 7. Another reason is user base
- according to NV Access, 17 percent of NVDA installations checking
for updates report running on Windows 7. Besides, Python 3.8 will
receive bug fixes until sometime in 2021, so we have time before
moving onto Python 3.9, or when ready, Python 3.10 in 2022.



To demonstrate Project Walrus, two prototype builds will be released
in a few hours (hosted on my personal website):

* A Python 3.7 version with wxPython 4.1.1 applied
* Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will
be detailed once released.



Thanks, and please stay safe and healthy.

Cheers,

Joseph









 

Hi,
The best way to do this is using a try branch, which will involve committing
changes to SConstruct and dependencies. This might be more robust than using
my own certificate, which may or may not be recognized on other systems, and
I can't use NV Access's certificate as I don't know their cert password. For
this reason, I advise not using it with UI Access privilege, as this build
is really meant as a proof of concept and a prototype of what's to come in
Python 3.9 version, as such, it isn't really suitable for live testing yet.
You can of course sort of "emulate" UI Access privilege by running it with
admin rights, which is risky.
Note that Walrus branch is optimized for Python 3.8 at the moment, but
tweaks can be made to build NVDA under Python 3.9. I intentionally left
submodules as is because we don't know which versions of some submodules we
will be using in the end (things can change rapidly). Also, some tweaks I
have made in Walrus branch applies to Python 3.7 as well, therefore general
tweaks target NVDA master branch and thus are not really committed to Walrus
branch yet (the most notable case, which Lukasz reviewed, is passing in NULL
(None) string to speak.dll::espeak_Info function, which is required to run
NVDA under Python 3.8 and later; thankfully this change works in Python 3.7,
hence my intention behind the pull request submitted not long ago).
Ideally the testing stage will be (based on Threshold experience):
1. Python 3.8/3.9 must be decided soon.
2. Dependencies must be satisfied. Currently the most notable dependency we
can't use now is BRLAPI - for that matter, any dependency that ships with C
extensions (such as wxPython) will require that we use a version that is
matched to the Python version we will be using. This is why we can't simply
use wxPython 4.0.3 on Python 3.8 precisely because there is no Python 3.8 C
extension for it.
3. Parts of NVDA source code, notably when it comes to importing DLL's, must
be scrutinized to make sure we don't run a foul of secure DLL loading
mechanism (os.add_dll_directory, introduced in Python 3.8). Notably, this
affects liblouis.dll, and a commit to fix this must be included at the same
time we move to 3.8/3.9.
4. SConstruct must be modified to build NVDA under Python 3.8/3.9, and a
check for Python 3.7.6 must be removed.
5. Only after dependencies are satisfied and a local build is possible
should Appveyor bot be told to use newer Python version. Ideally folks would
have tested local builds (with or without UI Access privilege) by then.
6. Just like Threshold, extensive outreach to add-ons community must be
done. Unlike Threshold, it won't take long for add-on authors to update
their add-ons - notably, any ad-on that uses libraries with C extensions
must be edited to use newer dependencies (my add-ons are all ready for
Python 3.9, actually, so mine are good to go).
Don't forget about beta testing, too. The above procedure must be followed
annually from now on as Python releases will be done every October unless
Python Steering Council (a group of core Python committers who will decide
the direction of Python language) says otherwise in the future. In other
words, you must think about the next version of Python not in December, but
as early as September when the release candidate for the next Python release
is being tested, with most dependencies satisfied no later than end of the
year. For example, for Python 3.10 (October 2021):
1. Keep an eye on Python 3.10 development for a while.
2. If you want, test 3.10 when beta 1 ships (next year).
3. Start looking for dependencies once Python 3.10 release candidate is
around the corner.
4. Prepare NVDA source code to support Python 3.10 starting no later than a
month after 3.10 is released (so around November). This assumes most major
dependencies are satisfied i.e. Python 3.10 wheels for dependencies are
registered with PyPI and other places.
5. At the same time, document things to be done via GitHub just like we are
doing for Python 3.8/3.9. In addition, prepare a branch to store Python 3.10
changes.
6. Around this time next year, create a prototype of Python 3.10 version of
NVDA - a prototype that actually builds locally.
7. When justifying upgrading to Python 3.10, be sure to take the following
factors into account: support lifecycle for the next Python release,
compatibility with older Windows releases (in case of Windows 10, older
feature updates), add-ons and features add-on authors can take advantage of,
and user experience, especially regressions.
At some point after the New Year, I will do my best to document the above
procedure in an NVDA wiki document to preserve memory.
Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill Dengler
Sent: Tuesday, December 29, 2020 11:24 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Any chance of getting a signed (i.e. with UIAccess) build of this?
Would like to run and test with this for a while.
Thanks,
Bill

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Tuesday, 29 December 2020 13:58
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Hi,
Here it is, Python 3.9 prototype:
https://josephsl.net/files/nvdabuilds/nvda_snapshot_wxPython411-20201229py39
.exe

Things to note:
* Just like Python 3.8 prototype, no BRLTTY support yet due to missing C
extension.
* You cannot run this prototype on Windows 7.

Cheers,
Joseph


-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
via groups.io
Sent: Tuesday, December 29, 2020 10:43 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Hi,
Windows 7 is end of life as far as consumers are concerned, but not quite
yet for businesses. I would imagine another WannaCry type problem will force
them to upgrade to Windows 10.
I'm looking into refining Python 3.9 build, and based on tests done with
embeddable Python 3.9 archive (essentially a portable version of Python
3.9), there is a missing system DLL that will prevent Python 3.9 from
running on Windows 7. Based on the sentiment I'm hearing, my recommendation
is that it would be better to adopt Python 3.9 with Windows 7/Server 2008 R2
users told to upgrade to Windows 10 or stay with 2020.4. In the meantime,
I'll provide a link to download Python 3.9 prototype (same issues as Python
3.8 prototype such as inability to use BRLTTY due to missing C extension).
Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill Dengler
Sent: Tuesday, December 29, 2020 10:15 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Please send the list your Python 3.9 test build.
Windows 7 is end-of-life.
Bill

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Joseph Lee
Sent: Tuesday, 29 December 2020 12:38
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

Hello everyone,
Update: Python 3.9 version of NVDA will not run on Windows 7, at least my
binary version won't; when launched, Windows says, "NVDA Application has
stopped working" with "ucrtbase.dll" as the faulting module, indicating a
runtime problem. I'll provide an update if I find out what happens if I
launch Python 3.9 embeddable package inside Windows 7 (if it doesn't work,
then we are stuck with Python 3.8 if the aim is to support Windows 7 users
for a while longer; if not, Python 3.9 is recommended).
Cheers,
Joseph

-----Original Message-----
From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Brian's Mail
list account via groups.io
Sent: Monday, December 28, 2020 3:26 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1

I disagree since the main thrust of nvda at the current time is for those
with older devices. In poorer countries it can be hard to get windows 10
machines. I only use Windows 7 due to the need for me to run software that
windows 10 trashes every update. This is important to me, and I'd hat to
lose the compatibility.

Brian

bglists@blueyonder.co.uk
Sent via blueyonder.
Please address personal E-mail to:-
briang1@blueyonder.co.uk, putting 'Brian Gaff'
in the display name field.
Newsgroup monitored: alt.comp.blind-users
----- Original Message -----
From: "Andy B." <sonfire11@gmail.com>
To: <nvda-devel@groups.io>
Sent: Sunday, December 27, 2020 12:32 PM
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to Python
3.8 and wxPython 4.1.1


I would like to see NVDA keep up with the current releases of Python
and WX.
As Bill said, users on older operating systems don't usually care
about the newest of things. On the other hand, those who care about
the newest of things might want to use newer language features in 3.9.
The Linux world has been on Python 3.9 for a while now. Linux isn't
better than Windows, and I am not here to start a war. However, what
does it say about NVDA when Orca is already able to make use of Python
3.9. In fact, Orca screen reader gives it's users a choice on what
Python version we want to use. The only thing the documentation states
is that we have to use at least Python 3.75, and no later than 3.9.
If NVDA could give us that choice, things might have a better outcome
than always lagging behind a version of dependencies.





From: nvda-devel@groups.io <nvda-devel@groups.io> On Behalf Of Bill
Dengler
Sent: Sunday, December 27, 2020 4:44 AM
To: nvda-devel@groups.io
Subject: Re: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8 and wxPython 4.1.1



Personally, I'd like to see us move to 3.9 (dependency compatibility
not
withstanding) as soon as possible.

Windows 7 is end of life
<https://support.microsoft.com/en-us/windows/windows-7-support-ended-o
n-janu
ary-14-2020-b75d4580-2cc7-895a-2c9c-1466d9a53962#:~:text=The%20specifi
c%20en d%20of%20support,longer%20available%20for%20the%20product.> ,
and the performance improvements and new language features in 3.9
shouldn't hold back users of current software. As 2021.1 will be an
API-breaking release, deprecating very old operating system versions
seems in line with removing old app modules and making
API-incompatible changes.

Similar to XP users, Windows 7 users could run 2020.4 indefinitely.
Users on an unsupported OS don't tend to be that interested in the
latest and greatest.

Thanks,

Bill

From: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
<nvda-devel@groups.io <mailto:nvda-devel@groups.io> > On Behalf Of
Joseph Lee
Sent: Sunday, 27 December 2020 00:11
To: nvda-devel@groups.io <mailto:nvda-devel@groups.io>
Subject: [nvda-devel] Announcing Project Walrus: porting NVDA to
Python
3.8
and wxPython 4.1.1



Hello NVDA development people,

IMPORTANT: the project described in this thread is mine, not part of
NV Access.

More than a year ago, you may recall NV Access announcing Project
Threshold to move NVDA from Python 2.7 to 3.7, resulting in NVDA
2019.3 in early 2020.
Well, the progress continues with Project Walrus, an (active) effort
to port NVDA to Python 3.8 and add wxPython 4.1.1 compatibility in
hopes of showcasing it in upcoming NVDA 2021.1. Folks watching my NVDA
fork may have noticed a branch called "walrus", and that's what that
branch is about.

Project Walrus comes from "walrus" operator (:=), used to denote
assignment expressions introduced in Python 3.8. With assignment
expression, you can do something like:

if someVariable := someCondition:

.



As opposed to:

someVariable = something

if someVariable == someCondition:

.



Project Walrus actually began shortly after NVDA 2019.3 was released -
as soon as Python 3.8 version of wxPython 4.1.x alpha snapshots were
released.
Due to control label issues in newer wxPython 4.0.x releases, I
decided to wait until 4.1.0 alpha came out, as 4.1.0 fixes control
label
issues.
Along
the way, some tweaks were made to not only run NVDA under Python 3.8,
but also gain the ability to build it under Python 3.8 as well. In
fact, with tweaks and dependency updates, you can build NVDA under
Python
3.9.



The overall goal of Project Walrus is to port NVDA to run well under
Python 3.8, as well as prepare for wxPython 4.1.1. Key changes thanks
to Project Walrus (specifically, Python 3.8 and wxPython 4.1.1)
include:

* Assignment expressions (walrus operator)
* Directly using gettext.pgettext to specify context for translatable
strings, replacing a built-in function workaround in current NVDA
releases.
* Os.add_dll_directory to securely load DLL's from known locations
(the function in question is built into Windows 8; Windows 7 SP1 users
must install a KB update to use NVDA from now on, but most
installations should have this installed).
* Actionable toast messages (more so on Windows 10). Among many
things, this will simplify NVDA update notifications.
* Updated wxWidgets localizations for many languages.



Why not Python 3.9? Python 3.9 does not support Windows 7 (you can't
install Python 3.9 on Windows 7) as Microsoft ended extended support
for Windows 7 in January 2020. Although paid support is available for
enterprises until early 2023, Python Software Foundation follows
official support timeline from Microsoft, therefore Python 3.9
(October 2020) does not support Windows 7. Another reason is user base
- according to NV Access, 17 percent of NVDA installations checking
for updates report running on Windows 7. Besides, Python 3.8 will
receive bug fixes until sometime in 2021, so we have time before
moving onto Python 3.9, or when ready, Python 3.10 in 2022.



To demonstrate Project Walrus, two prototype builds will be released
in a few hours (hosted on my personal website):

* A Python 3.7 version with wxPython 4.1.1 applied
* Both Python 3.8 and wxPython 4.1.1 applied

Details on these prototypes and what to expect (including bugs) will
be detailed once released.



Thanks, and please stay safe and healthy.

Cheers,

Joseph





































-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#45401): https://groups.io/g/nvda-devel/message/45401
Mute This Topic: https://groups.io/mt/79245625/568
-=-=-
We expect all members on this list to abide by the NVDA Citizen and
Contributor Code of Conduct found at
https://github.com/nvaccess/nvda/blob/master/CODE_OF_CONDUCT.md
We thank you for your cooperation.
-=-=-
Group Owner: nvda-devel+owner@groups.io
Unsubscribe: https://groups.io/g/nvda-devel/leave/defanged
[joseph.lee22590@gmail.com]
-=-=-=-=-=-=-=-=-=-


 

I support your opinion, NVDA is going to leave windows 7 sooner or later.