PageRenderTime 101ms CodeModel.GetById 27ms app.highlight 55ms RepoModel.GetById 0ms app.codeStats 0ms

/create_batch_for_workflow/pymodules/python2.7/lib/python/Sphinx-1.2.3-py2.7.egg/sphinx/config.py

https://gitlab.com/pooja043/Globus_Docker_2
Python | 284 lines | 259 code | 8 blank | 17 comment | 1 complexity | 4eebab159a44b83e34cc8f75de0b2b1c MD5 | raw file
  1# -*- coding: utf-8 -*-
  2"""
  3    sphinx.config
  4    ~~~~~~~~~~~~~
  5
  6    Build configuration file handling.
  7
  8    :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS.
  9    :license: BSD, see LICENSE for details.
 10"""
 11
 12import os
 13import re
 14import sys
 15from os import path
 16
 17from sphinx.errors import ConfigError
 18from sphinx.locale import l_
 19from sphinx.util.osutil import make_filename
 20from sphinx.util.pycompat import bytes, b, execfile_
 21
 22nonascii_re = re.compile(b(r'[\x80-\xff]'))
 23
 24CONFIG_SYNTAX_ERROR = "There is a syntax error in your configuration file: %s"
 25if sys.version_info >= (3, 0):
 26    CONFIG_SYNTAX_ERROR += "\nDid you change the syntax from 2.x to 3.x?"
 27
 28class Config(object):
 29    """
 30    Configuration file abstraction.
 31    """
 32
 33    # the values are: (default, what needs to be rebuilt if changed)
 34
 35    # If you add a value here, don't forget to include it in the
 36    # quickstart.py file template as well as in the docs!
 37
 38    config_values = dict(
 39        # general options
 40        project = ('Python', 'env'),
 41        copyright = ('', 'html'),
 42        version = ('', 'env'),
 43        release = ('', 'env'),
 44        today = ('', 'env'),
 45        today_fmt = (None, 'env'),  # the real default is locale-dependent
 46
 47        language = (None, 'env'),
 48        locale_dirs = ([], 'env'),
 49
 50        master_doc = ('contents', 'env'),
 51        source_suffix = ('.rst', 'env'),
 52        source_encoding = ('utf-8-sig', 'env'),
 53        exclude_patterns = ([], 'env'),
 54        # the next three are all deprecated now
 55        unused_docs = ([], 'env'),
 56        exclude_trees = ([], 'env'),
 57        exclude_dirnames = ([], 'env'),
 58        default_role = (None, 'env'),
 59        add_function_parentheses = (True, 'env'),
 60        add_module_names = (True, 'env'),
 61        trim_footnote_reference_space = (False, 'env'),
 62        show_authors = (False, 'env'),
 63        pygments_style = (None, 'html'),
 64        highlight_language = ('python', 'env'),
 65        templates_path = ([], 'html'),
 66        template_bridge = (None, 'html'),
 67        keep_warnings = (False, 'env'),
 68        modindex_common_prefix = ([], 'html'),
 69        rst_epilog = (None, 'env'),
 70        rst_prolog = (None, 'env'),
 71        trim_doctest_flags = (True, 'env'),
 72        primary_domain = ('py', 'env'),
 73        needs_sphinx = (None, None),
 74        nitpicky = (False, 'env'),
 75        nitpick_ignore = ([], 'html'),
 76
 77        # HTML options
 78        html_theme = ('default', 'html'),
 79        html_theme_path = ([], 'html'),
 80        html_theme_options = ({}, 'html'),
 81        html_title = (lambda self: l_('%s %s documentation') %
 82                                   (self.project, self.release),
 83                      'html'),
 84        html_short_title = (lambda self: self.html_title, 'html'),
 85        html_style = (None, 'html'),
 86        html_logo = (None, 'html'),
 87        html_favicon = (None, 'html'),
 88        html_static_path = ([], 'html'),
 89        html_extra_path = ([], 'html'),
 90        # the real default is locale-dependent
 91        html_last_updated_fmt = (None, 'html'),
 92        html_use_smartypants = (True, 'html'),
 93        html_translator_class = (None, 'html'),
 94        html_sidebars = ({}, 'html'),
 95        html_additional_pages = ({}, 'html'),
 96        html_use_modindex = (True, 'html'),  # deprecated
 97        html_domain_indices = (True, 'html'),
 98        html_add_permalinks = (u'\u00B6', 'html'),
 99        html_use_index = (True, 'html'),
100        html_split_index = (False, 'html'),
101        html_copy_source = (True, 'html'),
102        html_show_sourcelink = (True, 'html'),
103        html_use_opensearch = ('', 'html'),
104        html_file_suffix = (None, 'html'),
105        html_link_suffix = (None, 'html'),
106        html_show_copyright = (True, 'html'),
107        html_show_sphinx = (True, 'html'),
108        html_context = ({}, 'html'),
109        html_output_encoding = ('utf-8', 'html'),
110        html_compact_lists = (True, 'html'),
111        html_secnumber_suffix = ('. ', 'html'),
112        html_search_language = (None, 'html'),
113        html_search_options = ({}, 'html'),
114        html_search_scorer = ('', None),
115
116        # HTML help only options
117        htmlhelp_basename = (lambda self: make_filename(self.project), None),
118
119        # Qt help only options
120        qthelp_basename = (lambda self: make_filename(self.project), None),
121
122        # Devhelp only options
123        devhelp_basename = (lambda self: make_filename(self.project), None),
124
125        # Epub options
126        epub_basename = (lambda self: make_filename(self.project), None),
127        epub_theme = ('epub', 'html'),
128        epub_theme_options = ({}, 'html'),
129        epub_title = (lambda self: self.html_title, 'html'),
130        epub_author = ('unknown', 'html'),
131        epub_language = (lambda self: self.language or 'en', 'html'),
132        epub_publisher = ('unknown', 'html'),
133        epub_copyright = (lambda self: self.copyright, 'html'),
134        epub_identifier = ('unknown', 'html'),
135        epub_scheme = ('unknown', 'html'),
136        epub_uid = ('unknown', 'env'),
137        epub_cover = ((), 'env'),
138        epub_guide = ((), 'env'),
139        epub_pre_files = ([], 'env'),
140        epub_post_files = ([], 'env'),
141        epub_exclude_files = ([], 'env'),
142        epub_tocdepth = (3, 'env'),
143        epub_tocdup = (True, 'env'),
144        epub_tocscope = ('default', 'env'),
145        epub_fix_images = (False, 'env'),
146        epub_max_image_width = (0, 'env'),
147        epub_show_urls = ('inline', 'html'),
148        epub_use_index = (lambda self: self.html_use_index, 'html'),
149
150        # LaTeX options
151        latex_documents = (lambda self: [(self.master_doc,
152                                          make_filename(self.project) + '.tex',
153                                          self.project,
154                                          '', 'manual')],
155                           None),
156        latex_logo = (None, None),
157        latex_appendices = ([], None),
158        latex_use_parts = (False, None),
159        latex_use_modindex = (True, None),  # deprecated
160        latex_domain_indices = (True, None),
161        latex_show_urls = ('no', None),
162        latex_show_pagerefs = (False, None),
163        # paper_size and font_size are still separate values
164        # so that you can give them easily on the command line
165        latex_paper_size = ('letter', None),
166        latex_font_size = ('10pt', None),
167        latex_elements = ({}, None),
168        latex_additional_files = ([], None),
169        latex_docclass = ({}, None),
170        # now deprecated - use latex_elements
171        latex_preamble = ('', None),
172
173        # text options
174        text_sectionchars = ('*=-~"+`', 'env'),
175        text_newlines = ('unix', 'env'),
176
177        # manpage options
178        man_pages = (lambda self: [(self.master_doc,
179                                    make_filename(self.project).lower(),
180                                    '%s %s' % (self.project, self.release),
181                                    [], 1)],
182                     None),
183        man_show_urls = (False, None),
184
185        # Texinfo options
186        texinfo_documents = (lambda self: [(self.master_doc,
187                                            make_filename(self.project).lower(),
188                                            self.project, '',
189                                            make_filename(self.project),
190                                            'The %s reference manual.' %
191                                            make_filename(self.project),
192                                            'Python')],
193                             None),
194        texinfo_appendices = ([], None),
195        texinfo_elements = ({}, None),
196        texinfo_domain_indices = (True, None),
197        texinfo_show_urls = ('footnote', None),
198        texinfo_no_detailmenu = (False, None),
199
200        # linkcheck options
201        linkcheck_ignore = ([], None),
202        linkcheck_timeout = (None, None),
203        linkcheck_workers = (5, None),
204        linkcheck_anchors = (True, None),
205
206        # gettext options
207        gettext_compact = (True, 'gettext'),
208
209        # XML options
210        xml_pretty = (True, 'env'),
211    )
212
213    def __init__(self, dirname, filename, overrides, tags):
214        self.overrides = overrides
215        self.values = Config.config_values.copy()
216        config = {}
217        if "extensions" in overrides:
218            config["extensions"] = overrides["extensions"]
219        if dirname is not None:
220            config_file = path.join(dirname, filename)
221            config['__file__'] = config_file
222            config['tags'] = tags
223            olddir = os.getcwd()
224            try:
225                # we promise to have the config dir as current dir while the
226                # config file is executed
227                os.chdir(dirname)
228                try:
229                    execfile_(filename, config)
230                except SyntaxError, err:
231                    raise ConfigError(CONFIG_SYNTAX_ERROR % err)
232            finally:
233                os.chdir(olddir)
234
235        self._raw_config = config
236        # these two must be preinitialized because extensions can add their
237        # own config values
238        self.setup = config.get('setup', None)
239        self.extensions = config.get('extensions', [])
240
241    def check_unicode(self, warn):
242        # check all string values for non-ASCII characters in bytestrings,
243        # since that can result in UnicodeErrors all over the place
244        for name, value in self._raw_config.iteritems():
245            if isinstance(value, bytes) and nonascii_re.search(value):
246                warn('the config value %r is set to a string with non-ASCII '
247                     'characters; this can lead to Unicode errors occurring. '
248                     'Please use Unicode strings, e.g. %r.' % (name, u'Content')
249                )
250
251    def init_values(self):
252        config = self._raw_config
253        for valname, value in self.overrides.iteritems():
254            if '.' in valname:
255                realvalname, key = valname.split('.', 1)
256                config.setdefault(realvalname, {})[key] = value
257            else:
258                config[valname] = value
259        for name in config:
260            if name in self.values:
261                self.__dict__[name] = config[name]
262        del self._raw_config
263
264    def __getattr__(self, name):
265        if name.startswith('_'):
266            raise AttributeError(name)
267        if name not in self.values:
268            raise AttributeError('No such config value: %s' % name)
269        default = self.values[name][0]
270        if hasattr(default, '__call__'):
271            return default(self)
272        return default
273
274    def __getitem__(self, name):
275        return getattr(self, name)
276
277    def __setitem__(self, name, value):
278        setattr(self, name, value)
279
280    def __delitem__(self, name):
281        delattr(self, name)
282
283    def __contains__(self, name):
284        return name in self.values