toggle quoted messageShow quoted text
you mentioned that addons for python3 should use utf8 without bom.
what encoding addons for python2 use now?
On 7/26/19, Joseph Lee <email@example.com> wrote:
Hi NVDA community,
I'm Joseph Lee, a volunteer code contributor for NVDA screen reader project
and the chief investigator for Python 3 work. First, I would like to thank
my colleagues at NV Access and beyond for achieving a milestone in Python 3
work: alpha snapshots (master branch in source code) being powered by
To the matter at hand: NVDA 2019.3 (Threshold, scheduled for later this
year) will feature backwards incompatible changes, including speech
and Python 3. Because of this, many community add-ons (including add-ons
hosted on addons.nvda-project.org) will need to be modified to take
advantage of these changes, especially when it comes to supporting Python
Because Python 2 to 3 transition is a huge undertaking, I expect add-ons
community will take several weeks to months (or longer) to transition vast
majority of add-ons to Python 3, and collaboration is a key to success in
The following is a set of steps members of the community should take:
For add-on authors:
1. Prepare your mindset for Python 3 by reading several porting guides.
The official one can be found at
https://docs.python.org/3/howto/pyporting.html. Another useful one (titled
Conservative Python 3 Porting Guide) can be found at
2. If you haven't done so, please install Python 3.7 so you can
experiment with differences between Python 2 and 3.
3. Once you are comfortable with Python 3, please test your add-on(s)
with latest NVDA alpha snapshots, preferably with build 18195 or later. If
you need to keep using current add-ons or need to compare Python 2 versus
please use a portable copy of NVDA to test your add-ons.
4. Make necessary changes. It is up to you in regards to supporting
older NVDA releases or not; if yes, you must write code compatible with
Python 2 and 3, otherwise please use Python 3.
5. After testing your add-ons, please release a Python 3 version of
your add-on(s) for testing. You can either use development channel or a
separate package. As you do so, please send a notice to the NVDA community
regarding your add-ons and their compatibility with upcoming NVDA release.
6. Please listen to feedback and make changes based on what users are
7. I advise completing Python 3 transition work for add-ons by end of
this year, or by 2019.3 RC if possible. Although it won't be a while before
beta comes out, targeting release candidate ensures changes can be made
based on feedback from beta testers.
8. Keep listening to feedback after NvDA 2019.3 stable is released and
make necessary changes if any.
1. If you are adventurous, please test alpha snapshots as a portable
copy. I don't advise using an install copy for now until your favorite
add-ons are declared compatible.
2. Please send feedback to add-on authors if you find issues with
add-ons. An announcement has been posted on community add-ons website
detailing compatible add-ons, issues with incompatible add-ons, and contact
information for authors. The announcement can be found at
3. When authors announce add-on compatibility notices, please read
those notices and take note of issues.
Frequently asked questions:
Q. Can I make an add-on "compatible" by editing the manifest file?
No. Although it'll give you a sense of "assurance" that your add-on will be
considered "compatible" by NVDA, you will need to obtain a version of an
add-on compatible with Python 3, speech refactor, and other changes.
Q. I need to report issues with add-ons not found on community add-ons
For these (especially speech synthesizer add-ons), you must contact the
authors listed under Add-ons Manager.
Q. I am using an add-on that is declared compatible, yet NVDA won't load
to an error about configobj.
This is caused by manifest file encoding. Add-ons must now use UTF-8
(without BOM). Vocalizer (add-on 2.x) is affected by this bug and possibly
Q. When starting NVDA, I get a runtime error and it becomes silent.
The most likely cause is an add-on that uses a C extension (.pyd) module
that won't work properly on Python 3. Disabling the add-on will allow NVDA
to proceed with startup. For add-ons affected by this, authors must now
compile C extensions with Visual Studio 2017, the compiler used to compile
Q. What about add-ons noted as end of life?
Please contact add-on authors about their plans to support Python 3. One
such add-on is Control Usage Assistant, and I (Joseph Lee) will make an
announcement about it very soon.
Thank you. And with that, let Python 3 porting begin!
were I given all the seven heavens
with all they contain
in order that
I may disobey God
by depriving an ant
from the husk of a grain of barley,
I would not do it.