Skip to content
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

Support autodoc_mock_imports in autosummary #5635

Closed
danabr opened this issue Nov 14, 2018 · 4 comments
Closed

Support autodoc_mock_imports in autosummary #5635

danabr opened this issue Nov 14, 2018 · 4 comments
Labels
Milestone

Comments

@danabr
Copy link

danabr commented Nov 14, 2018

Subject: Support autodoc_mock_imports in autosummary

Problem

The autodoc extension has a autodoc_mock_imports configuration option which may be used to produce documentation despite not all modules imported by some module being available. However, autosummary (which depends on autodoc) does not recognize this configuration option, and thus fails to generate summaries for modules containing unknown imports.

Suggested fix

diff --git a/sphinx/ext/autosummary/__init__.py b/sphinx/ext/autosummary/__init__.py
index 10adfc9ce..59184b23a 100644
--- a/sphinx/ext/autosummary/__init__.py
+++ b/sphinx/ext/autosummary/__init__.py
@@ -72,7 +72,7 @@ from sphinx import addnodes
 from sphinx.environment.adapters.toctree import TocTree
 from sphinx.ext.autodoc import get_documenters
 from sphinx.ext.autodoc.directive import DocumenterBridge, Options
-from sphinx.ext.autodoc.importer import import_module
+from sphinx.ext.autodoc.importer import import_module, mock
 from sphinx.locale import __
 from sphinx.pycode import ModuleAnalyzer, PycodeError
 from sphinx.util import import_object, rst, logging
@@ -678,10 +678,11 @@ def process_generate_options(app):
                           'But your source_suffix does not contain .rst. Skipped.'))
         return
 
-    generate_autosummary_docs(genfiles, builder=app.builder,
-                              warn=logger.warning, info=logger.info,
-                              suffix=suffix, base_path=app.srcdir,
-                              app=app)
+    with(mock(app.env.config.autodoc_mock_imports):
+        generate_autosummary_docs(genfiles, builder=app.builder,
+                                  warn=logger.warning, info=logger.info,
+                                  suffix=suffix, base_path=app.srcdir,
+                                  app=app)
 
 
 def setup(app):

Workaround

I currently use monkey patching to work around the problem.

"""
Workaround for autosummary not respecting autodoc_mock_imports.
"""

from sphinx.ext.autodoc.importer import mock
import sphinx.ext.autosummary
from sphinx.ext.autosummary.generate import _simple_info, _simple_warn
import sphinx.ext.autosummary.generate

orig_gen_sum_docs = sphinx.ext.autosummary.generate.generate_autosummary_docs


def patched_gen_docs(sources, output_dir=None, suffix='.rst',
                     warn=_simple_warn, info=_simple_info,
                     base_path=None, builder=None, template_dir=None,
                     imported_members=False, app=None):
    with mock(app.env.config.autodoc_mock_imports):
        orig_gen_sum_docs(sources, output_dir, suffix, warn, info, base_path,
                          builder, template_dir, imported_members, app)


sphinx.ext.autosummary.generate.generate_autosummary_docs = patched_gen_docs


def setup(app):
    return sphinx.ext.autosummary.setup(app)

Perhaps there are better ways to handle this situation?

@tk0miya tk0miya added this to the 2.0.0 milestone Nov 14, 2018
@tk0miya
Copy link
Member

tk0miya commented Nov 14, 2018

+1: Resonable. But I'd like to add a new option like autosummary_mock_imports because it is hard to understand autodoc_mock_imports effects to autosummary.

@danabr
Copy link
Author

danabr commented Nov 14, 2018

That would be fine with me.

@tk0miya
Copy link
Member

tk0miya commented Feb 13, 2019

Added in #6064.
Thank you for proposal!

@danabr
Copy link
Author

danabr commented Feb 13, 2019

Thank you!

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Aug 7, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants