-
-
Notifications
You must be signed in to change notification settings - Fork 783
Include winBindings.cfgmgr32 in binary builds #20089
Copy link
Copy link
Closed
Labels
Addon/APIChanges to NVDA's API for addons to support addon development.Changes to NVDA's API for addons to support addon development.bugcomponent/dev-documentationp2https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priorityhttps://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#prioritytriagedHas been triaged, issue is waiting for implementation.Has been triaged, issue is waiting for implementation.
Milestone
Metadata
Metadata
Assignees
Labels
Addon/APIChanges to NVDA's API for addons to support addon development.Changes to NVDA's API for addons to support addon development.bugcomponent/dev-documentationp2https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#priorityhttps://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#prioritytriagedHas been triaged, issue is waiting for implementation.Has been triaged, issue is waiting for implementation.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Related issues, PRs or discussions
Related to #18571.
What is the current state of the codebase?
In NVDA 2026.1,
user_docs/en/changes.mddocuments that the following symbols have been moved fromhwPortUtilstowinBindings.cfgmgr32:CM_Get_Device_IDCR_SUCCESSMAX_DEVICE_ID_LENsource/winBindings/cfgmgr32.pyexists in therelease-2026.1source tree, andhwPortUtils.__getattr__points deprecated symbols towinBindings.cfgmgr32.However, the installed NVDA 2026.1 binary package does not include
winBindings/cfgmgr32.pycinlibrary.zip. As a result, add-ons cannot import the documented replacement module:This raises:
Why are changes required?
The 2026.1 developer changes publicly document
winBindings.cfgmgr32as the replacement import path for deprecatedhwPortUtilssymbols. Since the module is omitted from binary builds, the documented migration path is unavailable to add-ons using installed NVDA builds.This is likely because
winBindings.cfgmgr32is only referenced dynamically viautils._deprecate.MovedSymbol, so py2exe does not discover it through static import analysis.What technical changes are required?
Explicitly include
winBindings.cfgmgr32in the py2exe build configuration, for example insource/setup.pyunderoptions["includes"]:"winBindings.cfgmgr32",A short comment may be useful:
After building, verify that
dist/library.zipcontains:Are the proposed technical changes API breaking?
No
Are there potential risks or issues with the proposed implementation?
Risk should be low. This only adds an existing NVDA source module to binary builds so the documented developer API path is available. The module is small and wraps functions from the Windows system
cfgmgr32.dll.