Topics

#addonTesting ColumnsReview 3.0-20181127-dev #addontesting

Alberto Buffolino
 

Hi all,
thanks to Joseph, Abdel, James and others within recent discussions about Python 3 and code compatibility, I am happy to announce the return on the scene of ColumnsReview! :D
https://addons.nvda-project.org/addons/columnsReview.en.html
In addition to code refactoring, which introduced profile and new settings panel support, this build includes the empty list announcement feature, that I developed some years ago in a never-released plugin.
I added the add-on as dev in website, and updated packages on server to download.
As usual, tests, suggestions, code contributions and so on are absolutely welcome.
Repository is here:
https://github.com/ABuffEr/columnsReview
Alberto

 

Hi,
Basic review results:

* License and copyright: pass
* Documentation: pass
* User experience: pass
* Security: pass

Comments:
* Import six: this means your add-on will absolutely require NVDA 2018.3, as
earlier versions do not come with that module. One possible workaround is to
use a try/except block and assign the range function to a custom variable
like so:

Try:
from six.moves import range as rangeFunc
except ImportError:
rangeFunc = xrange
except NameError:
rangeFunc = range

This workaround won't require using sys.version.

* Empty list and MRO conflicts: in some cases, other global plugins may
define their own column review implementations, which causes MRO (method
resolution order) issue if announce empty list option is selected. I may
need to do some more investigations.
* Checking class names and instances at the same time: app modules and other
global plugins do and sometimes can add their own opinions about what the
object is (overlay classes). To account for that, I advise checking for
instances of well-known multi-column lists in addition to window class
names. If done right, this will allow this ad-on to handle unexpected lists
such as an object that isn't exposed as a table but in fact an app module
says it is. I don't believe this is for 3.0, but perhaps something you might
want to think about for say, 4.0 and beyond.
* Source code comments: I must say this add-on is an example of good use of
source code comments so people can follow along easily.

If you want, I'd be happy to run this add-on inside Python 3 version of NVDA
and see how it behaves. Apart from that, I recommend a green light (thanks
so much).
Cheers,
Joseph

-----Original Message-----
From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io>
On Behalf Of Alberto Buffolino
Sent: Tuesday, November 27, 2018 1:46 PM
To: nvda-addons@nvda-addons.groups.io
Subject: [nvda-addons] #addonTesting ColumnsReview 3.0-20181127-dev

Hi all,
thanks to Joseph, Abdel, James and others within recent discussions about
Python 3 and code compatibility, I am happy to announce the return on the
scene of ColumnsReview! :D
https://addons.nvda-project.org/addons/columnsReview.en.html
In addition to code refactoring, which introduced profile and new settings
panel support, this build includes the empty list announcement feature, that
I developed some years ago in a never-released plugin.
I added the add-on as dev in website, and updated packages on server to
download.
As usual, tests, suggestions, code contributions and so on are absolutely
welcome.
Repository is here:
https://github.com/ABuffEr/columnsReview
Alberto

Alberto Buffolino
 

Joseph Lee, il 27/11/2018 23.39, ha scritto:
* Import six: this means your add-on will absolutely require NVDA 2018.3,
Alberto:
Hi Joseph,
uh, you're right, I completely forgot that six is present with recent wx... thanks for snippet, I'll incorporate it in next build.
* Empty list and MRO conflicts: in some cases, other global plugins may
define their own column review implementations, which causes MRO (method
resolution order) issue if announce empty list option is selected. I may
need to do some more investigations.
Alberto:
I never tried it, but maybe can clsList.insert(index_of_List_class+1, EmptyList) be a solution? Or will it break everything?
If you want, I'd be happy to run this add-on inside Python 3 version of NVDA
and see how it behaves. Apart from that, I recommend a green light (thanks
so much).
Alberto:
oh, yes, it should be ok (even if for wx I can say only no errors in current master), but test it for more guarantees.
Thanks, also for non-quoted parts :)
Alberto

 

Hi Alberto,
Columns Review fails to run on Python 3 because str.decode method does not
exist as seen from the following:
ERROR - globalPluginHandler.listPlugins (16:17:42.833):
Error importing global plugin columnsReview
Traceback (most recent call last):
File "globalPluginHandler.py", line 23, in listPlugins
plugin = importlib.import_module("globalPlugins.%s" % name,
package="globalPlugins").GlobalPlugin
File
"C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\importlib\__ini
t__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in
_call_with_frames_removed
File
"userConfig\addons\columnsReview\globalPlugins\columnsReview\__init__.py",
line 54, in <module>
confspec = ConfigObj(StringIO(configSpecString.decode()),
list_values=False, encoding="UTF-8")
AttributeError: 'str' object has no attribute 'decode'

There are a host of other errors, most of which have to do with config
module issue in Python 3 version of NVDA.

Thanks.
Cheers,
Joseph

-----Original Message-----
From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io>
On Behalf Of Alberto Buffolino
Sent: Tuesday, November 27, 2018 3:47 PM
To: nvda-addons@nvda-addons.groups.io
Subject: Re: [nvda-addons] #addonTesting ColumnsReview 3.0-20181127-dev

Joseph Lee, il 27/11/2018 23.39, ha scritto:
* Import six: this means your add-on will absolutely require NVDA
2018.3,
Alberto:
Hi Joseph,
uh, you're right, I completely forgot that six is present with recent wx...
thanks for snippet, I'll incorporate it in next build.
* Empty list and MRO conflicts: in some cases, other global plugins
may define their own column review implementations, which causes MRO
(method resolution order) issue if announce empty list option is
selected. I may need to do some more investigations.
Alberto:
I never tried it, but maybe can clsList.insert(index_of_List_class+1,
EmptyList) be a solution? Or will it break everything?
If you want, I'd be happy to run this add-on inside Python 3 version
of NVDA and see how it behaves. Apart from that, I recommend a green
light (thanks so much).
Alberto:
oh, yes, it should be ok (even if for wx I can say only no errors in current
master), but test it for more guarantees.
Thanks, also for non-quoted parts :)
Alberto

Alberto Buffolino
 

Joseph Lee, il 28/11/2018 01.28, ha scritto:
Hi Alberto,
Columns Review fails to run on Python 3 because str.decode method does not
exist as seen from the following:
Alberto:
ah, I modified in that way to avoid reports of 2to3 about StringIO from cStringIO...
What's solution is adopted in config/configSpec.py for Python 3 release? Originally, I have followed code there.
Alberto

 

Hi,
If you don't mind losing support for earlier NVDA release, I advise using
six.moves, or using a try/AttrinbuteError.
Cheers,
Joseph

-----Original Message-----
From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io>
On Behalf Of Alberto Buffolino
Sent: Wednesday, November 28, 2018 2:28 AM
To: nvda-addons@nvda-addons.groups.io
Subject: Re: [nvda-addons] #addonTesting ColumnsReview 3.0-20181127-dev

Joseph Lee, il 28/11/2018 01.28, ha scritto:
Hi Alberto,
Columns Review fails to run on Python 3 because str.decode method does
not exist as seen from the following:
Alberto:
ah, I modified in that way to avoid reports of 2to3 about StringIO from
cStringIO...
What's solution is adopted in config/configSpec.py for Python 3 release?
Originally, I have followed code there.
Alberto

Mohammadreza Rashad
 

Hi dear Alberto,
I'm using NVDA 2018.3.2 on Windows 10 64-bit.
ColumnsReview fails to run on my system. I paste the NVDA log below
for your investigation:
INFO - __main__ (19:32:00.828):
Starting NVDA
INFO - core.main (19:32:01.141):
Config dir: C:\Users\Mohammadreza\AppData\Roaming\nvda
INFO - config.ConfigManager._loadConfig (19:32:01.141):
Loading config: C:\Users\Mohammadreza\AppData\Roaming\nvda\nvda.ini
INFO - core.main (19:32:01.368):
NVDA version 2018.3.2
INFO - core.main (19:32:01.368):
Using Windows version 10.0.17134 workstation
INFO - core.main (19:32:01.368):
Using Python version 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018,
16:22:17) [MSC v.1500 32 bit (Intel)]
INFO - core.main (19:32:01.369):
Using comtypes version 1.1.3
INFO - synthDrivers.espeak.SynthDriver.__init__ (19:32:01.822):
Using eSpeak NG version 1.49.3 dev
INFO - synthDriverHandler.setSynth (19:32:01.905):
Loaded synthDriver espeak
INFO - core.main (19:32:01.905):
Using wx version 4.0.3 msw (phoenix) wxWidgets 3.0.5
INFO - brailleInput.initialize (19:32:01.907):
Braille input initialized
INFO - braille.initialize (19:32:01.911):
Using liblouis version 3.6.0
INFO - braille.BrailleHandler.setDisplayByName (19:32:01.913):
Loaded braille display driver noBraille, current display has 0 cells.
INFO - _UIAHandler.UIAHandler.MTAThreadFunc (19:32:02.102):
UIAutomation: IUIAutomation5
ERROR - globalPluginHandler.listPlugins (19:32:04.104):
Error importing global plugin columnsReview
Traceback (most recent call last):
File "globalPluginHandler.pyo", line 22, in listPlugins
File "C:\Users\Mohammadreza\AppData\Roaming\nvda\addons\columnsReview\globalPlugins\columnsReview\__init__.py",
line 54, in <module>
File "configobj.pyo", line 1219, in __init__
File "configobj.pyo", line 1272, in _load
File "configobj.pyo", line 1407, in _handle_bom
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position
0: ordinal not in range(128)
INFO - external:globalPlugins.brailleExtender.GlobalPlugin.__init__
(19:32:04.270):
BrailleExtender 18.11.22-193104 loaded
INFO - core.main (19:32:05.490):
NVDA initialized
--end of log--

۱۳۹۷-۰۹-۰۷ ۱:۱۶ ‎+۰۳:۳۰ گرینویچ, Alberto Buffolino <a.buffolino@...>:

Hi all,
thanks to Joseph, Abdel, James and others within recent discussions
about Python 3 and code compatibility, I am happy to announce the return
on the scene of ColumnsReview! :D
https://addons.nvda-project.org/addons/columnsReview.en.html
In addition to code refactoring, which introduced profile and new
settings panel support, this build includes the empty list announcement
feature, that I developed some years ago in a never-released plugin.
I added the add-on as dev in website, and updated packages on server to
download.
As usual, tests, suggestions, code contributions and so on are
absolutely welcome.
Repository is here:
https://github.com/ABuffEr/columnsReview
Alberto




--
Best wishes,
Mohammadreza Rashad

 

Hi,
This one is mostly due to byte order mark present in your copy of Column Review settings file.
To Alberto: will it be possible to catch this and reset the settings file to defaults if necessary?
Cheers,
Joseph

-----Original Message-----
From: nvda-addons@nvda-addons.groups.io <nvda-addons@nvda-addons.groups.io> On Behalf Of Mohammadreza Rashad
Sent: Wednesday, November 28, 2018 8:13 AM
To: nvda-addons@nvda-addons.groups.io
Subject: Re: [nvda-addons] #addonTesting ColumnsReview 3.0-20181127-dev

Hi dear Alberto,
I'm using NVDA 2018.3.2 on Windows 10 64-bit.
ColumnsReview fails to run on my system. I paste the NVDA log below for your investigation:
INFO - __main__ (19:32:00.828):
Starting NVDA
INFO - core.main (19:32:01.141):
Config dir: C:\Users\Mohammadreza\AppData\Roaming\nvda
INFO - config.ConfigManager._loadConfig (19:32:01.141):
Loading config: C:\Users\Mohammadreza\AppData\Roaming\nvda\nvda.ini
INFO - core.main (19:32:01.368):
NVDA version 2018.3.2
INFO - core.main (19:32:01.368):
Using Windows version 10.0.17134 workstation INFO - core.main (19:32:01.368):
Using Python version 2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018,
16:22:17) [MSC v.1500 32 bit (Intel)]
INFO - core.main (19:32:01.369):
Using comtypes version 1.1.3
INFO - synthDrivers.espeak.SynthDriver.__init__ (19:32:01.822):
Using eSpeak NG version 1.49.3 dev
INFO - synthDriverHandler.setSynth (19:32:01.905):
Loaded synthDriver espeak
INFO - core.main (19:32:01.905):
Using wx version 4.0.3 msw (phoenix) wxWidgets 3.0.5 INFO - brailleInput.initialize (19:32:01.907):
Braille input initialized
INFO - braille.initialize (19:32:01.911):
Using liblouis version 3.6.0
INFO - braille.BrailleHandler.setDisplayByName (19:32:01.913):
Loaded braille display driver noBraille, current display has 0 cells.
INFO - _UIAHandler.UIAHandler.MTAThreadFunc (19:32:02.102):
UIAutomation: IUIAutomation5
ERROR - globalPluginHandler.listPlugins (19:32:04.104):
Error importing global plugin columnsReview Traceback (most recent call last):
File "globalPluginHandler.pyo", line 22, in listPlugins
File "C:\Users\Mohammadreza\AppData\Roaming\nvda\addons\columnsReview\globalPlugins\columnsReview\__init__.py",
line 54, in <module>
File "configobj.pyo", line 1219, in __init__
File "configobj.pyo", line 1272, in _load
File "configobj.pyo", line 1407, in _handle_bom
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position
0: ordinal not in range(128)
INFO - external:globalPlugins.brailleExtender.GlobalPlugin.__init__
(19:32:04.270):
BrailleExtender 18.11.22-193104 loaded
INFO - core.main (19:32:05.490):
NVDA initialized
--end of log--

۱۳۹۷-۰۹-۰۷ ۱:۱۶ ‎+۰۳:۳۰ گرینویچ, Alberto Buffolino <a.buffolino@...>:
Hi all,
thanks to Joseph, Abdel, James and others within recent discussions
about Python 3 and code compatibility, I am happy to announce the
return on the scene of ColumnsReview! :D
https://addons.nvda-project.org/addons/columnsReview.en.html
In addition to code refactoring, which introduced profile and new
settings panel support, this build includes the empty list
announcement feature, that I developed some years ago in a never-released plugin.
I added the add-on as dev in website, and updated packages on server
to download.
As usual, tests, suggestions, code contributions and so on are
absolutely welcome.
Repository is here:
https://github.com/ABuffEr/columnsReview
Alberto




--
Best wishes,
Mohammadreza Rashad

Alberto Buffolino
 

Joseph Lee, il 28/11/2018 17.23, ha scritto:
This one is mostly due to byte order mark present in your copy of Column Review settings file.
To Alberto: will it be possible to catch this and reset the settings file to defaults if necessary?
Alberto:
Hi Joseph and all,
hmm, settings file should be been removed during installation, I added a task to do it.
For Mohammadreza, please try the new build (20181128), just uploaded on server.
For Joseph: I integrated your snippet about range, restored coding comment I previously removed, and returned back to StringIO as used in configSpec.py from sources (2to3 says it's bad but well, I remain so for the moment).
Alberto

Mohammadreza Rashad
 

Thanks dear Alberto. My problem solved.
Thanks for this interesting add-on.

۱۳۹۷-۰۹-۰۷ ۲۰:۰۹ ‎+۰۳:۳۰ گرینویچ, Alberto Buffolino <a.buffolino@...>:

Joseph Lee, il 28/11/2018 17.23, ha scritto:
This one is mostly due to byte order mark present in your copy of Column
Review settings file.
To Alberto: will it be possible to catch this and reset the settings file
to defaults if necessary?
Alberto:
Hi Joseph and all,
hmm, settings file should be been removed during installation, I added a
task to do it.
For Mohammadreza, please try the new build (20181128), just uploaded on
server.
For Joseph: I integrated your snippet about range, restored coding
comment I previously removed, and returned back to StringIO as used in
configSpec.py from sources (2to3 says it's bad but well, I remain so for
the moment).
Alberto




--
Best wishes,
Mohammadreza Rashad

蔡宗豪 Victor Cai
 

Hi Alberto,
Thank you for this add-on ColumnsReview. I could use it in Windows
Explorer (copy file name).
Could you please give us more tips for the add-on usage? Where can I use it?

In browse mode, could we have a similar add-on?
* Copy selected column.
* Copy entire column: E.G. (c1:c20)

Thanks in advance.

Regards,
Victor


2018-11-28 5:46 GMT+08:00, Alberto Buffolino <a.buffolino@...>:

Hi all,
thanks to Joseph, Abdel, James and others within recent discussions
about Python 3 and code compatibility, I am happy to announce the return
on the scene of ColumnsReview! :D
https://addons.nvda-project.org/addons/columnsReview.en.html
In addition to code refactoring, which introduced profile and new
settings panel support, this build includes the empty list announcement
feature, that I developed some years ago in a never-released plugin.
I added the add-on as dev in website, and updated packages on server to
download.
As usual, tests, suggestions, code contributions and so on are
absolutely welcome.
Repository is here:
https://github.com/ABuffEr/columnsReview
Alberto



Alberto Buffolino
 

蔡宗豪 Victor Cai, il 07/12/2018 10.24, ha scritto:
Could you please give us more tips for the add-on usage? Where can I use it?
Alberto:
Hi Victor,
well, as I wrote in documentation, you can use it in list in various applications, basically... even if not all types are supported. Ah, and it supports Thunderbird message views (simple and threaded).
Then, for example, it's very useful in various NirSoft utilities.
In browse mode, could we have a similar add-on?
Alberto:
do you say for tables in webpages? Hmm, it could, but this would be quite out-of-scope, maybe extending Joseph's EasyTableNavigator, if it doesn't it yet, is better...
Alberto

Noelia Ruiz
 

Hi Alberto, as aside, when you want we can register the add-on on the translation system.

Cheers

El 07/12/2018 a las 20:47, Alberto Buffolino escribió:

蔡宗豪 Victor Cai, il 07/12/2018 10.24, ha scritto:
Could you please give us more tips for the add-on usage? Where can I use it?
Alberto:
Hi Victor,
well, as I wrote in documentation, you can use it in list in various applications, basically...  even if not all types are supported. Ah, and it supports Thunderbird message views (simple and threaded).
Then, for example, it's very useful in various NirSoft utilities.
In browse mode, could we have a similar add-on?
Alberto:
do you say for tables in webpages? Hmm, it could, but this would be quite out-of-scope, maybe extending Joseph's EasyTableNavigator, if it doesn't it yet, is better...
Alberto

Alberto Buffolino
 

Noelia Ruiz, il 08/12/2018 05.20, ha scritto:
Hi Alberto, as aside, when you want we can register the add-on on the translation system.
Alberto:
Hi Noelia,
oh, yes, thanks, I'd love to release a 3.0 stable with translations :)
Alberto