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
toggle quoted messageShow quoted text
----- 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
|
|
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
toggle quoted messageShow quoted text
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
|
|
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.
toggle quoted messageShow quoted text
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 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
|
|
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.
toggle quoted messageShow quoted text
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
|
|
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.
toggle quoted messageShow quoted text
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.
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
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
toggle quoted messageShow quoted text
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. 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 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
toggle quoted messageShow quoted text
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 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. 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 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
toggle quoted messageShow quoted text
----- 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
toggle quoted messageShow quoted text
----- 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
toggle quoted messageShow quoted text
-----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
|
|
Please send the list your Python 3.9 test build. Windows 7 is end-of-life. Bill
toggle quoted messageShow quoted text
-----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
toggle quoted messageShow quoted text
-----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
|
|
toggle quoted messageShow quoted text
-----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
|
|
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
toggle quoted messageShow quoted text
-----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
toggle quoted messageShow quoted text
-----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/45401Mute 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.mdWe 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.
|
|