Allow multiple calls to setup_extension().

This commit is contained in:
Georg Brandl 2009-02-24 13:34:21 +01:00
parent 9df0b1ce74
commit 965a8c1d20

View File

@ -89,6 +89,7 @@ class Sphinx(object):
confoverrides, status, warning=sys.stderr, freshenv=False, confoverrides, status, warning=sys.stderr, freshenv=False,
warningiserror=False, tags=None): warningiserror=False, tags=None):
self.next_listener_id = 0 self.next_listener_id = 0
self._extensions = {}
self._listeners = {} self._listeners = {}
self.builderclasses = BUILTIN_BUILDERS.copy() self.builderclasses = BUILTIN_BUILDERS.copy()
self.builder = None self.builder = None
@ -190,7 +191,9 @@ class Sphinx(object):
# general extensibility interface # general extensibility interface
def setup_extension(self, extension): def setup_extension(self, extension):
"""Import and setup a Sphinx extension module.""" """Import and setup a Sphinx extension module. No-op if called twice."""
if extension in self._extensions:
return
try: try:
mod = __import__(extension, None, None, ['setup']) mod = __import__(extension, None, None, ['setup'])
except ImportError, err: except ImportError, err:
@ -198,6 +201,7 @@ class Sphinx(object):
err) err)
if hasattr(mod, 'setup'): if hasattr(mod, 'setup'):
mod.setup(self) mod.setup(self)
self._extensions[extension] = mod
def import_object(self, objname, source=None): def import_object(self, objname, source=None):
"""Import an object from a 'module.name' string.""" """Import an object from a 'module.name' string."""