New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

App module handler: handle executable names with dots as part of the file name #5323

Closed
nvaccessAuto opened this Issue Aug 29, 2015 · 1 comment

Comments

Projects
None yet
1 participant
@nvaccessAuto

nvaccessAuto commented Aug 29, 2015

Reported by nvdakor on 2015-08-29 02:29
Hi,
Consider the following scenario: an app module writer will write support for an app that contains dots as part of the executable image name. However, due to Python's way of searching for paths, the new app module will not be loaded. For example, suppose if one needs to support an app named "foo.bar.exe", Python will fail to locate "foo.bar.py" - assuming "foo" is a package and "bar" as one of its modules.
To handle this case, add a checking routine in app module handler's app module fetch routine to see if an executable name has dots, and if so, replace dots with underscores. This allows app modules for apps with dots as part of the executable name to replace the offending dots with underscores (which will not confuse Python). With this change, app module handler will be able to handle apps such as Microsoft Photos (Microsoft.photos.exe with the app module of Microsoft_photos.py), Universal Windows App (UWA) version of Twitter (twitter.windows.exe) and so on and allows add-on writers to write app modules for these apps (until app developers utilize UIA for the benefit of screen reader users; this last point is crucial now that UWA is here, and these apps are UIA heaven).
Thanks.

@nvaccessAuto

This comment has been minimized.

Show comment
Hide comment
@nvaccessAuto

nvaccessAuto Aug 29, 2015

Comment 1 by Joseph Lee <joseph.lee22590@... on 2015-08-29 02:36
In [3c876e7]:

App module handler: Executables with dots as file name are now loaded by replacing dots with underscores. re #5323.

Because of Python's way of importing modules, an executable name such as foo.bar would be interpreted as bar module in foo package. To handle this case, underscores will be used. This may also mean how app module is reported to users (Control+NVDA+F1) may have to be modified somehow. For now, each dots will be replaced bd a single underscore.

nvaccessAuto commented Aug 29, 2015

Comment 1 by Joseph Lee <joseph.lee22590@... on 2015-08-29 02:36
In [3c876e7]:

App module handler: Executables with dots as file name are now loaded by replacing dots with underscores. re #5323.

Because of Python's way of importing modules, an executable name such as foo.bar would be interpreted as bar module in foo package. To handle this case, underscores will be used. This may also mean how app module is reported to users (Control+NVDA+F1) may have to be modified somehow. For now, each dots will be replaced bd a single underscore.

josephsl added a commit to josephsl/nvda that referenced this issue Aug 22, 2016

AppModuleHandler: Handle apps where a dot is in the middle of an exec…
…utable name. re nvaccess#5323

To avoid module lookup issue, a 'dot' (.) is replaced by an underscore (_).

@jcsteh jcsteh closed this in #6286 Sep 16, 2016

@nvaccessAuto nvaccessAuto added this to the 2016.4 milestone Sep 16, 2016

jcsteh added a commit that referenced this issue Sep 16, 2016

It is now possible to provide app modules for executables containing …
…a dot (.) in their names. Dots are replaced with underscores (_).

Issue #5323. PR #6286.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment