2020-06-27 05:57:10

I know nothing about this, and have no idea what causes this, can someone please help me?

File "C:\Users\  \Documents\Python\lib\site-packages\win32com\client\gencache.py", line 226, in GetModuleForCLSID
mod = GetModuleForTypelib(typelibCLSID, lcid, major, minor)
File "C:\Users\  \Documents\Python\lib\site-packages\win32com\client\gencache.py", line 266, in GetModuleForTypelib
AddModuleToCache(typelibCLSID, lcid, major, minor)
File "C:\Users\  \Documents\Python\lib\site-packages\win32com\client\gencache.py", line 552, in AddModuleToCache
dict = mod.CLSIDToClassMap
AttributeError: module 'win32com.gen_py.C866CA3A-32F7-11D2-9602-00C04F8EE628x0x5x4' has no attribute 'CLSIDToClassMap'

2020-06-27 06:10:13

This page has the answer you seek:
https://github.com/Amerikranian/Finger- … n-Version/

2020-06-27 06:16:52 (edited by Zarvox 2020-06-27 06:17:55)

@2 you are awesome. Thank you so much. Such an easy fix.

2020-06-27 06:17:26

@2
You might submit prs upstream to wherever has a maintainer documenting this.

If you wanted to be really fun and clever you could also become the maintainer of accessible_output3, which wraps accessible_output2, catches this exception, and prints an informative error about what to do. I'm not kidding.  This is, let's call it a 70% serious suggestion.  It's a 100% serious suggestion if you just go work out how to bind Tolk with cython, put the entire package under the lgpl (which works as long as it's in 100% cython because reasons), stattically link the NVDA controller client and Tolk itself, and put it on Pypi (at which point this goes away and we also avoid the DLL hell problem).

My Blog
Twitter: @ajhicks1992

2020-06-27 06:21:53

I don’t think this library is being maintained anymore, but I could be wrong. Still, something to consider.

2020-06-27 06:24:25

@5
accessible_output2 isn't.  Lucia is. I'm not sure who else might be relevant; I'm not tightly coupled to the modern Python ecosystem.

My Blog
Twitter: @ajhicks1992

2020-06-27 06:27:01 (edited by amerikranian 2020-06-27 06:32:29)

Oh, I see. I think they just use the library, though. Your suggestion about static linkage with Cython is an interesting one to consider.
Editing time: if we do create static links, we lose portability, though I don’t think people would miss it much seeing as AO2 already has issues on Mac and doesn’t work on Linux from what I understood.  Again, another thing to consider.

2020-06-27 06:37:08

@7
If you want details on this I can give them to you, but broadly speaking you depend on accessible_output2 for linux and/or mac, and provide a uniform API on top.  Then for Windows you compile the Cython version against multiple versions of Python, run a couple commands, and up to Pypi they go.  If you get interested reach out, I can concoct Appveyor scripts for your releases by cannibalizing what I have to do for Synthizer anyway and explain what specifically is going on with the licensing that makes Cython advantageous as well.

My Blog
Twitter: @ajhicks1992

2020-06-27 08:29:38

hi,
if I want to recommend a way to fix this for ever, I'll say to check in the constructor of the screen reader that uses COM objects for these kinds of errors, and delete that folder and continue.
this might be the simplest case,, but camlorn's way fixes that error for ever.

2020-06-27 12:31:16

Off-topic, but I saw the developer of soundRTS uses his own patched accessible_output2 https://github.com/soundmud/accessible_output2

2020-06-27 16:13:44

I managed to wrap tolk entirely in cython, however didn't try to statically link the nvda controller client with it.

Paul