diff options
author | Georg Brandl <georg@python.org> | 2014-09-22 11:06:42 +0200 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2014-09-22 11:06:42 +0200 |
commit | 71cd2f7e50b692f9149cf5103b9bb289bc4f76c6 (patch) | |
tree | 8cca6002fbe256402ef15c92b643715cef01954b /sphinx/application.py | |
parent | 57e897669db1913db08beec2484ea1e9c8f105f7 (diff) | |
download | sphinx-git-71cd2f7e50b692f9149cf5103b9bb289bc4f76c6.tar.gz |
Change extension setup() return value to a dictionary of metadata.
This makes it possible to introduce more metadata values later.
Diffstat (limited to 'sphinx/application.py')
-rw-r--r-- | sphinx/application.py | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/sphinx/application.py b/sphinx/application.py index a1cc4c4fe..b1af74bf4 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -73,7 +73,7 @@ class Sphinx(object): self.verbosity = verbosity self.next_listener_id = 0 self._extensions = {} - self._extension_versions = {} + self._extension_metadata = {} self._listeners = {} self.domains = BUILTIN_DOMAINS.copy() self.builderclasses = BUILTIN_BUILDERS.copy() @@ -129,7 +129,7 @@ class Sphinx(object): self.setup_extension(extension) # the config file itself can be an extension if self.config.setup: - # py31 doesn't have 'callable' function for bellow check + # py31 doesn't have 'callable' function for below check if hasattr(self.config.setup, '__call__'): self.config.setup(self) else: @@ -157,7 +157,7 @@ class Sphinx(object): 'version requirement for extension %s, but it is ' 'not loaded' % extname) continue - has_ver = self._extension_versions[extname] + has_ver = self._extension_metadata[extname]['version'] if has_ver == 'unknown version' or needs_ver > has_ver: raise VersionRequirementError( 'This project needs the extension %s at least in ' @@ -367,20 +367,22 @@ class Sphinx(object): if not hasattr(mod, 'setup'): self.warn('extension %r has no setup() function; is it really ' 'a Sphinx extension module?' % extension) - version = None + ext_meta = None else: try: - version = mod.setup(self) + ext_meta = mod.setup(self) 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.' % (extension, err)) - if version is None: - version = 'unknown version' + if ext_meta is None: + ext_meta = {} + if not ext_meta.get('version'): + ext_meta['version'] = 'unknown version' self._extensions[extension] = mod - self._extension_versions[extension] = version + self._extension_metadata[extension] = ext_meta def require_sphinx(self, version): # check the Sphinx version if requested |