diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2017-04-16 11:19:03 +0300 |
---|---|---|
committer | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2017-04-22 14:04:46 +0300 |
commit | a87a93ac7164c43c7e805bc5df45c4ff673625d2 (patch) | |
tree | bae7f6ed5ef2128aef4d5b64b69476d7075e8c0a /sphinx/extension.py | |
parent | 78ea36a787a762bb11dcddb00bf7510de43151c3 (diff) |
Move load_extension() to factory
Diffstat (limited to 'sphinx/extension.py')
-rw-r--r-- | sphinx/extension.py | 62 |
1 files changed, 2 insertions, 60 deletions
diff --git a/sphinx/extension.py b/sphinx/extension.py index 4e40fdee3..82fd2d976 100644 --- a/sphinx/extension.py +++ b/sphinx/extension.py @@ -9,30 +9,20 @@ :license: BSD, see LICENSE for details. """ -import traceback - from six import iteritems -from sphinx.errors import ExtensionError, VersionRequirementError +from sphinx.errors import VersionRequirementError from sphinx.locale import _ from sphinx.util import logging if False: # For type annotation - from typing import Any, Dict # NOQA + from typing import Dict # NOQA from sphinx.application import Sphinx # NOQA - logger = logging.getLogger(__name__) -# list of deprecated extensions. Keys are extension name. -# Values are Sphinx version that merge the extension. -EXTENSION_BLACKLIST = { - "sphinxjp.themecore": "1.2" -} # type: Dict[unicode, unicode] - - class Extension(object): def __init__(self, name, module, **kwargs): self.name = name @@ -51,54 +41,6 @@ class Extension(object): self.parallel_write_safe = kwargs.pop('parallel_read_safe', True) -def load_extension(app, extname): - # type: (Sphinx, unicode) -> None - """Load a Sphinx extension.""" - if extname in app.extensions: # alread loaded - return - if extname in EXTENSION_BLACKLIST: - logger.warning(_('the extension %r was already merged with Sphinx since ' - 'version %s; this extension is ignored.'), - extname, EXTENSION_BLACKLIST[extname]) - return - - # update loading context - app._setting_up_extension.append(extname) - - try: - mod = __import__(extname, None, None, ['setup']) - except ImportError as err: - logger.verbose(_('Original exception:\n') + traceback.format_exc()) - raise ExtensionError(_('Could not import extension %s') % extname, err) - - if not hasattr(mod, 'setup'): - logger.warning(_('extension %r has no setup() function; is it really ' - 'a Sphinx extension module?'), extname) - metadata = {} # type: Dict[unicode, Any] - else: - try: - metadata = mod.setup(app) - except VersionRequirementError as err: - # add the extension name to the version required - raise VersionRequirementError( - _('The %s extension used by this project needs at least ' - 'Sphinx v%s; it therefore cannot be built with this ' - 'version.') % (extname, err) - ) - - if metadata is None: - metadata = {} - if extname == 'rst2pdf.pdfbuilder': - metadata['parallel_read_safe'] = True - elif not isinstance(metadata, dict): - logger.warning(_('extension %r returned an unsupported object from ' - 'its setup() function; it should return None or a ' - 'metadata dictionary'), extname) - - app.extensions[extname] = Extension(extname, mod, **metadata) - app._setting_up_extension.pop() - - def verify_required_extensions(app, requirements): # type: (Sphinx, Dict[unicode, unicode]) -> None """Verify the required Sphinx extensions are loaded.""" |