buildframework/helium/external/python/lib/common/Sphinx-0.5.1-py2.5.egg/sphinx/config.py
changeset 179 d8ac696cc51f
equal deleted inserted replaced
1:be27ed110b50 179:d8ac696cc51f
       
     1 # -*- coding: utf-8 -*-
       
     2 """
       
     3     sphinx.config
       
     4     ~~~~~~~~~~~~~
       
     5 
       
     6     Build configuration file handling.
       
     7 
       
     8     :copyright: 2008 by Georg Brandl.
       
     9     :license: BSD license.
       
    10 """
       
    11 
       
    12 import os
       
    13 from os import path
       
    14 
       
    15 
       
    16 class Config(object):
       
    17     """Configuration file abstraction."""
       
    18 
       
    19     # the values are: (default, needs fresh doctrees if changed)
       
    20 
       
    21     # If you add a value here, don't forget to include it in the
       
    22     # quickstart.py file template as well as in the docs!
       
    23 
       
    24     config_values = dict(
       
    25         # general options
       
    26         project = ('Python', True),
       
    27         copyright = ('', False),
       
    28         version = ('', True),
       
    29         release = ('', True),
       
    30         today = ('', True),
       
    31         today_fmt = (None, True),  # the real default is locale-dependent
       
    32 
       
    33         language = (None, True),
       
    34         locale_dirs = ([], True),
       
    35 
       
    36         master_doc = ('contents', True),
       
    37         source_suffix = ('.rst', True),
       
    38         source_encoding = ('utf-8', True),
       
    39         unused_docs = ([], True),
       
    40         exclude_dirs = ([], True),
       
    41         exclude_trees = ([], True),
       
    42         exclude_dirnames = ([], True),
       
    43         default_role = (None, True),
       
    44         add_function_parentheses = (True, True),
       
    45         add_module_names = (True, True),
       
    46         show_authors = (False, True),
       
    47         pygments_style = ('sphinx', False),
       
    48         highlight_language = ('python', False),
       
    49         templates_path = ([], False),
       
    50         template_bridge = (None, False),
       
    51         keep_warnings = (False, True),
       
    52 
       
    53         # HTML options
       
    54         html_title = (lambda self: '%s v%s documentation' %
       
    55                                    (self.project, self.release),
       
    56                       False),
       
    57         html_short_title = (lambda self: self.html_title, False),
       
    58         html_style = ('default.css', False),
       
    59         html_logo = (None, False),
       
    60         html_favicon = (None, False),
       
    61         html_static_path = ([], False),
       
    62         html_last_updated_fmt = (None, False),  # the real default is locale-dependent
       
    63         html_use_smartypants = (True, False),
       
    64         html_translator_class = (None, False),
       
    65         html_sidebars = ({}, False),
       
    66         html_additional_pages = ({}, False),
       
    67         html_use_modindex = (True, False),
       
    68         html_use_index = (True, False),
       
    69         html_split_index = (False, False),
       
    70         html_copy_source = (True, False),
       
    71         html_use_opensearch = ('', False),
       
    72         html_file_suffix = (None, False),
       
    73         html_show_sphinx = (True, False),
       
    74         html_context = ({}, False),
       
    75 
       
    76         # HTML help only options
       
    77         htmlhelp_basename = ('pydoc', False),
       
    78 
       
    79         # LaTeX options
       
    80         latex_documents = ([], False),
       
    81         latex_logo = (None, False),
       
    82         latex_appendices = ([], False),
       
    83         latex_use_parts = (False, False),
       
    84         latex_use_modindex = (True, False),
       
    85         # paper_size and font_size are still separate values
       
    86         # so that you can give them easily on the command line
       
    87         latex_paper_size = ('letter', False),
       
    88         latex_font_size = ('10pt', False),
       
    89         latex_elements = ({}, False),
       
    90         # now deprecated - use latex_elements
       
    91         latex_preamble = ('', False),
       
    92     )
       
    93 
       
    94     def __init__(self, dirname, filename, overrides):
       
    95         self.overrides = overrides
       
    96         self.values = Config.config_values.copy()
       
    97         config = {}
       
    98         if dirname is not None:
       
    99             config['__file__'] = path.join(dirname, filename)
       
   100             olddir = os.getcwd()
       
   101             try:
       
   102                 os.chdir(dirname)
       
   103                 execfile(config['__file__'], config)
       
   104             finally:
       
   105                 os.chdir(olddir)
       
   106         self._raw_config = config
       
   107         # these two must be preinitialized because extensions can add their
       
   108         # own config values
       
   109         self.setup = config.get('setup', None)
       
   110         self.extensions = config.get('extensions', [])
       
   111 
       
   112     def init_values(self):
       
   113         config = self._raw_config
       
   114         config.update(self.overrides)
       
   115         for name in config:
       
   116             if name in self.values:
       
   117                 self.__dict__[name] = config[name]
       
   118         del self._raw_config
       
   119 
       
   120     def __getattr__(self, name):
       
   121         if name.startswith('_'):
       
   122             raise AttributeError(name)
       
   123         if name not in self.values:
       
   124             raise AttributeError('No such config value: %s' % name)
       
   125         default = self.values[name][0]
       
   126         if callable(default):
       
   127             return default(self)
       
   128         return default
       
   129 
       
   130     def __getitem__(self, name):
       
   131         return getattr(self, name)
       
   132 
       
   133     def __setitem__(self, name, value):
       
   134         setattr(self, name, value)
       
   135 
       
   136     def __delitem__(self, name):
       
   137         delattr(self, name)
       
   138 
       
   139     def __contains__(self, name):
       
   140         return name in self.values