diff options
Diffstat (limited to 'sphinx/util/compat.py')
-rw-r--r-- | sphinx/util/compat.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/sphinx/util/compat.py b/sphinx/util/compat.py index edd8cac61..c6578c810 100644 --- a/sphinx/util/compat.py +++ b/sphinx/util/compat.py @@ -9,15 +9,18 @@ :license: BSD, see LICENSE for details. """ +from __future__ import absolute_import + +import sys import warnings +from typing import TYPE_CHECKING from six import string_types, iteritems from sphinx.deprecation import RemovedInSphinx30Warning from sphinx.util import import_object -if False: - # For type annotation +if TYPE_CHECKING: from typing import Any, Dict # NOQA from sphinx.application import Sphinx # NOQA from sphinx.config import Config # NOQA @@ -35,9 +38,24 @@ def deprecate_source_parsers(app, config): app.add_source_parser(suffix, parser) +def register_application_for_autosummary(app): + # type: (Sphinx) -> None + """Register application object to autosummary module. + + Since Sphinx-1.7, documenters and attrgetters are registered into + applicaiton object. As a result, the arguments of + ``get_documenter()`` has been changed. To keep compatibility, + this handler registers application object to the module. + """ + if 'sphinx.ext.autosummary' in sys.modules: + from sphinx.ext import autosummary + autosummary._app = app + + def setup(app): # type: (Sphinx) -> Dict[unicode, Any] app.connect('config-inited', deprecate_source_parsers) + app.connect('builder-inited', register_application_for_autosummary) return { 'version': 'builtin', |