Skip to content

speechDictHandler.speechDictVars should be either deprecated properly, or removed in 2024.1 cycle. #15614

@lukaszgo1

Description

@lukaszgo1

Steps to reproduce:

In a binary version of NVDA try to import speechDictHandler.speechDictVars. alternatively build the developer documentation with scons devDocs.

Actual behavior:

speechDictHandler.speechDictVars cannot be imported when using binary versions, even though its removal has not been announced in the change log. This occurs because, when the given module is not imported anywhere in core, py2exe does not bundle it. When trying to build developer documentation the following warning is raised:

speechDictHandler.speechDictVars.speechDictsPath is deprecated, instead use NVDAState.WritePaths.speechDictsDir
Stack trace:
  File "C:\Python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\cmd\build.py", line 295, in <module>
    sys.exit(main(sys.argv[1:]))
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\cmd\build.py", line 289, in main
    return make_main(argv)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\cmd\build.py", line 193, in make_main
    return make_mode.run_make_mode(argv[1:])
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\cmd\make_mode.py", line 160, in run_make_mode
    return make.run_generic_build(args[0])
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\cmd\make_mode.py", line 148, in run_generic_build
    return build_main(args + opts)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\cmd\build.py", line 277, in build_main
    app.build(args.force_all, filenames)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\application.py", line 349, in build
    self.builder.build_update()
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\builders\__init__.py", line 303, in build_update
    len(to_build))
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\builders\__init__.py", line 317, in build
    updated_docnames = set(self.read())
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\builders\__init__.py", line 424, in read
    self._read_serial(docnames)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\builders\__init__.py", line 445, in _read_serial
    self.read_doc(docname)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\builders\__init__.py", line 498, in read_doc
    publisher.publish()
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\core.py", line 218, in publish
    self.settings)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\io.py", line 104, in read
    self.parse()
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\readers\__init__.py", line 78, in parse
    self.parser.parse(self.input, document)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\parsers.py", line 78, in parse
    self.statemachine.run(inputlines, document, inliner=self.inliner)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 171, in run
    input_source=document['source'])
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\statemachine.py", line 240, in run
    context, state, transitions)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\statemachine.py", line 451, in check_line
    return method(match, context, next_state)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 2769, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 327, in section
    self.new_subsection(title, lineno, messages)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 395, in new_subsection
    node=section_node, match_titles=True)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 282, in nested_parse
    node=node, match_titles=match_titles)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\statemachine.py", line 240, in run
    context, state, transitions)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\statemachine.py", line 451, in check_line
    return method(match, context, next_state)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 2769, in underline
    self.section(title, source, style, lineno - 1, messages)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 327, in section
    self.new_subsection(title, lineno, messages)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 395, in new_subsection
    node=section_node, match_titles=True)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 282, in nested_parse
    node=node, match_titles=match_titles)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 196, in run
    results = StateMachineWS.run(self, input_lines, input_offset)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\statemachine.py", line 240, in run
    context, state, transitions)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\statemachine.py", line 451, in check_line
    return method(match, context, next_state)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 2342, in explicit_markup
    nodelist, blank_finish = self.explicit_construct(match)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 2354, in explicit_construct
    return method(self, expmatch)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 2097, in directive
    directive_class, match, type_name, option_presets)
  File "D:\my_repos\nvda\.venv\lib\site-packages\docutils\parsers\rst\states.py", line 2146, in run_directive
    result = directive_instance.run()
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\ext\autodoc\directive.py", line 148, in run
    documenter.generate(more_content=self.content)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\ext\autodoc\__init__.py", line 883, in generate
    if not self.import_object():
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\ext\autodoc\__init__.py", line 1003, in import_object
    ret = super().import_object(raiseerror)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\ext\autodoc\__init__.py", line 409, in import_object
    warningiserror=self.config.autodoc_warningiserror)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\ext\autodoc\importer.py", line 79, in import_object
    module = import_module(modname, warningiserror=warningiserror)
  File "D:\my_repos\nvda\.venv\lib\site-packages\sphinx\ext\autodoc\importer.py", line 58, in import_module
    return importlib.import_module(modname)
  File "C:\Python37\lib\importlib\__init__.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 "speechDictHandler\speechDictVars.py", line 18, in <module>
    stack_info=True


Expected behavior:

speechDictHandler.speechDictVars should be importable, alternatively it should be removed. Deprecated code should not cause warnings when building developer documentation.

NVDA logs, crash dumps and other attachments:

System configuration

NVDA installed/portable/running from source:

From source

NVDA version:

Current master.

Windows version:

N/A

Name and version of other software in use when reproducing the issue:

None

Other information about your system:

Other questions

Does the issue still occur after restarting your computer?

Irrelevant

Have you tried any other versions of NVDA? If so, please report their behaviors.

Problem introduced with PR #15021

If NVDA add-ons are disabled, is your problem still occurring?

Irrelevant

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

Irrelevant

Additional context:

This is not the first time where there are differences between source and binary builds. It would be good to pay attention to cases like this when reviewing. I'm also not sure why the module was deprecated by placing warnings at the top level - we usually don't do this. Either way my suggestion would be to remove speechDictHandler.speechDictVars in 2024.1 development cycle.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions