text: # -*- coding: utf-8 -*-
  #
  # Sphinx documentation build configuration file
  
  import re
  import sphinx
  
  
  extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo',
                'sphinx.ext.autosummary', 'sphinx.ext.extlinks']
  
  master_doc = 'contents'
  templates_path = ['_templates']
  exclude_patterns = ['_build']
  
  project = 'Sphinx'
  copyright = '2007-2013, Georg Brandl'
  version = sphinx.__released__
  release = version
  show_authors = True
  
  html_theme = 'sphinx13'
  html_theme_path = ['_themes']
  modindex_common_prefix = ['sphinx.']
  html_static_path = ['_static']
  html_sidebars = {'index': ['indexsidebar.html', 'searchbox.html']}
  html_additional_pages = {'index': 'index.html'}
  html_use_opensearch = 'http://sphinx-doc.org'
  
  htmlhelp_basename = 'Sphinxdoc'
  
  epub_theme = 'epub'
  epub_basename = 'sphinx'
  epub_author = 'Georg Brandl'
  epub_publisher = 'http://sphinx-doc.org/'
  epub_scheme = 'url'
  epub_identifier = epub_publisher
  epub_pre_files = [('index.html', 'Welcome')]
  epub_post_files = [('install.html', 'Installing Sphinx'),
      ('develop.html', 'Sphinx development')]
  epub_exclude_files = ['_static/opensearch.xml', '_static/doctools.js',
      '_static/jquery.js', '_static/searchtools.js', '_static/underscore.js',
      '_static/basic.css', 'search.html', '_static/websupport.js']
  epub_fix_images = False
  epub_max_image_width = 0
  epub_show_urls = 'inline'
  epub_use_index = False
  epub_guide = (('toc', 'contents.html', u'Table of Contents'),)
  
  latex_documents = [('contents', 'sphinx.tex', 'Sphinx Documentation',
                      'Georg Brandl', 'manual', 1)]
  latex_logo = '_static/sphinx.png'
  latex_elements = {
      'fontpkg': '\\usepackage{palatino}',
  }
  latex_show_urls = 'footnote'
  
  autodoc_member_order = 'groupwise'
  todo_include_todos = True
  extlinks = {'duref': ('http://docutils.sourceforge.net/docs/ref/rst/'
                        'restructuredtext.html#%s', ''),
              'durole': ('http://docutils.sourceforge.net/docs/ref/rst/'
                         'roles.html#%s', ''),
              'dudir': ('http://docutils.sourceforge.net/docs/ref/rst/'
                        'directives.html#%s', '')}
  
  man_pages = [
      ('contents', 'sphinx-all', 'Sphinx documentation generator system manual',
       'Georg Brandl', 1),
      ('man/sphinx-build', 'sphinx-build', 'Sphinx documentation generator tool',
       '', 1),
      ('man/sphinx-quickstart', 'sphinx-quickstart', 'Sphinx documentation '
       'template generator', '', 1),
      ('man/sphinx-apidoc', 'sphinx-apidoc', 'Sphinx API doc generator tool',
       '', 1),
  ]
  
  texinfo_documents = [
      ('contents', 'sphinx', 'Sphinx Documentation', 'Georg Brandl',
       'Sphinx', 'The Sphinx documentation builder.', 'Documentation tools',
       1),
  ]
  
  # We're not using intersphinx right now, but if we did, this would be part of
  # the mapping:
  intersphinx_mapping = {'python': ('http://docs.python.org/dev', None)}
  
  # Sphinx document translation with sphinx gettext feature uses these settings:
  locale_dirs = ['locale/']
  gettext_compact = False
  
  
  # -- Extension interface -------------------------------------------------------
  
  from sphinx import addnodes
  
  
  event_sig_re = re.compile(r'([a-zA-Z-]+)\s*\((.*)\)')
  
  def parse_event(env, sig, signode):
      m = event_sig_re.match(sig)
      if not m:
          signode += addnodes.desc_name(sig, sig)
          return sig
      name, args = m.groups()
      signode += addnodes.desc_name(name, name)
      plist = addnodes.desc_parameterlist()
      for arg in args.split(','):
          arg = arg.strip()
          plist += addnodes.desc_parameter(arg, arg)
      signode += plist
      return name
  
  
  def setup(app):
      from sphinx.ext.autodoc import cut_lines
      from sphinx.util.docfields import GroupedField
      app.connect('autodoc-process-docstring', cut_lines(4, what=['module']))
      app.add_object_type('confval', 'confval',
                          objname='configuration value',
                          indextemplate='pair: %s; configuration value')
      fdesc = GroupedField('parameter', label='Parameters',
                           names=['param'], can_collapse=True)
      app.add_object_type('event', 'event', 'pair: %s; event', parse_event,
                          doc_field_types=[fdesc])
  