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