# -*- coding: utf-8; mode: python -*- # pylint: disable=R0903, C0330, R0914, R0912, E0401 import os import sys from sphinx.util.osutil import fs_encoding # ------------------------------------------------------------------------------ def loadConfig(namespace): # ------------------------------------------------------------------------------ u"""Load an additional configuration file into *namespace*. The name of the configuration file is taken from the environment ``SPHINX_CONF``. The external configuration file extends (or overwrites) the configuration values from the origin ``conf.py``. With this you are able to maintain *build themes*. """ config_file = os.environ.get("SPHINX_CONF", None) if (config_file is not None and os.path.normpath(namespace["__file__"]) != os.path.normpath(config_file) ): config_file = os.path.abspath(config_file) # Let's avoid one conf.py file just due to latex_documents start = config_file.find('Documentation/') if start >= 0: start = config_file.find('/', start + 1) end = config_file.rfind('/') if start >= 0 and end > 0: dir = config_file[start + 1:end] print("source directory: %s" % dir) new_latex_docs = [] latex_documents = namespace['latex_documents'] for l in latex_documents: if l[0].find(dir + '/') == 0: has = True fn = l[0][len(dir) + 1:] new_latex_docs.append((fn, l[1], l[2], l[3], l[4])) break namespace['latex_documents'] = new_latex_docs # If there is an extra conf.py file, load it if os.path.isfile(config_file): sys.stdout.write("load additional sphinx-config: %s\n" % config_file) config = namespace.copy() config['__file__'] = config_file with open(config_file, 'rb') as f: code = compile(f.read(), fs_encoding, 'exec') exec(code, config) del config['__file__'] namespace.update(config) else: config = namespace.copy() config['tags'].add("subproject") namespace.update(config)