Commits

Robert Lehmann committed 88f1c69 Merge

merge with trunk

  • Participants
  • Parent commits 5d3a4a0, 63f3d74

Comments (0)

Files changed (61)

 24a2061063212f1951507a35ed589a55cd9dd962 0.6.4
 f76fb0be8011dbecec8f39fba791feca24351bfb 0.6.5
 36de1ff4ba69967829b918b961e2097b8f9bd537 0.6.6
+e2723a4a64f07ee10ec24fef27f8bf79bb3d5b3b 0.6.7
 80dc1a872e49556dce681fdb2ea4be54ad847e6c 1.0b1
+b494009dccf19d0df894a4ce50754e866a099808 1.0b2
   - reStructuredText
 
 * The old markup for defining and linking to C directives will not work
-  anymore without activating the ``oldcmarkup`` extension.
+  anymore without activating the :mod:`~sphinx.ext.oldcmarkup`
+  extension.
 
 * Removed support for old dependency versions; requirements are now:
 
 * General:
 
   - Added a "nitpicky" mode that emits warnings for all missing
-    references.  It is activated by the ``-n`` command-line switch or
-    the ``nitpicky`` config value.
+    references.  It is activated by the :option:`-n` command-line switch
+    or the :confval:`nitpicky` config value.
   - Added ``latexpdf`` target in quickstart Makefile.
 
 * Markup:
 
-  - The ``menuselection`` and ``guilabel`` roles now support ampersand
-    accelerators.
+  - The :rst:role:`menuselection` and :rst:role:`guilabel` roles now
+    support ampersand accelerators.
   - New more compact doc field syntax is now recognized: ``:param type
     name: description``.
-  - Added ``tab-width`` option to ``literalinclude`` directive.
-  - Added ``titlesonly`` option to ``toctree`` directive.
+  - Added ``tab-width`` option to :rst:dir:`literalinclude` directive.
+  - Added ``titlesonly`` option to :rst:dir:`toctree` directive.
   - Added the ``prepend`` and ``append`` options to the
-    ``literalinclude`` directive.
+    :rst:dir:`literalinclude` directive.
   - #284: All docinfo metadata is now put into the document metadata, not
     just the author.
+  - The :rst:role:`ref` role can now also reference tables by caption.
+  - The :rst:dir:`include` directive now supports absolute paths, which
+    are interpreted as relative to the source directory.
+  - In the Python domain, references like ``:func:`.name``` now look for
+    matching names with any prefix if no direct match is found.
 
 * Configuration:
 
-  - Added ``rst_prolog`` config value.
-  - Added ``html_secnumber_suffix`` config value to control section
-    numbering format.
-  - Added ``html_compact_lists`` config value to control docutils'
-    compact lists feature.
-  - The ``html_sidebars`` config value can now contain patterns as
-    keys, and the values can be lists that explicitly select which
+  - Added :confval:`rst_prolog` config value.
+  - Added :confval:`html_secnumber_suffix` config value to control
+    section numbering format.
+  - Added :confval:`html_compact_lists` config value to control
+    docutils' compact lists feature.
+  - The :confval:`html_sidebars` config value can now contain patterns
+    as keys, and the values can be lists that explicitly select which
     sidebar templates should be rendered.  That means that the builtin
     sidebar contents can be included only selectively.
-  - ``html_static_path`` can now contain single file entries.
-  - The new universal config value ``exclude_patterns`` makes the
-    old ``unused_docs``, ``exclude_trees`` and ``exclude_dirnames``
-    obsolete.
-  - Added ``html_output_encoding`` config value.
-  - Added the ``latex_docclass`` config value and made the "twoside"
-    documentclass option overridable by "oneside".
-  - Added the ``trim_doctest_flags`` config value, which is true by
-    default.
-  - Added ``html_show_copyright`` config value.
-  - Added ``latex_show_pagerefs`` and ``latex_show_urls`` config values.
+  - :confval:`html_static_path` can now contain single file entries.
+  - The new universal config value :confval:`exclude_patterns` makes the
+    old :confval:`unused_docs`, :confval:`exclude_trees` and
+    :confval:`exclude_dirnames` obsolete.
+  - Added :confval:`html_output_encoding` config value.
+  - Added the :confval:`latex_docclass` config value and made the
+    "twoside" documentclass option overridable by "oneside".
+  - Added the :confval:`trim_doctest_flags` config value, which is true
+    by default.
+  - Added :confval:`html_show_copyright` config value.
+  - Added :confval:`latex_show_pagerefs` and :confval:`latex_show_urls`
+    config values.
 
 * New builders:
 
     collapsible using the new ``collapsiblesidebar`` theme option.
   - #129: Toctrees are now wrapped in a ``div`` tag with class
     ``toctree-wrapper`` in HTML output.
-  - The ``toctree()`` callable in templates now has a ``maxdepth``
+  - The :data:`toctree` callable in templates now has a ``maxdepth``
     keyword argument to control the depth of the generated tree.
+  - The :data:`toctree` callable in templates now accepts a
+    ``titles_only`` keyword argument.
   - Added ``htmltitle`` block in layout template.
   - In the JavaScript search, allow searching for object names including
     the module name, like ``sys.argv``.
   - Added new theme ``scrolls``, created by Armin Ronacher.
   - #193: Added a ``visitedlinkcolor`` theme option to the default
     theme.
+  - #322: Improved responsiveness of the search page by loading the
+    search index asynchronously.
 
 * Extension API:
 
-  - Added ``html-collect-pages`` event.
-  - Added ``needs_sphinx`` config value and ``Sphinx.require_sphinx``
-    application API function.
-  - #200: Added ``Sphinx.add_stylesheet()``.
+  - Added :event:`html-collect-pages`.
+  - Added :confval:`needs_sphinx` config value and
+    :meth:`~sphinx.application.Sphinx.require_sphinx` application API
+    method.
+  - #200: Added :meth:`~sphinx.application.Sphinx.add_stylesheet`
+    application API method.
 
 * Extensions:
 
-  - Added the ``viewcode`` extension.
-  - Added the ``extlinks`` extension.
+  - Added the :mod:`~sphinx.ext.viewcode` extension.
+  - Added the :mod:`~sphinx.ext.extlinks` extension.
   - Added support for source ordering of members in autodoc, with
     ``autodoc_member_order = 'bysource'``.
-  - Added ``autodoc_default_flags`` config value, which can be used to
-    select default flags for all autodoc directives.
+  - Added :confval:`autodoc_default_flags` config value, which can be
+    used to select default flags for all autodoc directives.
   - Added a way for intersphinx to refer to named labels in other
     projects, and to specify the project you want to link to.
   - #280: Autodoc can now document instance attributes assigned in
     ``__init__`` methods.
-  - Many improvements and fixes to the ``autosummary`` extension, thanks
-    to Pauli Virtanen.
-  - #309: The ``graphviz`` extension can now output SVG instead of PNG
-    images, controlled by the ``graphviz_output_format`` config value.
-  - Added ``alt`` option to ``graphviz`` extension directives.
+  - Many improvements and fixes to the :mod:`~sphinx.ext.autosummary`
+    extension, thanks to Pauli Virtanen.
+  - #309: The :mod:`~sphinx.ext.graphviz` extension can now output SVG
+    instead of PNG images, controlled by the
+    :confval:`graphviz_output_format` config value.
+  - Added ``alt`` option to :rst:dir:`graphviz` extension directives.
+  - Added ``exclude`` argument to :func:`.autodoc.between`.
 
 * Translations:
 
   - Added Turkish translation, thanks to Firat Ozgul.
   - Added Catalan translation, thanks to Pau Fernández.
   - Added simplified Chinese translation.
+  - Added Danish translation, thanks to Hjorth Larsen.
+  - Added Lithuanian translation, thanks to Dalius Dobravolskas.
 
 
-Release 0.6.7 (in development)
+Release 0.6.8 (in development)
 ==============================
 
+* #445: Fix links to result pages when using the search function
+  of HTML built with the ``dirhtml`` builder.
+
+* #444: In templates, properly re-escape values treated with the
+  "striptags" Jinja filter.
+
+
+Release 0.6.7 (Jun 05, 2010)
+============================
+
+* #440: Remove usage of a Python >= 2.5 API in the ``literalinclude``
+  directive.
+
+* Fix a bug that prevented some references being generated in the
+  LaTeX builder.
+
+* #428: Add some missing CSS styles for standard docutils classes.
+
+* #432: Fix UnicodeErrors while building LaTeX in translated locale.
+
 
 Release 0.6.6 (May 25, 2010)
 ============================
 * Director: http://packages.python.org/director/
 * F2py: http://www.f2py.org/html/
 * GeoDjango: http://geodjango.org/docs/
+* gevent: http://www.gevent.org/
+* Google Wave API: http://wave-robot-python-client.googlecode.com/svn/trunk/pydocs/index.html
 * GSL Shell: http://www.nongnu.org/gsl-shell/
 * Hedge: http://documen.tician.de/hedge/
 * Kaa: http://doc.freevo.org/api/kaa/
 * Fityk: http://www.unipress.waw.pl/fityk/
 * MapServer: http://mapserver.org/
 * Matplotlib: http://matplotlib.sourceforge.net/
+* Music21: http://mit.edu/music21/doc/html/contents.html
 * MyHDL: http://www.myhdl.org/doc/0.6/
 * NetworkX: http://networkx.lanl.gov/
 * Pweave: http://mpastell.com/pweave/
 * PyEphem: http://rhodesmill.org/pyephem/
 * Pylons: http://pylonshq.com/docs/en/0.9.7/
 * PyMOTW: http://www.doughellmann.com/PyMOTW/
+* qooxdoo: http://manual.qooxdoo.org/current
 * Roundup: http://www.roundup-tracker.org/
 * Selenium: http://seleniumhq.org/docs/
 * Self: http://selflanguage.org/

File doc/config.rst

 
    * ``ca`` -- Catalan
    * ``cs`` -- Czech
+   * ``da`` -- Danish
    * ``de`` -- German
    * ``en`` -- English
    * ``es`` -- Spanish
    * ``fr`` -- French
    * ``hr`` -- Croatian
    * ``it`` -- Italian
+   * ``lt`` -- Lithuanian
    * ``nl`` -- Dutch
    * ``pl`` -- Polish
    * ``pt_BR`` -- Brazilian Portuguese
    * *author*: Author for the LaTeX document.  The same LaTeX markup caveat as
      for *title* applies.  Use ``\and`` to separate multiple authors, as in:
      ``'John \and Sarah'``.
-   * *documentclass*: Must be one of ``'manual'`` or ``'howto'``.  Only "manual"
-     documents will get appendices.  Also, howtos will have a simpler title
-     page.
+   * *documentclass*: Normally, one of ``'manual'`` or ``'howto'`` (provided by
+     Sphinx).  Other document classes can be given, but they must include the
+     "sphinx" package in order to define Sphinx' custom LaTeX commands.
+     "howto" documents will not get appendices.  Also, howtos will have a simpler
+     title page.
    * *toctree_only*: Must be ``True`` or ``False``.  If ``True``, the *startdoc*
      document itself is not included in the output, only the documents
      referenced by it via TOC trees.  With this option, you can put extra stuff

File doc/domains.rst

 :mod:`codecs` module, ``:py:func:`open``` always refers to the built-in
 function, while ``:py:func:`.open``` refers to :func:`codecs.open`.
 
+Also, if the name is prefixed with a dot, and no exact match is found, the
+target is taken as a suffix and all object names with that suffix are
+searched.  For example, ``:py:meth:`.TarFile.close``` references the
+``tarfile.TarFile.close()`` function, even if the current module is not
+``tarfile``.  Since this can get ambiguous, if there is more than one possible
+match, you will get a warning from Sphinx.
+
 A similar heuristic is used to determine whether the name is an attribute of the
 currently documented class.
 
    Reference a C++ object.  You can give the full signature (and need to, for
    overloaded functions.)
 
+   .. note::
+
+      Sphinx' syntax to give references a custom title can interfere with
+      linking to template classes, if nothing follows the closing angle
+      bracket, i.e. if the link looks like this: ``:cpp:class:`MyClass<T>```.
+      This is interpreted as a link to ``T`` with a title of ``MyClass``.
+      In this case, please escape the opening angle bracket with a backslash,
+      like this: ``:cpp:class:`MyClass\<T>```.
+
+.. admonition:: Note on References
+
+   It is currently impossible to link to a specific version of an
+   overloaded method.  Currently the C++ domain is the first domain
+   that has basic support for overloaded methods and until there is more
+   data for comparison we don't want to select a bad syntax to reference a
+   specific overload.  Currently Sphinx will link to the first overloaded
+   version of the method / function.
+
 
 The Standard Domain
 -------------------

File doc/intro.rst

File contents unchanged.

File doc/markup/inline.rst

      a reference ``:ref:`my-figure``` would insert a reference to the figure
      with link text "Figure caption".
 
+     The same works for tables that are given an explicit caption using the
+     :dudir:`table` directive.
+
    * Labels that aren't placed before a section title can still be referenced
      to, but you must give the link an explicit title, using this syntax:
      ``:ref:`Link title <label-name>```.

File doc/markup/toctree.rst

 
    This directive inserts a "TOC tree" at the current location, using the
    individual TOCs (including "sub-TOC trees") of the documents given in the
-   directive body (whose path is relative to the document the directive occurs
-   in).  A numeric ``maxdepth`` option may be given to indicate the depth of the
-   tree; by default, all levels are included. [#]_
+   directive body.  Relative document names (not beginning with a slash) are
+   relative to the document the directive occurs in, absolute names are relative
+   to the source directory.  A numeric ``maxdepth`` option may be given to
+   indicate the depth of the tree; by default, all levels are included. [#]_
 
    Consider this example (taken from the Python docs' library reference index)::
 

File doc/rest.rst

 
   - :dudir:`raw` (include raw target-format markup)
   - :dudir:`include` (include reStructuredText from another file)
+    -- in Sphinx, when given an absolute include file path, this directive takes
+    it as relative to the source directory
   - :dudir:`class` (assign a class attribute to the next element) [1]_
 
 * HTML specifics:
 See the :duref:`reST reference for substitutions <substitution-definitions>`
 for details.
 
-If you want to use some substitutions for all documents, put them into a
-separate file and include it into all documents you want to use them in, using
-the :rst:dir:`include` directive.  Be sure to give the include file a file name
-extension differing from that of other source files, to avoid Sphinx finding it
-as a standalone document.
+If you want to use some substitutions for all documents, put them into
+:confval:`rst_prolog` or put them into a separate file and include it into all
+documents you want to use them in, using the :rst:dir:`include` directive.  (Be
+sure to give the include file a file name extension differing from that of other
+source files, to avoid Sphinx finding it as a standalone document.)
 
 Sphinx defines some default substitutions, see :ref:`default-substitutions`.
 

File doc/templating.rst

 
 .. data:: meta
 
-   Document metadata, see :ref:`metadata`.
+   Document metadata (a dictionary), see :ref:`metadata`.
 
 .. data:: sourcename
 
 
    * ``maxdepth`` (defaults to the max depth selected in the toctree directive):
      the maximum depth of the tree; set it to ``-1`` to allow unlimited depth
+
+   * ``titles_only`` (false by default): if true, put only toplevel document
+     titles in the tree

File sphinx/__init__.py

 import sys
 from os import path
 
-__version__ = '1.0b1+'
-__released__ = '1.0b1'  # used when Sphinx builds its own docs
+__version__ = '1.0b2+'
+__released__ = '1.0b2'  # used when Sphinx builds its own docs
 
 package_dir = path.abspath(path.dirname(__file__))
 

File sphinx/application.py

 from cStringIO import StringIO
 
 from docutils import nodes
-from docutils.parsers.rst import Directive, convert_directive_function, \
+from docutils.parsers.rst import convert_directive_function, \
      directives, roles
 
 import sphinx
                 setattr(translator, 'depart_'+node.__name__, depart)
 
     def _directive_helper(self, obj, content=None, arguments=None, **options):
-        if isinstance(obj, clstypes) and issubclass(obj, Directive):
+        if isinstance(obj, (types.FunctionType, types.MethodType)):
+            obj.content = content
+            obj.arguments = arguments or (0, 0, False)
+            obj.options = options
+            return convert_directive_function(obj)
+        else:
             if content or arguments or options:
                 raise ExtensionError('when adding directive classes, no '
                                      'additional arguments may be given')
             return obj
-        else:
-            obj.content = content
-            obj.arguments = arguments or (0, 0, False)
-            obj.options = options
-            return convert_directive_function(obj)
 
     def add_directive(self, name, obj, content=None, arguments=None, **options):
         directives.register_directive(

File sphinx/builders/html.py

 from sphinx.builders import Builder
 from sphinx.application import ENV_PICKLE_FILENAME
 from sphinx.highlighting import PygmentsBridge
-from sphinx.util.console import bold, darkgreen
+from sphinx.util.console import bold, darkgreen, brown
 from sphinx.writers.html import HTMLWriter, HTMLTranslator, \
      SmartyPantsHTMLTranslator
 
     def copy_image_files(self):
         # copy image files
         if self.images:
-            self.info(bold('copying images...'), nonl=True)
             ensuredir(path.join(self.outdir, '_images'))
-            for src, dest in self.images.iteritems():
-                self.info(' '+src, nonl=1)
+            for src in self.status_iterator(self.images, 'copying images... ',
+                                            brown, len(self.images)):
+                dest = self.images[src]
                 try:
                     copyfile(path.join(self.srcdir, src),
                              path.join(self.outdir, '_images', dest))
                 except Exception, err:
                     self.warn('cannot copy image file %r: %s' %
                               (path.join(self.srcdir, src), err))
-            self.info()
 
     def copy_download_files(self):
         # copy downloadable files
         if self.env.dlfiles:
-            self.info(bold('copying downloadable files...'), nonl=True)
             ensuredir(path.join(self.outdir, '_downloads'))
-            for src, (_, dest) in self.env.dlfiles.iteritems():
-                self.info(' '+src, nonl=1)
+            for src in self.status_iterator(self.env.dlfiles,
+                                            'copying downloadable files... ',
+                                            brown, len(self.env.dlfiles)):
+                dest = self.env.dlfiles[src][1]
                 try:
                     copyfile(path.join(self.srcdir, src),
                              path.join(self.outdir, '_downloads', dest))
                 except Exception, err:
                     self.warn('cannot copy downloadable file %r: %s' %
                               (path.join(self.srcdir, src), err))
-            self.info()
 
     def copy_static_files(self):
         # copy static files
         if self.indexer is not None and title:
             self.indexer.feed(pagename, title, doctree)
 
-    def _get_local_toctree(self, docname, collapse=True, maxdepth=0):
+    def _get_local_toctree(self, docname, collapse=True, **kwds):
         return self.render_partial(self.env.get_toctree_for(
-            docname, self, collapse))['fragment']
+            docname, self, collapse, **kwds))['fragment']
 
     def get_outfilename(self, pagename):
         return path.join(self.outdir, os_path(pagename) + self.out_suffix)
 
         return outfilename
 
+    def prepare_writing(self, docnames):
+        StandaloneHTMLBuilder.prepare_writing(self, docnames)
+        self.globalcontext['no_search_suffix'] = True
+
 
 class SingleFileHTMLBuilder(StandaloneHTMLBuilder):
     """

File sphinx/builders/latex.py

                 encoding='utf-8')
             self.info("processing " + targetname + "... ", nonl=1)
             doctree = self.assemble_doctree(docname, toctree_only,
-                appendices=((docclass == 'manual') and
+                appendices=((docclass != 'howto') and
                             self.config.latex_appendices or []))
             self.post_process_images(doctree)
             self.info("writing... ", nonl=1)

File sphinx/config.py

         self.extensions = config.get('extensions', [])
 
     def check_unicode(self, warn):
-        # check all string values for non-ASCII characters in
-        # bytestrings, since that can
+        # check all string values for non-ASCII characters in bytestrings,
+        # since that can result in UnicodeErrors all over the place
         for name, value in self._raw_config.iteritems():
             if isinstance(value, str) and nonascii_re.search(value):
                 warn('the config value %r is set to a string with non-ASCII '

File sphinx/directives/code.py

         codec_info = codecs.lookup(encoding)
         try:
             f = codecs.StreamReaderWriter(open(fn, 'U'),
-                    codec_info.streamreader, codec_info.streamwriter, 'strict')
+                    codec_info[2], codec_info[3], 'strict')
             lines = f.readlines()
             f.close()
         except (IOError, OSError):

File sphinx/directives/other.py

     :license: BSD, see LICENSE for details.
 """
 
+import os
+
 from docutils import nodes
 from docutils.parsers.rst import Directive, directives
 
         return [node]
 
 
+from docutils.parsers.rst.directives.misc import Include as BaseInclude
+
+class Include(BaseInclude):
+    """
+    Like the standard "Include" directive, but interprets absolute paths
+    correctly.
+    """
+
+    def run(self):
+        if self.arguments[0].startswith('/') or \
+               self.arguments[0].startswith(os.sep):
+            env = self.state.document.settings.env
+            self.arguments[0] = os.path.join(env.srcdir, self.arguments[0][1:])
+        return BaseInclude.run(self)
+
+
 directives.register_directive('toctree', TocTree)
 directives.register_directive('sectionauthor', Author)
 directives.register_directive('moduleauthor', Author)
 directives.register_directive('acks', Acks)
 directives.register_directive('hlist', HList)
 directives.register_directive('only', Only)
+directives.register_directive('include', Include)
 
 # register the standard rst class directive under a different name
 from docutils.parsers.rst.directives.misc import Class

File sphinx/domains/cpp.py

         signode['ids'].append(theid)
         signode['first'] = (not self.names)
         self.state.document.note_explicit_target(signode)
-        self.env.domaindata['cpp']['objects'][name] = \
-            (self.env.docname, self.objtype)
+
+        self.env.domaindata['cpp']['objects'].setdefault(name,
+            (self.env.docname, self.objtype, theid))
 
         indextext = self.get_index_text(name)
         if indextext:
     }
 
     def clear_doc(self, docname):
-        for fullname, (fn, _) in self.data['objects'].items():
+        for fullname, (fn, _, _) in self.data['objects'].items():
             if fn == docname:
                 del self.data['objects'][fullname]
 
             if name not in self.data['objects']:
                 return None
             obj = self.data['objects'][name]
-            if obj[1] != typ:
+            if obj[1] not in self.objtypes_for_role(typ):
                 return None
-            return make_refnode(builder, fromdocname, obj[0], expr.get_id(),
+            return make_refnode(builder, fromdocname, obj[0], obj[2],
                                 contnode, name)
 
         parser = DefinitionParser(target)
         return _create_refnode(expr.prefix(parent))
 
     def get_objects(self):
-        for refname, (docname, type) in self.data['objects'].iteritems():
+        for refname, (docname, type, theid) in self.data['objects'].iteritems():
             yield (refname, refname, type, docname, refname, 1)

File sphinx/domains/python.py

     def find_obj(self, env, modname, classname, name, type, searchorder=0):
         """
         Find a Python object for "name", perhaps using the given module and/or
-        classname.
+        classname.  Returns a list of (name, object entry) tuples.
         """
         # skip parens
         if name[-2:] == '()':
             return None, None
 
         objects = self.data['objects']
+        matches = []
 
         newname = None
         if searchorder == 1:
                 newname = modname + '.' + name
             elif name in objects:
                 newname = name
+            else:
+                # "fuzzy" searching mode
+                searchname = '.' + name
+                matches = [(name, objects[name]) for name in objects
+                           if name.endswith(searchname)]
         else:
             if name in objects:
                 newname = name
             elif type in ('func', 'meth') and '.' not in name and \
                  'object.' + name in objects:
                 newname = 'object.' + name
-        if newname is None:
-            return None, None
-        return newname, objects[newname]
+        if newname is not None:
+            matches.append((newname, objects[newname]))
+        return matches
 
     def resolve_xref(self, env, fromdocname, builder,
-                     typ, target, node, contnode):
-        if (typ == 'mod' or
-            typ == 'obj' and target in self.data['modules']):
+                     type, target, node, contnode):
+        if (type == 'mod' or
+            type == 'obj' and target in self.data['modules']):
             docname, synopsis, platform, deprecated = \
                 self.data['modules'].get(target, ('','','', ''))
             if not docname:
             modname = node.get('py:module')
             clsname = node.get('py:class')
             searchorder = node.hasattr('refspecific') and 1 or 0
-            name, obj = self.find_obj(env, modname, clsname,
-                                      target, typ, searchorder)
-            if not obj:
+            matches = self.find_obj(env, modname, clsname, target,
+                                    type, searchorder)
+            if not matches:
                 return None
-            else:
-                return make_refnode(builder, fromdocname, obj[0], name,
-                                    contnode, name)
+            elif len(matches) > 1:
+                env.warn(fromdocname,
+                         'more than one target found for cross-reference '
+                         '%r: %s' % (target,
+                                     ', '.join(match[0] for match in matches)),
+                         node.line)
+            name, obj = matches[0]
+            return make_refnode(builder, fromdocname, obj[0], name,
+                                contnode, name)
 
     def get_objects(self):
         for modname, info in self.data['modules'].iteritems():

File sphinx/domains/rst.py

             self.state.document.note_explicit_target(signode)
 
             objects = self.env.domaindata['rst']['objects']
-            if (self.objtype, name) in objects:
+            key = (self.objtype, name)
+            if key in objects:
                 self.env.warn(self.env.docname,
                               'duplicate description of %s %s, ' %
                               (self.objtype, name) +
                               'other instance in ' +
-                              self.env.doc2path(objects[name][0]),
+                              self.env.doc2path(objects[key]),
                               self.lineno)
-            objects[self.objtype, name] = self.env.docname
+            objects[key] = self.env.docname
         indextext = self.get_index_text(self.objtype, name)
         if indextext:
             self.indexnode['entries'].append(('single', indextext,
     def resolve_xref(self, env, fromdocname, builder, typ, target, node,
                      contnode):
         objects = self.data['objects']
-
-        if not (typ, target) in objects:
-            return None
-        return make_refnode(builder, fromdocname, objects[typ, target][0],
-                            target, contnode, target)
+        objtypes = self.objtypes_for_role(typ)
+        for objtype in objtypes:
+            if (objtype, target) in objects:
+                return make_refnode(builder, fromdocname,
+                                    objects[objtype, target],
+                                    target, contnode, target)
 
     def get_objects(self):
         for (typ, name), docname in self.data['objects'].iteritems():

File sphinx/domains/std.py

                         break
                 else:
                     continue
+            elif node.tagname == 'table':
+                for n in node:
+                    if n.tagname == 'title':
+                        sectname = clean_astext(n)
+                        break
+                else:
+                    continue
             else:
                 # anonymous-only labels
                 continue

File sphinx/environment.py

 from sphinx.util.nodes import clean_astext, make_refnode, extract_messages
 from sphinx.util.osutil import movefile, SEP, ustrftime
 from sphinx.util.matching import compile_matchers
+from sphinx.util.pycompat import all
 from sphinx.errors import SphinxError, ExtensionError
 from sphinx.locale import _
 
     'input_encoding': 'utf-8-sig',
     'doctitle_xform': False,
     'sectsubtitle_xform': False,
+    'halt_level': 5,
 }
 
 # This is increased every time an environment attribute is added
 
 class HandleCodeBlocks(Transform):
     """
-    Move doctest blocks out of blockquotes.
+    Several code block related transformations.
     """
     default_priority = 210
 
     def apply(self):
+        # move doctest blocks out of blockquotes
         for node in self.document.traverse(nodes.block_quote):
-            if len(node.children) == 1 and isinstance(node.children[0],
-                                                      nodes.doctest_block):
-                node.replace_self(node.children[0])
+            if all(isinstance(child, nodes.doctest_block) for child
+                     in node.children):
+                node.replace_self(node.children)
+        # combine successive doctest blocks
+        #for node in self.document.traverse(nodes.doctest_block):
+        #    if node not in node.parent.children:
+        #        continue
+        #    parindex = node.parent.index(node)
+        #    while len(node.parent) > parindex+1 and \
+        #            isinstance(node.parent[parindex+1], nodes.doctest_block):
+        #        node[0] = nodes.Text(node[0] + '\n\n' +
+        #                             node.parent[parindex+1][0])
+        #        del node.parent[parindex+1]
 
 
 class SortIds(Transform):
                                 imgtype = imghdr.what(f)
                             finally:
                                 f.close()
-                        except (OSError, IOError):
-                            self.warn(docname,
-                                      'image file %s not readable' % filename)
+                        except (OSError, IOError), err:
+                            self.warn(docname, 'image file %s not '
+                                      'readable: %s' % (filename, err),
+                                      node.line)
                         if imgtype:
                             candidates['image/' + imgtype] = new_imgpath
             else:
             node['refuri'] = node['anchorname'] or '#'
         return toc
 
-    def get_toctree_for(self, docname, builder, collapse, maxdepth=0):
+    def get_toctree_for(self, docname, builder, collapse, **kwds):
         """Return the global TOC nodetree."""
         doctree = self.get_doctree(self.config.master_doc)
         toctrees = []
+        if 'includehidden' not in kwds:
+            kwds['includehidden'] = True
+        if 'maxdepth' not in kwds:
+            kwds['maxdepth'] = 0
+        kwds['collapse'] = collapse
         for toctreenode in doctree.traverse(addnodes.toctree):
             toctree = self.resolve_toctree(docname, builder, toctreenode,
-                                           prune=True, collapse=collapse,
-                                           maxdepth=maxdepth,
-                                           includehidden=True)
+                                           prune=True, **kwds)
             toctrees.append(toctree)
         if not toctrees:
             return None
         finally:
             f.close()
         doctree.settings.env = self
-        doctree.reporter = Reporter(self.doc2path(docname), 2, 4,
+        doctree.reporter = Reporter(self.doc2path(docname), 2, 5,
                                     stream=WarningStream(self._warnfunc))
         return doctree
 

File sphinx/ext/autodoc.py

             lines.append('')
     return process
 
-def between(marker, what=None, keepempty=False):
+def between(marker, what=None, keepempty=False, exclude=False):
     """
-    Return a listener that only keeps lines between lines that match the
-    *marker* regular expression.  If no line matches, the resulting docstring
-    would be empty, so no change will be made unless *keepempty* is true.
+    Return a listener that either keeps, or if *exclude* is True excludes, lines
+    between lines that match the *marker* regular expression.  If no line
+    matches, the resulting docstring would be empty, so no change will be made
+    unless *keepempty* is true.
 
     If *what* is a sequence of strings, only docstrings of a type in *what* will
     be processed.
         if what and what_ not in what:
             return
         deleted = 0
-        delete = True
+        delete = not exclude
         orig_lines = lines[:]
         for i, line in enumerate(orig_lines):
             if delete:

File sphinx/ext/intersphinx.py

         # decide whether the inventory must be read: always read local
         # files; remote ones only if the cache time is expired
         if '://' not in inv or uri not in cache \
-               or cache[uri][0] < cache_time:
+               or cache[uri][1] < cache_time:
             app.info('loading intersphinx inventory from %s...' % inv)
             invdata = fetch_inventory(app, uri, inv)
             if invdata:

File sphinx/ext/viewcode.py

         # now that we have code lines (starting at index 1), insert anchors for
         # the collected tags (HACK: this only works if the tag boundaries are
         # properly nested!)
-        maxindex = len(lines)
+        maxindex = len(lines) - 1
         for name, docname in used.iteritems():
             type, start, end = tags[name]
             backlink = urito(pagename, docname) + '#' + modname + '.' + name

File sphinx/locale/da/LC_MESSAGES/sphinx.js

+Documentation.addTranslations({"locale": "da", "plural_expr": "(n != 1)", "messages": {"Search Results": "S\u00f8geresultater", "Preparing search...": "Forbereder s\u00f8gning...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Din s\u00f8gning gav ingen resultater. Kontroll\u00e9r venligst at alle ord er stavet korrekt, og at du har valgt nok kategorier.", "Search finished, found %s page(s) matching the search query.": "S\u00f8gningen fuldf\u00f8rt - fandt %s sider for denne s\u00f8gning.", ", in ": ", i ", "Permalink to this headline": "Permalink til denne overskrift", "Searching": "S\u00f8ger", "Permalink to this definition": "Permalink til denne definition", "Hide Search Matches": "Skjul s\u00f8geresultater"}});

File sphinx/locale/da/LC_MESSAGES/sphinx.mo

Binary file added.

File sphinx/locale/da/LC_MESSAGES/sphinx.po

+# Translations template for Sphinx.
+# Copyright (C) 2009 The Sphinx Team
+# This file is distributed under the same license as the Sphinx project.
+#
+# Ask Hjorth Larsen <asklarsen@gmail.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx 1.0pre/[?1034h2e1ab15e035e\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2009-11-08 16:28+0100\n"
+"PO-Revision-Date: 2010-06-03 23:47+0200\n"
+"Last-Translator: Ask Hjorth Larsen <asklarsen@gmail.com>\n"
+"Language-Team: Danish <dansk@dansk-gruppen.dk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.4\n"
+
+# 21. april, 2010
+#: sphinx/environment.py:130 sphinx/writers/latex.py:184
+#, python-format
+msgid "%B %d, %Y"
+msgstr "%d. %B, %Y"
+
+#: sphinx/environment.py:348 sphinx/themes/basic/genindex-single.html:2
+#: sphinx/themes/basic/genindex-split.html:2
+#: sphinx/themes/basic/genindex-split.html:5
+#: sphinx/themes/basic/genindex.html:2 sphinx/themes/basic/genindex.html:5
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
+msgid "Index"
+msgstr "Indeks"
+
+#: sphinx/environment.py:349 sphinx/writers/latex.py:189
+msgid "Module Index"
+msgstr "Modulindeks"
+
+# Ikke 'Søg på side'
+#: sphinx/environment.py:350 sphinx/themes/basic/defindex.html:16
+msgid "Search Page"
+msgstr "Søgeside"
+
+#: sphinx/roles.py:167
+#, python-format
+msgid "Python Enhancement Proposals!PEP %s"
+msgstr "Python Enhancement Proposals!PEP %s"
+
+#: sphinx/builders/changes.py:70
+msgid "Builtins"
+msgstr "Indbyggede"
+
+#: sphinx/builders/changes.py:72
+msgid "Module level"
+msgstr "Modulniveau"
+
+# Apr 21, 2010
+#: sphinx/builders/html.py:224
+#, python-format
+msgid "%b %d, %Y"
+msgstr "%d. %b, %Y"
+
+#: sphinx/builders/html.py:243 sphinx/themes/basic/defindex.html:21
+msgid "General Index"
+msgstr "Generelt indeks"
+
+#: sphinx/builders/html.py:243
+msgid "index"
+msgstr "indeks"
+
+#: sphinx/builders/html.py:247 sphinx/builders/htmlhelp.py:220
+#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
+#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
+#: sphinx/themes/scrolls/modindex.html:2 sphinx/themes/scrolls/modindex.html:13
+msgid "Global Module Index"
+msgstr "Globalt modulindeks"
+
+#: sphinx/builders/html.py:248
+msgid "modules"
+msgstr "moduler"
+
+#: sphinx/builders/html.py:304
+msgid "next"
+msgstr "næste"
+
+#: sphinx/builders/html.py:313
+msgid "previous"
+msgstr "forrige"
+
+#: sphinx/builders/latex.py:162
+msgid " (in "
+msgstr " (i "
+
+#: sphinx/directives/__init__.py:78 sphinx/directives/__init__.py:79
+#: sphinx/directives/__init__.py:80 sphinx/directives/__init__.py:81
+msgid "Raises"
+msgstr "Rejser"
+
+#: sphinx/directives/__init__.py:82 sphinx/directives/__init__.py:83
+#: sphinx/directives/__init__.py:84
+msgid "Variable"
+msgstr "Variabel"
+
+#: sphinx/directives/__init__.py:85 sphinx/directives/__init__.py:86
+#: sphinx/directives/__init__.py:92 sphinx/directives/__init__.py:93
+msgid "Returns"
+msgstr "Returnerer"
+
+#: sphinx/directives/__init__.py:94
+msgid "Return type"
+msgstr "Returtype"
+
+#: sphinx/directives/__init__.py:169
+msgid "Parameter"
+msgstr "Parameter"
+
+#: sphinx/directives/__init__.py:173
+msgid "Parameters"
+msgstr "Parametre"
+
+#: sphinx/directives/other.py:127
+msgid "Section author: "
+msgstr "Afsnitsforfatter: "
+
+#: sphinx/directives/other.py:129
+msgid "Module author: "
+msgstr "Modulforfatter: "
+
+#: sphinx/directives/other.py:131
+msgid "Author: "
+msgstr "Forfatter: "
+
+#: sphinx/directives/other.py:233
+msgid "See also"
+msgstr "Se også"
+
+#: sphinx/domains/c.py:124
+#, python-format
+msgid "%s (C function)"
+msgstr "%s (C-funktion)"
+
+#: sphinx/domains/c.py:126
+#, python-format
+msgid "%s (C member)"
+msgstr "%s (C-medlem)"
+
+#: sphinx/domains/c.py:128
+#, python-format
+msgid "%s (C macro)"
+msgstr "%s (C-makro)"
+
+#: sphinx/domains/c.py:130
+#, python-format
+msgid "%s (C type)"
+msgstr "%s (C-type)"
+
+#: sphinx/domains/c.py:132
+#, python-format
+msgid "%s (C variable)"
+msgstr "%s (C-variabel)"
+
+#: sphinx/domains/c.py:162
+msgid "C function"
+msgstr "C-funktion"
+
+#: sphinx/domains/c.py:163
+msgid "C member"
+msgstr "C-medlem"
+
+#: sphinx/domains/c.py:164
+msgid "C macro"
+msgstr "C-makro"
+
+#: sphinx/domains/c.py:165
+msgid "C type"
+msgstr "C-type"
+
+#: sphinx/domains/c.py:166
+msgid "C variable"
+msgstr "C-variabel"
+
+#: sphinx/domains/python.py:186
+#, python-format
+msgid "%s() (built-in function)"
+msgstr "%s() (indbygget funktion)"
+
+#: sphinx/domains/python.py:187 sphinx/domains/python.py:244
+#: sphinx/domains/python.py:256 sphinx/domains/python.py:269
+#, python-format
+msgid "%s() (in module %s)"
+msgstr "%s() (i modulet %s)"
+
+#: sphinx/domains/python.py:190
+#, python-format
+msgid "%s (built-in variable)"
+msgstr "%s (indbygget variabel)"
+
+#: sphinx/domains/python.py:191 sphinx/domains/python.py:282
+#, python-format
+msgid "%s (in module %s)"
+msgstr "%s (i modulet %s)"
+
+#: sphinx/domains/python.py:207
+#, python-format
+msgid "%s (built-in class)"
+msgstr "%s (indbygget klasse)"
+
+#: sphinx/domains/python.py:208
+#, python-format
+msgid "%s (class in %s)"
+msgstr "%s (klasse i %s)"
+
+#: sphinx/domains/python.py:248
+#, python-format
+msgid "%s() (%s.%s method)"
+msgstr "%s() (metode i %s.%s)"
+
+#: sphinx/domains/python.py:250
+#, python-format
+msgid "%s() (%s method)"
+msgstr "%s() (metode i %s)"
+
+#: sphinx/domains/python.py:260
+#, python-format
+msgid "%s() (%s.%s static method)"
+msgstr "%s() (statisk metode i %s.%s)"
+
+#: sphinx/domains/python.py:263
+#, python-format
+msgid "%s() (%s static method)"
+msgstr "%s() (statisk metode i %s)"
+
+#: sphinx/domains/python.py:273
+#, python-format
+msgid "%s() (%s.%s class method)"
+msgstr "%s() (klassemetode i %s.%s)"
+
+#: sphinx/domains/python.py:276
+#, python-format
+msgid "%s() (%s class method)"
+msgstr "%s() (klassemetode i %s)"
+
+#: sphinx/domains/python.py:286
+#, python-format
+msgid "%s (%s.%s attribute)"
+msgstr "%s (attribut i %s.%s)"
+
+#: sphinx/domains/python.py:288
+#, python-format
+msgid "%s (%s attribute)"
+msgstr "%s (attribut i %s)"
+
+#: sphinx/domains/python.py:334
+msgid "Platforms: "
+msgstr "Platforme: "
+
+#: sphinx/domains/python.py:340
+#, python-format
+msgid "%s (module)"
+msgstr "%s (modul)"
+
+#: sphinx/domains/python.py:396
+msgid "function"
+msgstr "funktion"
+
+#: sphinx/domains/python.py:397
+msgid "data"
+msgstr "data"
+
+#: sphinx/domains/python.py:398
+msgid "class"
+msgstr "klasse"
+
+#: sphinx/domains/python.py:399 sphinx/locale/__init__.py:161
+msgid "exception"
+msgstr "undtagelse"
+
+#: sphinx/domains/python.py:400
+msgid "method"
+msgstr "metode"
+
+#: sphinx/domains/python.py:401
+msgid "attribute"
+msgstr "attribut"
+
+#: sphinx/domains/python.py:402 sphinx/locale/__init__.py:157
+msgid "module"
+msgstr "modul"
+
+#: sphinx/domains/std.py:67 sphinx/domains/std.py:83
+#, python-format
+msgid "environment variable; %s"
+msgstr "miljøvariabel; %s"
+
+#: sphinx/domains/std.py:156
+#, python-format
+msgid "%scommand line option; %s"
+msgstr "%skommandolinjetilvalg; %s"
+
+#: sphinx/domains/std.py:324
+msgid "glossary term"
+msgstr "begreb i ordliste"
+
+#: sphinx/domains/std.py:325
+msgid "grammar token"
+msgstr "grammatisk element"
+
+#: sphinx/domains/std.py:326
+msgid "environment variable"
+msgstr "miljøvariabel"
+
+#: sphinx/domains/std.py:327
+msgid "program option"
+msgstr "programtilvalg"
+
+#: sphinx/ext/autodoc.py:892
+#, python-format
+msgid "   Bases: %s"
+msgstr "   Baser: %s"
+
+#: sphinx/ext/autodoc.py:925
+#, python-format
+msgid "alias of :class:`%s`"
+msgstr "alias for :class:`%s`"
+
+#: sphinx/ext/todo.py:40
+msgid "Todo"
+msgstr "Todo"
+
+#: sphinx/ext/todo.py:98
+#, python-format
+msgid "(The original entry is located in %s, line %d and can be found "
+msgstr "(Det oprindelige punkt befinder sig i %s, linje %d, og kan findes "
+
+#: sphinx/ext/todo.py:104
+msgid "here"
+msgstr "her"
+
+#: sphinx/locale/__init__.py:138
+msgid "Attention"
+msgstr "Vær opmærksom"
+
+#: sphinx/locale/__init__.py:139
+msgid "Caution"
+msgstr "Forsigtig"
+
+#: sphinx/locale/__init__.py:140
+msgid "Danger"
+msgstr "Fare"
+
+#: sphinx/locale/__init__.py:141
+msgid "Error"
+msgstr "Fejl"
+
+#: sphinx/locale/__init__.py:142
+msgid "Hint"
+msgstr "Fif"
+
+#: sphinx/locale/__init__.py:143
+msgid "Important"
+msgstr "Vigtigt"
+
+#: sphinx/locale/__init__.py:144
+msgid "Note"
+msgstr "Bemærk"
+
+#: sphinx/locale/__init__.py:145
+msgid "See Also"
+msgstr "Se også"
+
+#: sphinx/locale/__init__.py:146
+msgid "Tip"
+msgstr "Tip"
+
+#: sphinx/locale/__init__.py:147
+msgid "Warning"
+msgstr "Advarsel"
+
+#: sphinx/locale/__init__.py:151
+#, python-format
+msgid "New in version %s"
+msgstr "Ny i version %s"
+
+#: sphinx/locale/__init__.py:152
+#, python-format
+msgid "Changed in version %s"
+msgstr "Ændret i version %s"
+
+#: sphinx/locale/__init__.py:153
+#, python-format
+msgid "Deprecated since version %s"
+msgstr "Deprecieret siden version %s"
+
+#: sphinx/locale/__init__.py:158
+msgid "keyword"
+msgstr "nøgleord"
+
+#: sphinx/locale/__init__.py:159
+msgid "operator"
+msgstr "operator"
+
+#: sphinx/locale/__init__.py:160
+msgid "object"
+msgstr "objekt"
+
+#: sphinx/locale/__init__.py:162
+msgid "statement"
+msgstr "erklæring"
+
+#: sphinx/locale/__init__.py:163
+msgid "built-in function"
+msgstr "indbygget funktion"
+
+#: sphinx/themes/basic/defindex.html:2
+msgid "Overview"
+msgstr "Oversigt"
+
+#: sphinx/themes/basic/defindex.html:11
+msgid "Indices and tables:"
+msgstr "Indeks og tabeller:"
+
+#: sphinx/themes/basic/defindex.html:14
+msgid "Complete Table of Contents"
+msgstr "Fuldstændig indholdsfortegnelse"
+
+#: sphinx/themes/basic/defindex.html:15
+msgid "lists all sections and subsections"
+msgstr "viser alle afsnit og underafsnit"
+
+#: sphinx/themes/basic/defindex.html:17
+msgid "search this documentation"
+msgstr "søg i denne dokumentation"
+
+#: sphinx/themes/basic/defindex.html:20
+msgid "quick access to all modules"
+msgstr "hurtig adgang til alle moduler"
+
+#: sphinx/themes/basic/defindex.html:22
+msgid "all functions, classes, terms"
+msgstr "alle funktioner, klasser, begreber"
+
+#: sphinx/themes/basic/genindex-single.html:5
+#, python-format
+msgid "Index &ndash; %(key)s"
+msgstr "Indeks &ndash; %(key)s"
+
+#: sphinx/themes/basic/genindex-single.html:44
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex-split.html:27
+#: sphinx/themes/basic/genindex.html:54
+msgid "Full index on one page"
+msgstr "Fuldt indeks på én side"
+
+#: sphinx/themes/basic/genindex-split.html:7
+msgid "Index pages by letter"
+msgstr "Indeksér sider efter bogstav"
+
+# refererer til indeks
+#: sphinx/themes/basic/genindex-split.html:15
+msgid "can be huge"
+msgstr "kan være enormt"
+
+#: sphinx/themes/basic/layout.html:10
+msgid "Navigation"
+msgstr "Navigation"
+
+#: sphinx/themes/basic/layout.html:42
+msgid "Table Of Contents"
+msgstr "Indholdsfortegnelse"
+
+#: sphinx/themes/basic/layout.html:48
+msgid "Previous topic"
+msgstr "Forrige emne"
+
+#: sphinx/themes/basic/layout.html:50
+msgid "previous chapter"
+msgstr "forrige kapitel"
+
+#: sphinx/themes/basic/layout.html:53
+msgid "Next topic"
+msgstr "Næste emne"
+
+#: sphinx/themes/basic/layout.html:55
+msgid "next chapter"
+msgstr "næste kapitel"
+
+#: sphinx/themes/basic/layout.html:60
+msgid "This Page"
+msgstr "Denne side"
+
+#: sphinx/themes/basic/layout.html:63
+msgid "Show Source"
+msgstr "Vis kilde"
+
+#: sphinx/themes/basic/layout.html:73
+msgid "Quick search"
+msgstr "Hurtig søgning"
+
+# Referencen fra layout.html:76 er til en søgeknap
+#: sphinx/themes/basic/layout.html:76
+msgid "Go"
+msgstr "Søg"
+
+#: sphinx/themes/basic/layout.html:81
+msgid "Enter search terms or a module, class or function name."
+msgstr "Indtast søgeord eller navnet på et modul, en klasse eller en funktion."
+
+#: sphinx/themes/basic/layout.html:122
+#, python-format
+msgid "Search within %(docstitle)s"
+msgstr "Søg i %(docstitle)s"
+
+#: sphinx/themes/basic/layout.html:131
+msgid "About these documents"
+msgstr "Om disse dokumenter"
+
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/search.html:5
+msgid "Search"
+msgstr "Søg"
+
+#: sphinx/themes/basic/layout.html:140
+msgid "Copyright"
+msgstr "Ophavsret"
+
+#: sphinx/themes/basic/layout.html:187 sphinx/themes/scrolls/layout.html:83
+#, python-format
+msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
+msgstr "&copy; <a href=\"%(path)s\">Ophavsret</a> %(copyright)s."
+
+#: sphinx/themes/basic/layout.html:189 sphinx/themes/scrolls/layout.html:85
+#, python-format
+msgid "&copy; Copyright %(copyright)s."
+msgstr "&copy; Ophavsret %(copyright)s."
+
+# datoformatet passer ikke med "den %(last_updated)s"
+#: sphinx/themes/basic/layout.html:193 sphinx/themes/scrolls/layout.html:89
+#, python-format
+msgid "Last updated on %(last_updated)s."
+msgstr "Sidst opdateret %(last_updated)s."
+
+#: sphinx/themes/basic/layout.html:196 sphinx/themes/scrolls/layout.html:92
+#, python-format
+msgid ""
+"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
+"%(sphinx_version)s."
+msgstr "Bygget med <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> %(sphinx_version)s."
+
+#: sphinx/themes/basic/modindex.html:36 sphinx/themes/scrolls/modindex.html:37
+msgid "Deprecated"
+msgstr "Deprecieret"
+
+#: sphinx/themes/basic/opensearch.xml:4
+#, python-format
+msgid "Search %(docstitle)s"
+msgstr "Søg i %(docstitle)s"
+
+#: sphinx/themes/basic/search.html:9
+msgid ""
+"Please activate JavaScript to enable the search\n"
+"    functionality."
+msgstr ""
+"Aktivér venligst JavaScript for at aktivere\n"
+"    søgefunktionalitet."
+
+#: sphinx/themes/basic/search.html:14
+msgid ""
+"From here you can search these documents. Enter your search\n"
+"    words into the box below and click \"search\". Note that the search\n"
+"    function will automatically search for all of the words. Pages\n"
+"    containing fewer words won't appear in the result list."
+msgstr ""
+"Her fra kan du søge i disse dokumenter. Indtast dine søgeord\n"
+"    i boksen nedenfor og klik på \"søg\". Bemærk at søgefunktionen\n"
+"    automatisk vil søge på alle ordene. Sider, der indeholder\n"
+"    færre ord, vil ikke indgå i resultaterne."
+
+#: sphinx/themes/basic/search.html:21
+msgid "search"
+msgstr "søg"
+
+#: sphinx/themes/basic/search.html:25
+#: sphinx/themes/basic/static/searchtools.js:473
+msgid "Search Results"
+msgstr "Søgeresultater"
+
+#: sphinx/themes/basic/search.html:27
+msgid "Your search did not match any results."
+msgstr "Din søgning gav ingen resultater."
+
+#: sphinx/themes/basic/changes/frameset.html:5
+#: sphinx/themes/basic/changes/versionchanges.html:12
+#, python-format
+msgid "Changes in Version %(version)s &mdash; %(docstitle)s"
+msgstr "Ændringer i version %(version)s &mdash; %(docstitle)s"
+
+#: sphinx/themes/basic/changes/rstsource.html:5
+#, python-format
+msgid "%(filename)s &mdash; %(docstitle)s"
+msgstr "%(filename)s &mdash; %(docstitle)s"
+
+#: sphinx/themes/basic/changes/versionchanges.html:17
+#, python-format
+msgid "Automatically generated list of changes in version %(version)s"
+msgstr "Automatisk oprettet liste af ændringer i version %(version)s"
+
+#: sphinx/themes/basic/changes/versionchanges.html:18
+msgid "Library changes"
+msgstr "Biblioteksændringer"
+
+#: sphinx/themes/basic/changes/versionchanges.html:23
+msgid "C API changes"
+msgstr "Ændringer i C-API"
+
+#: sphinx/themes/basic/changes/versionchanges.html:25
+msgid "Other changes"
+msgstr "Andre ændringer"
+
+#: sphinx/themes/basic/static/doctools.js:138 sphinx/writers/html.py:462
+#: sphinx/writers/html.py:467
+msgid "Permalink to this headline"
+msgstr "Permalink til denne overskrift"
+
+#: sphinx/themes/basic/static/doctools.js:144 sphinx/writers/html.py:80
+msgid "Permalink to this definition"
+msgstr "Permalink til denne definition"
+
+#: sphinx/themes/basic/static/doctools.js:173
+msgid "Hide Search Matches"
+msgstr "Skjul søgeresultater"
+
+#: sphinx/themes/basic/static/searchtools.js:274
+msgid "Searching"
+msgstr "Søger"
+
+#: sphinx/themes/basic/static/searchtools.js:279
+msgid "Preparing search..."
+msgstr "Forbereder søgning..."
+
+#: sphinx/themes/basic/static/searchtools.js:352
+msgid ", in "
+msgstr ", i "
+
+#: sphinx/themes/basic/static/searchtools.js:475
+msgid ""
+"Your search did not match any documents. Please make sure that all words "
+"are spelled correctly and that you've selected enough categories."
+msgstr "Din søgning gav ingen resultater. Kontrollér venligst at alle ord er stavet korrekt, og at du har valgt nok kategorier."
+
+#: sphinx/themes/basic/static/searchtools.js:477
+#, python-format
+msgid "Search finished, found %s page(s) matching the search query."
+msgstr "Søgningen fuldført - fandt %s sider for denne søgning."
+
+#: sphinx/writers/latex.py:187
+msgid "Release"
+msgstr "Udgave"
+
+#: sphinx/writers/latex.py:579
+msgid "Footnotes"
+msgstr "Fodnoter"
+
+#: sphinx/writers/latex.py:647
+msgid "continued from previous page"
+msgstr "fortsat fra forrige side"
+
+#: sphinx/writers/latex.py:652
+msgid "Continued on next page"
+msgstr "Fortsættes på næste side"
+
+#: sphinx/writers/text.py:166
+#, python-format
+msgid "Platform: %s"
+msgstr "Platform: %s"
+
+#: sphinx/writers/text.py:428
+msgid "[image]"
+msgstr "[billede]"
+

File sphinx/locale/fr/LC_MESSAGES/sphinx.js

-Documentation.addTranslations({"locale": "fr", "plural_expr": "(n > 1)", "messages": {"Search Results": "R\u00e9sultats de la recherche", "Preparing search...": "Pr\u00e9paration de la recherche...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Votre recherche ne correspond \u00e0 aucun document. V\u00e9rifiez l'orthographe des termes de recherche et que vous avez s\u00e9lectionn\u00e9 suffisamment de cat\u00e9gories.", "Search finished, found %s page(s) matching the search query.": "La recherche est termin\u00e9e, %s page(s) correspond(ent) \u00e0 la requ\u00eate.", ", in ": ", dans", "Expand sidebar": "", "Permalink to this headline": "Lien permanent vers ce titre", "Searching": "En cours de recherche", "Collapse sidebar": "", "Permalink to this definition": "Lien permanent vers cette d\u00e9finition", "Hide Search Matches": "Cacher les r\u00e9sultats de la recherche"}});
+Documentation.addTranslations({"locale": "fr", "plural_expr": "(n > 1)", "messages": {"Search Results": "R\u00e9sultats de la recherche", "Preparing search...": "Pr\u00e9paration de la recherche...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Votre recherche ne correspond \u00e0 aucun document. V\u00e9rifiez l'orthographe des termes de recherche et que vous avez s\u00e9lectionn\u00e9 suffisamment de cat\u00e9gories.", "Search finished, found %s page(s) matching the search query.": "La recherche est termin\u00e9e, %s page(s) correspond(ent) \u00e0 la requ\u00eate.", ", in ": ", dans", "Expand sidebar": "Agrandir le menu", "Permalink to this headline": "Lien permanent vers ce titre", "Searching": "En cours de recherche", "Collapse sidebar": "R\u00e9duire le menu", "Permalink to this definition": "Lien permanent vers cette d\u00e9finition", "Hide Search Matches": "Cacher les r\u00e9sultats de la recherche"}});

File sphinx/locale/fr/LC_MESSAGES/sphinx.mo

Binary file modified.

File sphinx/locale/fr/LC_MESSAGES/sphinx.po

 # This file is distributed under the same license as the Sphinx project.
 # David Larlet <larlet@gmail.com>, 2008.
 # Sebastien Douche <sdouche@gmail.com>, 2008.
+# Jean-Daniel Browne <jeandaniel.browne@gmail.com>, 2010.
+# Florent Gallaire <fgallaire@gmail.com>, 2010.
 #
 msgid ""
 msgstr ""
 #: sphinx/domains/javascript.py:120
 #, python-format
 msgid "%s (global variable or constant)"
-msgstr ""
+msgstr "%s (variable globale ou constante)"
 
 #: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
 #, python-format
 
 #: sphinx/domains/javascript.py:134
 msgid "Throws"
-msgstr ""
+msgstr "Lance"
 
 #: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
 msgid "data"
-msgstr ""
+msgstr "données"
 
 #: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
 msgid "attribute"
 
 #: sphinx/domains/python.py:501
 msgid "method"
-msgstr ""
+msgstr "méthode"
 
 #: sphinx/domains/python.py:502
 #, fuzzy, python-format
 
 #: sphinx/domains/std.py:328
 msgid "glossary term"
-msgstr ""
+msgstr "terme du glossaire"
 
 #: sphinx/domains/std.py:329
 msgid "grammar token"
-msgstr ""
+msgstr "élément de grammaire"
 
 #: sphinx/domains/std.py:330
 msgid "reference label"
-msgstr ""
+msgstr "étiquette de référence"
 
 #: sphinx/domains/std.py:331
 msgid "environment variable"
 
 #: sphinx/domains/std.py:332
 msgid "program option"
-msgstr ""
+msgstr "option du programme"
 
 #: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
 #: sphinx/themes/basic/genindex-split.html:11
 #: sphinx/ext/autodoc.py:950
 #, python-format
 msgid "alias of :class:`%s`"
-msgstr ""
+msgstr "alias de :class:`%s`"
 
 #: sphinx/ext/todo.py:41
 msgid "Todo"
-msgstr "A faire"
+msgstr "À faire"
 
 #: sphinx/ext/todo.py:109
 #, python-format
 #: sphinx/ext/viewcode.py:129
 #, python-format
 msgid "<h1>Source code for %s</h1>"
-msgstr ""
+msgstr "<h1>Code source de %s</h1>"
 
 #: sphinx/ext/viewcode.py:156
 msgid "Overview: module code"
-msgstr ""
+msgstr "Vue d'ensemble : code du module"
 
 #: sphinx/ext/viewcode.py:157
 msgid "<h1>All modules for which code is available</h1>"
-msgstr ""
+msgstr "<h1>Modules pour lesquels le code est disponible</h1>"
 
 #: sphinx/locale/__init__.py:139
 msgid "Attention"
 msgid ""
 "Please activate JavaScript to enable the search\n"
 "    functionality."
-msgstr ""
+msgstr "Activez le JavaScript pour que la recherche fonctionne\n"
 
 #: sphinx/themes/basic/search.html:23
 #, fuzzy
 
 #: sphinx/themes/default/static/sidebar.js:66
 msgid "Expand sidebar"
-msgstr ""
+msgstr "Agrandir le menu"
 
 #: sphinx/themes/default/static/sidebar.js:79
 #: sphinx/themes/default/static/sidebar.js:106
 msgid "Collapse sidebar"
-msgstr ""
+msgstr "Réduire le menu"
 
 #: sphinx/themes/haiku/layout.html:26
 msgid "Contents"
-msgstr ""
+msgstr "Contenu"
 
 #: sphinx/writers/latex.py:171
 msgid "Release"
 
 #: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
 msgid "Footnotes"
-msgstr ""
+msgstr "Notes de bas de page"
 
 #: sphinx/writers/latex.py:641
 msgid "continued from previous page"
-msgstr ""
+msgstr "Suite de la page précédente"
 
 #: sphinx/writers/latex.py:646
 #, fuzzy
 msgid "Continued on next page"
-msgstr "Index complet sur une seule page"
+msgstr "Suite sur la page suivante"
 
 #: sphinx/writers/text.py:422
 msgid "[image]"

File sphinx/locale/lt/LC_MESSAGES/sphinx.js

+Documentation.addTranslations({"locale": "lt", "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)", "messages": {"Search Results": "Paie\u0161kos rezultatai", "Preparing search...": "Ruo\u0161iama paie\u0161ka...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "J\u016bs\u0173 paie\u0161ka neatitiko joki\u0173 dokument\u0173. Pra\u0161om patikrinti ar visi \u017eod\u017eiai teisingai \u012fvesti ir ar pasirinkote pakankamai kategorij\u0173.", "Search finished, found %s page(s) matching the search query.": "Paie\u0161ka baigta, paie\u0161kos rezultatus atitiko %s puslapis(-iai,-i\u0173)", ", in ": ", kuris yra ", "Expand sidebar": "I\u0161pl\u0117sti \u0161onin\u0119 juost\u0105", "Permalink to this headline": "Nuoroda \u012f \u0161i\u0105 antra\u0161t\u0119", "Searching": "Ie\u0161koma", "Collapse sidebar": "Pasl\u0117pti \u0161onin\u0119 juost\u0105", "Permalink to this definition": "Nuoroda \u012f \u0161\u012f apibr\u0117\u017eim\u0105", "Hide Search Matches": "Pasl\u0117pti paie\u0161kos rezultatus"}});

File sphinx/locale/lt/LC_MESSAGES/sphinx.mo

Binary file added.

File sphinx/locale/lt/LC_MESSAGES/sphinx.po

+# Lithuanian translations for Sphinx.
+# This file is distributed under the same license as the Sphinx project.
+# DALIUS DOBRAVOLSKAS <DALIUS@SANDBOX.LT>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx 1.0pre/8b971dbc7d36\n"
+"Report-Msgid-Bugs-To: dalius@sandbox.lt\n"
+"POT-Creation-Date: 2010-05-24 23:53+0200\n"
+"PO-Revision-Date: 2010-06-19 12:02+0300\n"
+"Last-Translator: Dalius Dobravolskas <dalius@sandbox.lt>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"(n%100<10 || n%100>=20) ? 1 : 2)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.5\n"
+
+#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/writers/manpage.py:67
+#, python-format
+msgid "%B %d, %Y"
+msgstr "%Y-%m-%d"
+
+#: sphinx/roles.py:174
+#, python-format
+msgid "Python Enhancement Proposals!PEP %s"
+msgstr ""
+
+#: sphinx/builders/changes.py:72
+msgid "Builtins"
+msgstr "Įtaisytieji"
+
+#: sphinx/builders/changes.py:74
+msgid "Module level"
+msgstr "Modulio lygis"
+
+#: sphinx/builders/html.py:266
+#, python-format
+msgid "%b %d, %Y"
+msgstr "%Y-%m-%d"
+
+#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+msgid "General Index"
+msgstr "Bendras indeksas"
+
+#: sphinx/builders/html.py:285
+msgid "index"
+msgstr "indeksas"
+
+#: sphinx/builders/html.py:345
+msgid "next"
+msgstr "kitas"
+
+#: sphinx/builders/html.py:354
+msgid "previous"
+msgstr "praeitas"
+
+#: sphinx/builders/latex.py:151
+msgid " (in "
+msgstr " (kuris yra "
+
+#: sphinx/directives/other.py:127
+msgid "Section author: "
+msgstr "Skyriaus autorius: "
+
+#: sphinx/directives/other.py:129
+msgid "Module author: "
+msgstr "Modulio autorius: "
+
+#: sphinx/directives/other.py:131
+msgid "Code author: "
+msgstr "Kodo autorius: "
+
+#: sphinx/directives/other.py:133
+msgid "Author: "
+msgstr "Autorius: "
+
+#: sphinx/directives/other.py:238
+msgid "See also"
+msgstr "Taip pat žiūrėkite"
+
+#: sphinx/domains/__init__.py:253
+#, python-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+msgid "Parameters"
+msgstr "Parametrai"
+
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
+#: sphinx/domains/python.py:59
+msgid "Returns"
+msgstr "Grąžinamos reikšmės"
+
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+msgid "Return type"
+msgstr "Grąžinamos reikšmės tipas"
+
+#: sphinx/domains/c.py:133
+#, python-format
+msgid "%s (C function)"
+msgstr "%s (C funkcija)"
+
+#: sphinx/domains/c.py:135
+#, python-format
+msgid "%s (C member)"
+msgstr "%s (C narys)"
+
+#: sphinx/domains/c.py:137
+#, python-format
+msgid "%s (C macro)"
+msgstr "%s (C makrokomanda)"
+
+#: sphinx/domains/c.py:139
+#, python-format
+msgid "%s (C type)"
+msgstr "%s (C tipas)"
+
+#: sphinx/domains/c.py:141
+#, python-format
+msgid "%s (C variable)"
+msgstr "%s (C kintamasis)"
+
+#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
+#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+msgid "function"
+msgstr "funkcija"
+
+#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+msgid "member"
+msgstr "narys"
+
+#: sphinx/domains/c.py:173
+msgid "macro"
+msgstr "makrokomanda"
+
+#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+msgid "type"
+msgstr "tipas"
+
+#: sphinx/domains/c.py:175
+msgid "variable"
+msgstr "kintamasis"
+
+#: sphinx/domains/cpp.py:876
+#, python-format
+msgid "%s (C++ class)"
+msgstr ""
+
+#: sphinx/domains/cpp.py:891
+#, python-format
+msgid "%s (C++ type)"
+msgstr "%s (C++ tipas)"
+
+#: sphinx/domains/cpp.py:910
+#, python-format
+msgid "%s (C++ member)"
+msgstr "%s (C++ narys)"
+
+#: sphinx/domains/cpp.py:962
+#, python-format
+msgid "%s (C++ function)"
+msgstr "%s (C++ funkcija)"
+
+#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+msgid "class"
+msgstr "klasė"
+
+#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#, python-format
+msgid "%s() (built-in function)"
+msgstr "%s() (itaisytoji funkcija)"
+
+#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#, python-format
+msgid "%s() (%s method)"
+msgstr "%s() (%s metodas)"
+
+#: sphinx/domains/javascript.py:120
+#, python-format
+msgid "%s (global variable or constant)"
+msgstr "%s (globalus kintamasis arba konstanta)"
+
+#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323