Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sphinx-doc/sphinx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2017-04-16 11:19:03 +0300
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2017-04-22 14:04:46 +0300
commita87a93ac7164c43c7e805bc5df45c4ff673625d2 (patch)
treebae7f6ed5ef2128aef4d5b64b69476d7075e8c0a /sphinx/extension.py
parent78ea36a787a762bb11dcddb00bf7510de43151c3 (diff)
Move load_extension() to factory
Diffstat (limited to 'sphinx/extension.py')
-rw-r--r--sphinx/extension.py62
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."""