sphinx-automodapi icon indicating copy to clipboard operation
sphinx-automodapi copied to clipboard

Does not mock with autodoc_mock_imports

Open sneakers-the-rat opened this issue 5 years ago • 1 comments

Sphinx autodoc uses autodoc_mock_imports to, well, mock imports.

Trying to mock modules with MagicMock causes them to be excluded from the compiled docs, see https://github.com/sphinx-doc/sphinx/issues/4956

Since automodapi doesn't respect autodoc_mock_imports, it tries to import the modules, but since they can't be mocked otherwise (as far as I have been able to get) this breaks automodapi when modules need to be mocked (ie. build with readthedocs).

sneakers-the-rat avatar Apr 26 '19 06:04 sneakers-the-rat

Specifically,

Traceback (most recent call last):
  File "/home/docs/checkouts/readthedocs.org/user_builds/rpilot/envs/master/lib/python2.7/site-packages/sphinx/cmd/build.py", line 303, in build_main
    args.tags, args.verbosity, args.jobs, args.keep_going)
  File "/home/docs/checkouts/readthedocs.org/user_builds/rpilot/envs/master/lib/python2.7/site-packages/sphinx/application.py", line 263, in __init__
    self._init_builder()
  File "/home/docs/checkouts/readthedocs.org/user_builds/rpilot/envs/master/lib/python2.7/site-packages/sphinx/application.py", line 325, in _init_builder
    self.emit('builder-inited')
  File "/home/docs/checkouts/readthedocs.org/user_builds/rpilot/envs/master/lib/python2.7/site-packages/sphinx/application.py", line 510, in emit
    return self.events.emit(event, self, *args)
  File "/home/docs/checkouts/readthedocs.org/user_builds/rpilot/envs/master/lib/python2.7/site-packages/sphinx/events.py", line 80, in emit
    results.append(callback(*args))
  File "/home/docs/checkouts/readthedocs.org/user_builds/rpilot/envs/master/lib/python2.7/site-packages/sphinx_automodapi/automodsumm.py", line 263, in process_automodsumm_generation
    lines = automodsumm_to_autosummary_lines(sfn, app)
  File "/home/docs/checkouts/readthedocs.org/user_builds/rpilot/envs/master/lib/python2.7/site-packages/sphinx_automodapi/automodsumm.py", line 335, in automodsumm_to_autosummary_lines
    filestr = automodapi.automodapi_replace(fr.read(), app, True, docname, False)
  File "/home/docs/checkouts/readthedocs.org/user_builds/rpilot/envs/master/lib/python2.7/site-packages/sphinx_automodapi/automodapi.py", line 277, in automodapi_replace
    modnm, toskip, onlylocals=onlylocals)
  File "/home/docs/checkouts/readthedocs.org/user_builds/rpilot/envs/master/lib/python2.7/site-packages/sphinx_automodapi/automodapi.py", line 388, in _mod_info
    for localnm, fqnm, obj in zip(*find_mod_objs(modname, onlylocals=onlylocals)):
  File "/home/docs/checkouts/readthedocs.org/user_builds/rpilot/envs/master/lib/python2.7/site-packages/sphinx_automodapi/utils.py", line 78, in find_mod_objs
    __import__(modname)
  File "/home/docs/checkouts/readthedocs.org/user_builds/rpilot/checkouts/master/rpilot/core/plots.py", line 13, in <module>
    import PySide
ImportError: No module named PySide

sneakers-the-rat avatar Apr 26 '19 06:04 sneakers-the-rat