From 88bf4373c7e3443365fb341db026ddafbe0f6d0f Mon Sep 17 00:00:00 2001 From: Yoshiki Shibukawa Date: Wed, 1 Jun 2016 15:32:24 +0900 Subject: [PATCH] add extension blacklist to avoid error when loading deprecated extensions --- sphinx/application.py | 9 +++++++++ tests/test_application.py | 6 ++++++ 2 files changed, 15 insertions(+) diff --git a/sphinx/application.py b/sphinx/application.py index e82719d77..6bb35a08a 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -69,6 +69,10 @@ events = { CONFIG_FILENAME = 'conf.py' ENV_PICKLE_FILENAME = 'environment.pickle' +# list of deprecated extensions. Keys are extension name. +# Values are Sphinx version that merge the extension. +EXTENSION_BLACKLIST = {"sphinxjp.themecore": "1.2"} + class Sphinx(object): @@ -460,6 +464,11 @@ class Sphinx(object): self.debug('[app] setting up extension: %r', extension) if extension in self._extensions: return + if extension in EXTENSION_BLACKLIST: + self.warn('the extension %r was already merged with Sphinx since version %s; ' + 'this extension is ignored.' % ( + extension, EXTENSION_BLACKLIST[extension])) + return self._setting_up_extension.append(extension) try: mod = __import__(extension, None, None, ['setup']) diff --git a/tests/test_application.py b/tests/test_application.py index 7bc970c9d..420680451 100644 --- a/tests/test_application.py +++ b/tests/test_application.py @@ -70,6 +70,12 @@ def test_extensions(app, status, warning): assert warning.getvalue().startswith("WARNING: extension 'shutil'") +@with_app() +def test_extension_in_blacklist(app, status, warning): + app.setup_extension('sphinxjp.themecore') + assert warning.getvalue().startswith("WARNING: the extension 'sphinxjp.themecore' was") + + @with_app() def test_domain_override(app, status, warning): class A(Domain):