summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES37
-rw-r--r--EXAMPLES6
-rw-r--r--doc/builders.rst19
-rw-r--r--doc/concepts.rst12
-rw-r--r--doc/conf.py7
-rw-r--r--doc/config.rst33
-rw-r--r--doc/ext/appapi.rst8
-rw-r--r--doc/ext/autosummary.rst218
-rw-r--r--doc/ext/doctest.rst9
-rw-r--r--doc/ext/extlinks.rst47
-rw-r--r--doc/extensions.rst1
-rw-r--r--doc/markup/code.rst6
-rw-r--r--doc/sphinx-build.13
-rw-r--r--doc/theming.rst1
-rw-r--r--sphinx/__init__.py4
-rw-r--r--sphinx/application.py5
-rw-r--r--sphinx/builder.py28
-rw-r--r--sphinx/builders/__init__.py1
-rw-r--r--sphinx/builders/changes.py1
-rw-r--r--sphinx/builders/devhelp.py132
-rw-r--r--sphinx/builders/html.py40
-rw-r--r--sphinx/config.py7
-rw-r--r--sphinx/directives/code.py11
-rw-r--r--sphinx/directives/other.py7
-rw-r--r--sphinx/environment.py2
-rw-r--r--sphinx/ext/autodoc.py20
-rw-r--r--sphinx/ext/autosummary/__init__.py336
-rw-r--r--sphinx/ext/autosummary/generate.py401
-rw-r--r--sphinx/ext/autosummary/templates/autosummary/base.rst6
-rw-r--r--sphinx/ext/autosummary/templates/autosummary/class.rst30
-rw-r--r--sphinx/ext/autosummary/templates/autosummary/module.rst37
-rw-r--r--sphinx/ext/autosummary/templates/module39
-rw-r--r--sphinx/ext/extlinks.py54
-rw-r--r--sphinx/ext/todo.py2
-rw-r--r--sphinx/highlighting.py13
-rw-r--r--sphinx/locale/cs/LC_MESSAGES/sphinx.po74
-rw-r--r--sphinx/locale/de/LC_MESSAGES/sphinx.po76
-rw-r--r--sphinx/locale/es/LC_MESSAGES/sphinx.po74
-rw-r--r--sphinx/locale/fi/LC_MESSAGES/sphinx.po74
-rw-r--r--sphinx/locale/fr/LC_MESSAGES/sphinx.po74
-rw-r--r--sphinx/locale/it/LC_MESSAGES/sphinx.po74
-rw-r--r--sphinx/locale/ja/LC_MESSAGES/sphinx.po74
-rw-r--r--sphinx/locale/nl/LC_MESSAGES/sphinx.po74
-rw-r--r--sphinx/locale/pl/LC_MESSAGES/sphinx.js2
-rw-r--r--sphinx/locale/pl/LC_MESSAGES/sphinx.mobin7174 -> 8107 bytes
-rw-r--r--sphinx/locale/pl/LC_MESSAGES/sphinx.po113
-rw-r--r--sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po74
-rw-r--r--sphinx/locale/ru/LC_MESSAGES/sphinx.po74
-rw-r--r--sphinx/locale/sl/LC_MESSAGES/sphinx.js2
-rw-r--r--sphinx/locale/sl/LC_MESSAGES/sphinx.mobin7208 -> 8010 bytes
-rw-r--r--sphinx/locale/sl/LC_MESSAGES/sphinx.po136
-rw-r--r--sphinx/locale/sphinx.pot76
-rw-r--r--sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po74
-rw-r--r--sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js1
-rw-r--r--sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mobin0 -> 7906 bytes
-rw-r--r--sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po604
-rw-r--r--sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po74
-rw-r--r--sphinx/quickstart.py33
-rw-r--r--sphinx/roles.py25
-rw-r--r--sphinx/search.py36
-rw-r--r--sphinx/texinputs/sphinxhowto.cls (renamed from sphinx/texinputs/howto.cls)21
-rw-r--r--sphinx/texinputs/sphinxmanual.cls (renamed from sphinx/texinputs/manual.cls)24
-rw-r--r--sphinx/themes/basic/layout.html15
-rw-r--r--sphinx/themes/basic/static/basic.css2
-rw-r--r--sphinx/themes/basic/static/searchtools.js13
-rw-r--r--sphinx/themes/default/static/default.css_t9
-rw-r--r--sphinx/themes/default/theme.conf1
-rw-r--r--sphinx/util/__init__.py25
-rw-r--r--sphinx/writers/latex.py23
-rwxr-xr-xtests/coverage.py110
-rw-r--r--tests/root/includes.txt5
-rw-r--r--tests/test_autosummary.py34
-rw-r--r--tests/test_build.py2
-rw-r--r--tests/test_highlighting.py16
-rw-r--r--tests/test_markup.py2
75 files changed, 2720 insertions, 1083 deletions
diff --git a/CHANGES b/CHANGES
index cf7afdb3..fec1b2bb 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,40 @@
+Release 1.0 (in development)
+============================
+
+* Added ``html_output_encoding`` config value.
+
+* Added ``latexpdf`` target in quickstart Makefile.
+
+* #200: Added ``Sphinx.add_stylesheet()``.
+
+* Added ``titlesonly`` option to ``toctree`` directive.
+
+* Removed the deprecated ``sphinx.builder`` module.
+
+* #193: Added a ``visitedlinkcolor`` theme option to the default
+ theme.
+
+* Added the ``prepend`` and ``append`` options to the
+ ``literalinclude`` directive.
+
+* 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 the ``extlinks`` extension.
+
+* Allow searching for object names including the module name, like
+ ``sys.argv``.
+
+* Many improvements and fixes to the ``autosummary`` extension,
+ thanks to Pauli Virtanen.
+
+* Added ``html_show_copyright`` config value.
+
+* Added simplified Chinese locale.
+
+
Release 0.6.4 (in development)
==============================
diff --git a/EXAMPLES b/EXAMPLES
index ba65cd1b..b6a03dea 100644
--- a/EXAMPLES
+++ b/EXAMPLES
@@ -34,14 +34,17 @@ included, please mail to `the Google group
* mpmath: http://mpmath.googlecode.com/svn/trunk/doc/build/index.html
* MyHDL: http://www.myhdl.org/doc/0.6/
* NetworkX: http://networkx.lanl.gov/
+* NOC: http://trac.nocproject.org/trac/wiki/NocGuide
* NumPy: http://docs.scipy.org/doc/numpy/reference/
* ObjectListView: http://objectlistview.sourceforge.net/python
+* Open ERP: http://doc.openerp.com/
* OpenEXR: http://excamera.com/articles/26/doc/index.html
* OpenLayers: http://docs.openlayers.org/
* openWNS: http://docs.openwns.org/
* Paste: http://pythonpaste.org/script/
* Paver: http://www.blueskyonmars.com/projects/paver/
* Py on Windows: http://timgolden.me.uk/python-on-windows/
+* Pyccuracy: http://www.pyccuracy.org/
* PyCuda: http://documen.tician.de/pycuda/
* PyEphem: http://rhodesmill.org/pyephem/
* Pyevolve: http://pyevolve.sourceforge.net/
@@ -61,6 +64,7 @@ included, please mail to `the Google group
* Sage: http://sagemath.org/doc/
* Satchmo: http://www.satchmoproject.com/docs/svn/
* Scapy: http://www.secdev.org/projects/scapy/doc/
+* SciPy: http://docs.scipy.org/doc/scipy/reference/
* Selenium: http://seleniumhq.org/docs/
* Self: http://selflanguage.org/
* SimPy: http://simpy.sourceforge.net/
@@ -68,12 +72,14 @@ included, please mail to `the Google group
* Sprox: http://sprox.org/
* SQLAlchemy: http://www.sqlalchemy.org/docs/
* Sqlkit: http://sqlkit.argolinux.org/
+* sqlparse: http://python-sqlparse.googlecode.com/svn/docs/api/index.html
* SymPy: http://docs.sympy.org/
* tinyTiM: http://tinytim.sourceforge.net/docs/2.0/
* The Wine Cellar Book: http://www.thewinecellarbook.com/doc/en/
* TurboGears: http://turbogears.org/2.0/docs/
* VOR: http://www.vor-cycling.be/
* WebFaction: http://docs.webfaction.com/
+* Werkzeug: http://werkzeug.pocoo.org/documentation/dev/
* WFront: http://discorporate.us/projects/WFront/
* WTForms: http://wtforms.simplecodes.com/docs/
* Zope 3: e.g. http://docs.carduner.net/z3c-tutorial/
diff --git a/doc/builders.rst b/doc/builders.rst
index bee0094c..9b001105 100644
--- a/doc/builders.rst
+++ b/doc/builders.rst
@@ -36,6 +36,7 @@ The builder's "name" must be given to the **-b** command-line option of
.. versionadded:: 0.6
+.. module:: sphinx.builders.htmlhelp
.. class:: HTMLHelpBuilder
This builder produces the same output as the standalone HTML builder, but
@@ -44,6 +45,24 @@ The builder's "name" must be given to the **-b** command-line option of
Its name is ``htmlhelp``.
+.. module:: sphinx.builders.qthelp
+.. class:: QtHelpBuilder
+
+ This builder produces the same output as the standalone HTML builder, but
+ also generates Qt help collection support files that allow
+ the Qt collection generator to compile them.
+
+ Its name is ``qthelp``.
+
+.. module:: sphinx.builders.devhelp
+.. class:: DevhelpBuilder
+
+ This builder produces the same output as the standalone HTML builder, but
+ also generates `GNOME Devhelp <http://live.gnome.org/devhelp>`__
+ support file that allows the GNOME Devhelp reader to view them.
+
+ Its name is ``devhelp``.
+
.. module:: sphinx.builders.latex
.. class:: LaTeXBuilder
diff --git a/doc/concepts.rst b/doc/concepts.rst
index e6d5fa02..27767211 100644
--- a/doc/concepts.rst
+++ b/doc/concepts.rst
@@ -89,6 +89,15 @@ tables of contents. The ``toctree`` directive is the central element.
Numbering then starts at the heading of ``foo``. Sub-toctrees are
automatically numbered (don't give the ``numbered`` flag to those).
+ If you want only the titles of documents in the tree to show up, not other
+ headings of the same level, you can use the ``titlesonly`` option::
+
+ .. toctree::
+ :titlesonly:
+
+ foo
+ bar
+
You can use "globbing" in toctree directives, by giving the ``glob`` flag
option. All entries are then matched against the list of available
documents, and matches are inserted into the list alphabetically. Example::
@@ -139,6 +148,9 @@ tables of contents. The ``toctree`` directive is the central element.
Added "numbered" and "hidden" options as well as external links and
support for "self" references.
+ .. versionchanged:: 1.0
+ Added "titlesonly" option.
+
Special names
-------------
diff --git a/doc/conf.py b/doc/conf.py
index e1a48aa2..e3952a0b 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -6,7 +6,10 @@ import sys, os, re
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.addons.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo']
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.todo',
+ 'sphinx.ext.autosummary']
+
+extlinks = {'issue': ('http://bugs.python.org/issue', 'issue ')}
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
@@ -71,7 +74,7 @@ latex_logo = '_static/sphinx.png'
# Additional stuff for the LaTeX preamble.
latex_elements = {
- 'fontpkg': '\\usepackage{palatino}'
+ 'fontpkg': '\\usepackage{palatino}',
}
# Put TODOs into the output.
diff --git a/doc/config.rst b/doc/config.rst
index 2e96a749..3ce8d53b 100644
--- a/doc/config.rst
+++ b/doc/config.rst
@@ -185,7 +185,6 @@ General configuration
.. versionadded:: 0.5
-
.. confval:: modindex_common_prefix
A list of prefixes that are ignored for sorting the module index (e.g.,
@@ -195,6 +194,15 @@ General configuration
.. versionadded:: 0.6
+.. confval:: trim_doctest_flags
+
+ If true, doctest flags (comments looking like ``# doctest: FLAG, ...``) at
+ the ends of lines are removed for all code blocks showing interactive Python
+ sessions (i.e. doctests). Default is true. See the extension
+ :mod:`~sphinx.ext.doctest` for more possibilities of including doctests.
+
+ .. versionadded:: 1.0
+
Project information
-------------------
@@ -245,6 +253,7 @@ Project information
* ``ru`` -- Russian
* ``sl`` -- Slovenian
* ``uk_UA`` -- Ukrainian
+ * ``zh_CN`` -- Simplified Chinese
* ``zh_TW`` -- Traditional Chinese
.. confval:: today
@@ -514,6 +523,12 @@ that use Sphinx' HTMLWriter class.
to translate document trees to HTML. Default is ``None`` (use the builtin
translator).
+.. confval:: html_show_copyright
+
+ If true, "(C) Copyright ..." is shown in the HTML footer. Default is ``True``.
+
+ .. versionadded:: 1.0
+
.. confval:: html_show_sphinx
If true, "Created using Sphinx" is shown in the HTML footer. Default is
@@ -521,6 +536,14 @@ that use Sphinx' HTMLWriter class.
.. versionadded:: 0.4
+.. confval:: html_output_encoding
+
+ Encoding of HTML output files. Default is ``'utf-8'``. Note that this
+ encoding name must both be a valid Python encoding name and a valid HTML
+ ``charset`` value.
+
+ .. versionadded:: 1.0
+
.. confval:: htmlhelp_basename
Output file base name for HTML help builder. Default is ``'pydoc'``.
@@ -653,6 +676,14 @@ These options influence LaTeX output.
``'shorthandoff'``
``'printmodindex'``
+.. confval:: latex_docclass
+
+ A dictionary mapping ``'howto'`` and ``'manual'`` to names of real document
+ classes that will be used as the base for the two Sphinx classes. Default
+ is to use ``'article'`` for ``'howto'`` and ``'report'`` for ``'manual'``.
+
+ .. versionadded:: 1.0
+
.. confval:: latex_additional_files
A list of file names, relative to the configuration directory, to copy to the
diff --git a/doc/ext/appapi.rst b/doc/ext/appapi.rst
index 6864d6ba..0a3dae8f 100644
--- a/doc/ext/appapi.rst
+++ b/doc/ext/appapi.rst
@@ -205,6 +205,14 @@ the following public API:
.. versionadded:: 0.5
+.. method:: Sphinx.add_stylesheet(filename)
+
+ Add *filename* to the list of CSS files that the default HTML template will
+ include. Like for :meth:`add_javascript`, the filename must be relative to
+ the HTML static path.
+
+ .. versionadded:: 1.0
+
.. method:: Sphinx.add_lexer(alias, lexer)
Use *lexer*, which must be an instance of a Pygments lexer class, to
diff --git a/doc/ext/autosummary.rst b/doc/ext/autosummary.rst
index a9255857..57abd616 100644
--- a/doc/ext/autosummary.rst
+++ b/doc/ext/autosummary.rst
@@ -6,4 +6,220 @@
.. module:: sphinx.ext.autosummary
:synopsis: Generate autodoc summaries
-TBW.
+.. versionadded:: 0.6
+
+This extension generates function/method/attribute summary lists, similar to
+those output e.g. by Epydoc and other API doc generation tools. This is
+especially useful when your docstrings are long and detailed, and putting each
+one of them on a separate page makes them easier to read.
+
+The :mod:`sphinx.ext.autosummary` extension does this in two parts:
+
+1. There is an :dir:`autosummary` directive for generating summary listings that
+ contain links to the documented items, and short summary blurbs extracted
+ from their docstrings.
+
+2. The convenience script :program:`sphinx-autogen` or the new
+ :confval:`autosummary_generate` config value can be used to generate short
+ "stub" files for the entries listed in the :dir:`autosummary` directives.
+ These by default contain only the corresponding :mod:`sphinx.ext.autodoc`
+ directive.
+
+
+.. directive:: autosummary
+
+ Insert a table that contains links to documented items, and a short summary
+ blurb (the first sentence of the docstring) for each of them. The
+ :dir:`autosummary` directive can also optionally serve as a :dir:`toctree`
+ entry for the included items.
+
+ For example, ::
+
+ .. currentmodule:: sphinx
+
+ .. autosummary::
+
+ environment.BuildEnvironment
+ util.relative_uri
+
+ produces a table like this:
+
+ .. currentmodule:: sphinx
+
+ .. autosummary::
+
+ environment.BuildEnvironment
+ util.relative_uri
+
+ .. currentmodule:: sphinx.ext.autosummary
+
+ Autosummary preprocesses the docstrings and signatures with the same
+ :event:`autodoc-process-docstring` and :event:`autodoc-process-signature`
+ hooks as :mod:`~sphinx.ext.autodoc`.
+
+
+ **Options**
+
+ * If you want the :dir:`autosummary` table to also serve as a :dir:`toctree`
+ entry, use the ``toctree`` option, for example::
+
+ .. autosummary::
+ :toctree: DIRNAME
+
+ sphinx.environment.BuildEnvironment
+ sphinx.util.relative_uri
+
+ The ``toctree`` option also signals to the :program:`sphinx-autogen` script
+ that stub pages should be generated for the entries listed in this
+ directive. The option accepts a directory name as an argument;
+ :program:`sphinx-autogen` will by default place its output in this
+ directory. If no argument is given, output is placed in the same directory
+ as the file that contains the directive.
+
+ * If you don't want the :dir:`autosummary` to show function signatures in the
+ listing, include the ``nosignatures`` option::
+
+ .. autosummary::
+ :nosignatures:
+
+ sphinx.environment.BuildEnvironment
+ sphinx.util.relative_uri
+
+ * You can specify a custom template with the ``template`` option.
+ For example, ::
+
+ .. autosummary::
+ :template: mytemplate.rst
+
+ sphinx.environment.BuildEnvironment
+
+ would use the template :file:`mytemplate.rst` in your
+ :confval:`templates_path` to generate the pages for all entries
+ listed. See `Customizing templates`_ below.
+
+
+:program:`sphinx-autogen` -- generate autodoc stub pages
+--------------------------------------------------------
+
+The :program:`sphinx-autogen` script can be used to conveniently generate stub
+documentation pages for items included in :dir:`autosummary` listings.
+
+For example, the command ::
+
+ $ sphinx-autogen -o generated *.rst
+
+will read all :dir:`autosummary` tables in the :file:`*.rst` files that have the
+``:toctree:`` option set, and output corresponding stub pages in directory
+``generated`` for all documented items. The generated pages by default contain
+text of the form::
+
+ sphinx.util.relative_uri
+ ========================
+
+ .. autofunction:: sphinx.util.relative_uri
+
+If the ``-o`` option is not given, the script will place the output files in the
+directories specified in the ``:toctree:`` options.
+
+
+Generating stub pages automatically
+-----------------------------------
+
+If you do not want to create stub pages with :program:`sphinx-autogen`, you can
+also use this new config value:
+
+.. confval:: autosummary_generate
+
+ Boolean indicating whether to scan all found documents for autosummary
+ directives, and to generate stub pages for each.
+
+ Can also be a list of documents for which stub pages should be generated.
+
+ The new files will be placed in the directories specified in the
+ ``:toctree:`` options of the directives.
+
+
+Customizing templates
+---------------------
+
+You can customize the stub page templates, in a similar way as the HTML Jinja
+templates, see :ref:`templating`. (:class:`~sphinx.application.TemplateBridge`
+is not supported.)
+
+.. note::
+
+ If you find yourself spending much time tailoring the stub templates, this
+ may indicate that it's a better idea to write custom narrative documentation
+ instead.
+
+Autosummary uses the following template files:
+
+- :file:`autosummary/base.rst` -- fallback template
+- :file:`autosummary/module.rst` -- template for modules
+- :file:`autosummary/class.rst` -- template for classes
+- :file:`autosummary/function.rst` -- template for functions
+- :file:`autosummary/attribute.rst` -- template for class attributes
+- :file:`autosummary/method.rst` -- template for class methods
+
+The following variables available in the templates:
+
+.. data:: name
+
+ Name of the documented object, excluding the module and class parts.
+
+.. data:: objname
+
+ Name of the documented object, excluding the module parts.
+
+.. data:: fullname
+
+ Full name of the documented object, including module and class parts.
+
+.. data:: module
+
+ Name of the module the documented object belongs to.
+
+.. data:: class
+
+ Name of the class the documented object belongs to. Only available for
+ methods and attributes.
+
+.. data:: underline
+
+ A string containing ``len(full_name) * '='``.
+
+.. data:: members
+
+ List containing names of all members of the module or class. Only available
+ for modules and classes.
+
+.. data:: functions
+
+ List containing names of "public" functions in the module. Here, "public"
+ here means that the name does not start with an underscore. Only available
+ for modules.
+
+.. data:: classes
+
+ List containing names of "public" classes in the module. Only available for
+ modules.
+
+.. data:: exceptions
+
+ List containing names of "public" exceptions in the module. Only available
+ for modules.
+
+.. data:: methods
+
+ List containing names of "public" methods in the class. Only available for
+ classes.
+
+.. data:: methods
+
+ List containing names of "public" attributes in the class. Only available
+ for classes.
+
+.. note::
+
+ You can use the :dir:`autosummary` directive in the stub pages.
+ Stub pages are generated also based on these directives.
diff --git a/doc/ext/doctest.rst b/doc/ext/doctest.rst
index 19905dc7..1ef2e807 100644
--- a/doc/ext/doctest.rst
+++ b/doc/ext/doctest.rst
@@ -173,9 +173,9 @@ There are also these config values for customizing the doctest extension:
Some more documentation text.
- (Note that no special ``::`` is needed to introduce the block; docutils
- recognizes it from the leading ``>>>``. Also, no additional indentation is
- necessary, though it doesn't hurt.)
+ (Note that no special ``::`` is used to introduce a doctest block; docutils
+ recognizes them from the leading ``>>>``. Also, no additional indentation is
+ used, though it doesn't hurt.)
If this value is left at its default value, the above snippet is interpreted
by the doctest builder exactly like the following::
@@ -196,4 +196,5 @@ There are also these config values for customizing the doctest extension:
Note though that you can't have blank lines in reST doctest blocks. They
will be interpreted as one block ending and another one starting. Also,
removal of ``<BLANKLINE>`` and ``# doctest:`` options only works in
- :dir:`doctest` blocks.
+ :dir:`doctest` blocks, though you may set :confval:`trim_doctest_flags` to
+ achieve the latter in all code blocks with Python console content.
diff --git a/doc/ext/extlinks.rst b/doc/ext/extlinks.rst
new file mode 100644
index 00000000..fb101ff3
--- /dev/null
+++ b/doc/ext/extlinks.rst
@@ -0,0 +1,47 @@
+:mod:`sphinx.ext.extlinks` -- Markup to shorten external links
+==============================================================
+
+.. module:: sphinx.ext.extlinks
+ :synopsis: Allow inserting external links with common base URLs easily.
+.. moduleauthor:: Georg Brandl
+
+.. versionadded:: 1.0
+
+
+This extension is meant to help with the common pattern of having many external
+links that point to URLs on one and the same site, e.g. links to bug trackers,
+version control web interfaces, or simply subpages in other websites. It does
+so by providing aliases to base URLs, so that you only need to give the subpage
+name when creating a link.
+
+Let's assume that you want to include many links to issues at the Sphinx
+tracker, at :samp:`http://bitbucket.org/birkenfeld/sphinx/issue/{num}`. Typing
+this URL again and again is tedious, so you can use :mod:`~sphinx.ext.extlinks`
+to avoid repeating yourself.
+
+The extension adds one new config value:
+
+.. confval:: extlinks
+
+ This config value must be a dictionary of external sites, mapping unique
+ short alias names to a base URL and a *prefix*. For example, to create an
+ alias for the above mentioned issues, you would add ::
+
+ extlinks = {'issue': ('http://bitbucket.org/birkenfeld/sphinx/issue/',
+ 'issue ')}
+
+ Now, you can use the alias name as a new role, e.g. ``:issue:`123```. This
+ then inserts a link to http://bitbucket.org/birkenfeld/sphinx/issue/123.
+
+ The link *caption* depends on the second item in the tuple, the *prefix*:
+
+ - If the prefix is ``None``, the link caption is the full URL.
+ - If the prefix is the empty string, the link caption is the partial URL
+ given in the role content (``123`` in this case.)
+ - If the prefix is a non-empty string, the link caption is the partial URL,
+ prepended by the prefix -- in the above example, the link caption would be
+ ``issue 123``.
+
+ You can also use the usual "explicit title" syntax supported by other roles
+ that generate links, i.e. ``:issue:`this issue <123>```. In this case, the
+ *prefix* is not relevant.
diff --git a/doc/extensions.rst b/doc/extensions.rst
index 5eb26c14..0bc9b5b7 100644
--- a/doc/extensions.rst
+++ b/doc/extensions.rst
@@ -51,6 +51,7 @@ These extensions are built in and can be activated by respective entries in the
ext/ifconfig
ext/coverage
ext/todo
+ ext/extlinks
Third-party extensions
diff --git a/doc/markup/code.rst b/doc/markup/code.rst
index 93cd127b..8c223297 100644
--- a/doc/markup/code.rst
+++ b/doc/markup/code.rst
@@ -143,11 +143,17 @@ Includes
string option, only lines that precede the first lines containing that string
are included.
+ You can prepend and/or append a line to the included code, using the
+ ``prepend`` and ``append`` option, respectively. This is useful e.g. for
+ highlighting PHP code that doesn't include the ``<?php``/``?>`` markers.
+
.. versionadded:: 0.4.3
The ``encoding`` option.
.. versionadded:: 0.6
The ``pyobject``, ``lines``, ``start-after`` and ``end-before`` options,
as well as support for absolute filenames.
+ .. versionadded:: 1.0
+ The ``prepend`` and ``append`` options.
.. rubric:: Footnotes
diff --git a/doc/sphinx-build.1 b/doc/sphinx-build.1
index 498771c9..a3df16d0 100644
--- a/doc/sphinx-build.1
+++ b/doc/sphinx-build.1
@@ -31,6 +31,9 @@ Generates files for CHM generation.
\fBqthelp\fR
Generates files for Qt help collection generation.
.TP
+\fBdevhelp\fR
+Generates files for GNOME Devhelp help viewer.
+.TP
\fBlatex\fR
Generates a LaTeX version of the documentation.
.TP
diff --git a/doc/theming.rst b/doc/theming.rst
index d1d3b27a..5b4b648c 100644
--- a/doc/theming.rst
+++ b/doc/theming.rst
@@ -86,6 +86,7 @@ Sphinx comes with a selection of themes to choose from:
- **bgcolor** (CSS color): Body background color.
- **textcolor** (CSS color): Body text color.
- **linkcolor** (CSS color): Body link color.
+ - **visitedlinkcolor** (CSS color): Body color for visited links.
- **headbgcolor** (CSS color): Background color for headings.
- **headtextcolor** (CSS color): Text color for headings.
- **headlinkcolor** (CSS color): Link color for headings.
diff --git a/sphinx/__init__.py b/sphinx/__init__.py
index 5b5980ed..e6fb54b4 100644
--- a/sphinx/__init__.py
+++ b/sphinx/__init__.py
@@ -12,8 +12,8 @@
import sys
from os import path
-__version__ = '0.6.3+'
-__released__ = '0.6.3' # used when Sphinx builds its own docs
+__version__ = '1.0'
+__released__ = '1.0 (hg)' # used when Sphinx builds its own docs
package_dir = path.abspath(path.dirname(__file__))
diff --git a/sphinx/application.py b/sphinx/application.py
index b4280892..0c26b131 100644
--- a/sphinx/application.py
+++ b/sphinx/application.py
@@ -324,6 +324,11 @@ class Sphinx(object):
StandaloneHTMLBuilder.script_files.append(
posixpath.join('_static', filename))
+ def add_stylesheet(self, filename):
+ from sphinx.builders.html import StandaloneHTMLBuilder
+ StandaloneHTMLBuilder.css_files.append(
+ posixpath.join('_static', filename))
+
def add_lexer(self, alias, lexer):
from sphinx.highlighting import lexers
if lexers is None:
diff --git a/sphinx/builder.py b/sphinx/builder.py
deleted file mode 100644
index 13c56e18..00000000
--- a/sphinx/builder.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
- sphinx.builder
- ~~~~~~~~~~~~~~
-
- .. warning::
-
- This module is only kept for API compatibility; new code should
- import these classes directly from the sphinx.builders package.
-
- :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS.
- :license: BSD, see LICENSE for details.
-"""
-
-import warnings
-
-from sphinx.builders import Builder
-from sphinx.builders.text import TextBuilder
-from sphinx.builders.html import StandaloneHTMLBuilder, WebHTMLBuilder, \
- PickleHTMLBuilder, JSONHTMLBuilder
-from sphinx.builders.latex import LaTeXBuilder
-from sphinx.builders.changes import ChangesBuilder
-from sphinx.builders.htmlhelp import HTMLHelpBuilder
-from sphinx.builders.linkcheck import CheckExternalLinksBuilder
-
-warnings.warn('The sphinx.builder module is deprecated; please import '
- 'builders from the respective sphinx.builders submodules.',
- DeprecationWarning, stacklevel=2)
diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py
index 3fb0d469..a8fc8871 100644
--- a/sphinx/builders/__init__.py
+++ b/sphinx/builders/__init__.py
@@ -386,6 +386,7 @@ BUILTIN_BUILDERS = {
'json': ('html', 'JSONHTMLBuilder'),
'web': ('html', 'PickleHTMLBuilder'),
'htmlhelp': ('htmlhelp', 'HTMLHelpBuilder'),
+ 'devhelp': ('devhelp', 'DevhelpBuilder'),
'qthelp': ('qthelp', 'QtHelpBuilder'),
'latex': ('latex', 'LaTeXBuilder'),
'text': ('text', 'TextBuilder'),
diff --git a/sphinx/builders/changes.py b/sphinx/builders/changes.py
index d9898aeb..c1ea14a8 100644
--- a/sphinx/builders/changes.py
+++ b/sphinx/builders/changes.py
@@ -93,6 +93,7 @@ class ChangesBuilder(Builder):
'libchanges': sorted(libchanges.iteritems()),
'apichanges': sorted(apichanges),
'otherchanges': sorted(otherchanges.iteritems()),
+ 'show_copyright': self.config.html_show_copyright,
'show_sphinx': self.config.html_show_sphinx,
}
f = codecs.open(path.join(self.outdir, 'index.html'), 'w', 'utf8')
diff --git a/sphinx/builders/devhelp.py b/sphinx/builders/devhelp.py
new file mode 100644
index 00000000..ba117e62
--- /dev/null
+++ b/sphinx/builders/devhelp.py
@@ -0,0 +1,132 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.builders.devhelp
+ ~~~~~~~~~~~~~~~~~~~~~~~
+
+ Build HTML documentation and Devhelp_ support files.
+
+ .. _Devhelp: http://live.gnome.org/devhelp
+
+ :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+import os
+import cgi
+import sys
+from os import path
+
+from docutils import nodes
+
+from sphinx import addnodes
+from sphinx.builders.html import StandaloneHTMLBuilder
+
+try:
+ import xml.etree.ElementTree as etree
+except ImportError:
+ try:
+ import lxml.etree as etree
+ except ImportError:
+ try:
+ import elementtree.ElementTree as etree
+ except ImportError:
+ import cElementTree.ElemenTree as etree
+
+try:
+ import gzip
+ def comp_open(filename, mode='rb'):
+ return gzip.open(filename + '.gz', mode)
+except ImportError:
+ def comp_open(filename, mode='rb'):
+ return open(filename, mode)
+
+
+class DevhelpBuilder(StandaloneHTMLBuilder):
+ """
+ Builder that also outputs GNOME Devhelp file.
+
+ """
+ name = 'devhelp'
+
+ # don't copy the reST source
+ copysource = False
+ supported_image_types = ['image/png', 'image/gif', 'image/jpeg']
+
+ # don't add links
+ add_permalinks = False
+ # don't add sidebar etc.
+ embedded = True
+
+ def init(self):
+ StandaloneHTMLBuilder.init(self)
+ self.out_suffix = '.html'
+
+ def handle_finish(self):
+ self.build_devhelp(self.outdir, self.config.devhelp_basename)
+
+ def build_devhelp(self, outdir, outname):
+ self.info('dumping devhelp index...')
+
+ # Basic info
+ root = etree.Element('book',
+ title=self.config.html_title,
+ name=self.config.project,
+ link="index.html",
+ version=self.config.version)
+ tree = etree.ElementTree(root)
+
+ # TOC
+ chapters = etree.SubElement(root, 'chapters')
+
+ tocdoc = self.env.get_and_resolve_doctree(
+ self.config.master_doc, self, prune_toctrees=False)
+
+ def write_toc(node, parent):
+ if isinstance(node, addnodes.compact_paragraph) or \
+ isinstance(node, nodes.bullet_list):
+ for subnode in node:
+ write_toc(subnode, parent)
+ elif isinstance(node, nodes.list_item):
+ item = etree.SubElement(parent, 'sub')
+ for subnode in node:
+ write_toc(subnode, item)
+ elif isinstance(node, nodes.reference):
+ parent.attrib['link'] = node['refuri']
+ parent.attrib['name'] = node.astext().encode('utf-8')
+
+ def istoctree(node):
+ return isinstance(node, addnodes.compact_paragraph) and \
+ node.has_key('toctree')
+
+ for node in tocdoc.traverse(istoctree):
+ write_toc(node, chapters)
+
+ # Index
+ functions = etree.SubElement(root, 'functions')
+ index = self.env.create_index(self)
+
+ def write_index(title, refs, subitems):
+ if len(refs) == 0:
+ pass
+ elif len(refs) == 1:
+ etree.SubElement(functions, 'function',
+ name=title, link=refs[0])
+ else:
+ for i, ref in enumerate(refs):
+ etree.SubElement(functions, 'function',
+ name="%s [%d]" % (title, i), link=ref)
+
+ if subitems:
+ for subitem in subitems:
+ write_index(subitem[0], subitem[1], [])
+
+ for (key, group) in index:
+ for title, (refs, subitems) in group:
+ write_index(title, refs, subitems)
+
+ # Dump the XML file
+ f = comp_open(path.join(outdir, outname + '.devhelp'), 'w')
+ try:
+ tree.write(f)
+ finally:
+ f.close()
diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py
index c2b00fb5..54327fa1 100644
--- a/sphinx/builders/html.py
+++ b/sphinx/builders/html.py
@@ -22,7 +22,7 @@ except ImportError:
from docutils import nodes
from docutils.io import DocTreeInput, StringOutput
-from docutils.core import publish_parts
+from docutils.core import Publisher, publish_parts
from docutils.utils import new_document
from docutils.frontend import OptionParser
from docutils.readers.doctree import Reader as DoctreeReader
@@ -71,6 +71,11 @@ class StandaloneHTMLBuilder(Builder):
# This is a class attribute because it is mutated by Sphinx.add_javascript.
script_files = ['_static/jquery.js', '_static/doctools.js']
+ # Dito for this one.
+ css_files = []
+
+ # cached publisher object for snippets
+ _publisher = None
def init(self):
# a hash of all config values that, if changed, cause a full rebuild
@@ -110,7 +115,8 @@ class StandaloneHTMLBuilder(Builder):
style = self.theme.get_confstr('theme', 'pygments_style', 'none')
else:
style = 'sphinx'
- self.highlighter = PygmentsBridge('html', style)
+ self.highlighter = PygmentsBridge('html', style,
+ self.config.trim_doctest_flags)
def init_translator_class(self):
if self.config.html_translator_class:
@@ -180,13 +186,24 @@ class StandaloneHTMLBuilder(Builder):
"""Utility: Render a lone doctree node."""
doc = new_document('<partial node>')
doc.append(node)
- return publish_parts(
- doc,
- source_class=DocTreeInput,
- reader=DoctreeReader(),
- writer=HTMLWriter(self),
- settings_overrides={'output_encoding': 'unicode'}
- )
+
+ if self._publisher is None:
+ self._publisher = Publisher(
+ source_class = DocTreeInput,
+ destination_class=StringOutput)
+ self._publisher.set_components('standalone',
+ 'restructuredtext', 'pseudoxml')
+
+ pub = self._publisher
+
+ pub.reader = DoctreeReader()
+ pub.writer = HTMLWriter(self)
+ pub.process_programmatic_settings(
+ None, {'output_encoding': 'unicode'}, None)
+ pub.set_source(doc, None)
+ pub.set_destination(None, None)
+ pub.publish()
+ return pub.writer.parts
def prepare_writing(self, docnames):
from sphinx.search import IndexBuilder
@@ -244,11 +261,13 @@ class StandaloneHTMLBuilder(Builder):
use_opensearch = self.config.html_use_opensearch,
docstitle = self.config.html_title,
shorttitle = self.config.html_short_title,
+ show_copyright = self.config.html_show_copyright,
show_sphinx = self.config.html_show_sphinx,
has_source = self.config.html_copy_source,
show_source = self.config.html_show_sourcelink,
file_suffix = self.out_suffix,
script_files = self.script_files,
+ css_files = self.css_files,
sphinx_version = __version__,
style = stylename,
rellinks = rellinks,
@@ -646,6 +665,7 @@ class StandaloneHTMLBuilder(Builder):
ctx['pathto'] = pathto
ctx['hasdoc'] = lambda name: name in self.env.all_docs
ctx['customsidebar'] = self.config.html_sidebars.get(pagename)
+ ctx['encoding'] = encoding = self.config.html_output_encoding
ctx['toctree'] = lambda **kw: self._get_local_toctree(pagename, **kw)
ctx.update(addctx)
@@ -658,7 +678,7 @@ class StandaloneHTMLBuilder(Builder):
# outfilename's path is in general different from self.outdir
ensuredir(path.dirname(outfilename))
try:
- f = codecs.open(outfilename, 'w', 'utf-8')
+ f = codecs.open(outfilename, 'w', encoding)
try:
f.write(output)
finally:
diff --git a/sphinx/config.py b/sphinx/config.py
index b9586c2d..b2ef29fb 100644
--- a/sphinx/config.py
+++ b/sphinx/config.py
@@ -54,6 +54,7 @@ class Config(object):
keep_warnings = (False, 'env'),
modindex_common_prefix = ([], 'html'),
rst_epilog = (None, 'env'),
+ trim_doctest_flags = (True, 'env'),
# HTML options
html_theme = ('default', 'html'),
@@ -82,8 +83,10 @@ class Config(object):
html_use_opensearch = ('', 'html'),
html_file_suffix = (None, 'html'),
html_link_suffix = (None, 'html'),
+ html_show_copyright = (True, 'html'),
html_show_sphinx = (True, 'html'),
html_context = ({}, 'html'),
+ html_output_encoding = ('utf-8', 'html'),
# HTML help only options
htmlhelp_basename = (lambda self: make_filename(self.project), None),
@@ -91,6 +94,9 @@ class Config(object):
# Qt help only options
qthelp_basename = (lambda self: make_filename(self.project), None),
+ # Devhelp only options
+ devhelp_basename = (lambda self: make_filename(self.project), None),
+
# LaTeX options
latex_documents = ([], None),
latex_logo = (None, None),
@@ -103,6 +109,7 @@ class Config(object):
latex_font_size = ('10pt', None),
latex_elements = ({}, None),
latex_additional_files = ([], None),
+ latex_docclass = ({}, None),
# now deprecated - use latex_elements
latex_preamble = ('', None),
)
diff --git a/sphinx/directives/code.py b/sphinx/directives/code.py
index 6aaf44b8..4f44c333 100644
--- a/sphinx/directives/code.py
+++ b/sphinx/directives/code.py
@@ -87,6 +87,8 @@ class LiteralInclude(Directive):
'lines': directives.unchanged_required,
'start-after': directives.unchanged_required,
'end-before': directives.unchanged_required,
+ 'prepend': directives.unchanged_required,
+ 'append': directives.unchanged_required,
}
def run(self):
@@ -150,7 +152,9 @@ class LiteralInclude(Directive):
lines = [lines[i] for i in linelist]
startafter = self.options.get('start-after')
- endbefore = self.options.get('end-before')
+ endbefore = self.options.get('end-before')
+ prepend = self.options.get('prepend')
+ append = self.options.get('append')
if startafter is not None or endbefore is not None:
use = not startafter
res = []
@@ -164,6 +168,11 @@ class LiteralInclude(Directive):
res.append(line)
lines = res
+ if prepend:
+ lines.insert(0, prepend + '\n')
+ if append:
+ lines.append(append + '\n')
+
text = ''.join(lines)
retnode = nodes.literal_block(text, text, source=fn)
retnode.line = 1
diff --git a/sphinx/directives/other.py b/sphinx/directives/other.py
index 5eefa48e..50db49ce 100644
--- a/sphinx/directives/other.py
+++ b/sphinx/directives/other.py
@@ -14,7 +14,8 @@ from docutils.parsers.rst import directives
from sphinx import addnodes
from sphinx.locale import pairindextypes
-from sphinx.util import patfilter, ws_re, caption_ref_re, url_re, docname_join
+from sphinx.util import patfilter, ws_re, url_re, docname_join, \
+ explicit_title_re
from sphinx.util.compat import Directive, directive_dwim, make_admonition
@@ -33,6 +34,7 @@ class TocTree(Directive):
'glob': directives.flag,
'hidden': directives.flag,
'numbered': directives.flag,
+ 'titlesonly': directives.flag,
}
def run(self):
@@ -54,7 +56,7 @@ class TocTree(Directive):
continue
if not glob:
# look for explicit titles ("Some Title <document>")
- m = caption_ref_re.match(entry)
+ m = explicit_title_re.match(entry)
if m:
ref = m.group(2)
title = m.group(1)
@@ -97,6 +99,7 @@ class TocTree(Directive):
subnode['glob'] = glob
subnode['hidden'] = 'hidden' in self.options
subnode['numbered'] = 'numbered' in self.options
+ subnode['titlesonly'] = 'titlesonly' in self.options
ret.append(subnode)
return ret
diff --git a/sphinx/environment.py b/sphinx/environment.py
index d5e12eb1..d04fcbf9 100644
--- a/sphinx/environment.py
+++ b/sphinx/environment.py
@@ -1131,6 +1131,8 @@ class BuildEnvironment:
return entries
maxdepth = maxdepth or toctree.get('maxdepth', -1)
+ if not titles_only and toctree.get('titlesonly', False):
+ titles_only = True
# NOTE: previously, this was separate=True, but that leads to artificial
# separation when two or more toctree entries form a logical unit, so
diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py
index a5e90b6f..705853c2 100644
--- a/sphinx/ext/autodoc.py
+++ b/sphinx/ext/autodoc.py
@@ -353,6 +353,16 @@ class Documenter(object):
"""
return None
+ def format_name(self):
+ """
+ Format the name of *self.object*. This normally should be something
+ that can be parsed by the generated directive, but doesn't need to be
+ (Sphinx will display it unparsed then).
+ """
+ # normally the name doesn't contain the module (except for module
+ # directives of course)
+ return '.'.join(self.objpath) or self.modname
+
def format_signature(self):
"""
Format the signature (arguments and return annotation) of the object.
@@ -364,8 +374,7 @@ class Documenter(object):
else:
# try to introspect the signature
args = self.format_args()
- if args is None:
- return ''
+
retann = self.retann
result = self.env.app.emit_firstresult(
@@ -382,11 +391,8 @@ class Documenter(object):
def add_directive_header(self, sig):
"""Add the directive header and options to the generated content."""
directive = getattr(self, 'directivetype', self.objtype)
- # the name to put into the generated directive -- doesn't contain
- # the module (except for module directive of course)
- name_in_directive = '.'.join(self.objpath) or self.modname
- self.add_line(u'.. %s:: %s%s' % (directive, name_in_directive, sig),
- '<autodoc>')
+ name = self.format_name()
+ self.add_line(u'.. %s:: %s%s' % (directive, name, sig), '<autodoc>')
if self.options.noindex:
self.add_line(u' :noindex:', '<autodoc>')
if self.objpath:
diff --git a/sphinx/ext/autosummary/__init__.py b/sphinx/ext/autosummary/__init__.py
index 3d260fd2..dc641674 100644
--- a/sphinx/ext/autosummary/__init__.py
+++ b/sphinx/ext/autosummary/__init__.py
@@ -101,13 +101,63 @@ def autosummary_toc_visit_html(self, node):
"""Hide autosummary toctree list in HTML output."""
raise nodes.SkipNode
-def autosummary_toc_visit_latex(self, node):
- """Show autosummary toctree (= put the referenced pages here) in Latex."""
+def autosummary_noop(self, node):
pass
-def autosummary_noop(self, node):
+
+# -- autosummary_table node ----------------------------------------------------
+
+class autosummary_table(nodes.comment):
pass
+def autosummary_table_visit_html(self, node):
+ """Make the first column of the table non-breaking."""
+ try:
+ tbody = node[0][0][-1]
+ for row in tbody:
+ col1_entry = row[0]
+ par = col1_entry[0]
+ for j, subnode in enumerate(list(par)):
+ if isinstance(subnode, nodes.Text):
+ new_text = unicode(subnode.astext())
+ new_text = new_text.replace(u" ", u"\u00a0")
+ par[j] = nodes.Text(new_text)
+ except IndexError:
+ pass
+
+
+# -- autodoc integration -------------------------------------------------------
+
+try:
+ ismemberdescriptor = inspect.ismemberdescriptor
+ isgetsetdescriptor = inspect.isgetsetdescriptor
+except AttributeError:
+ def ismemberdescriptor(obj):
+ return False
+ isgetsetdescriptor = ismemberdescriptor
+
+def get_documenter(obj):
+ """
+ Get an autodoc.Documenter class suitable for documenting the given object
+ """
+ import sphinx.ext.autodoc as autodoc
+
+ if inspect.isclass(obj):
+ if issubclass(obj, Exception):
+ return autodoc.ExceptionDocumenter
+ return autodoc.ClassDocumenter
+ elif inspect.ismodule(obj):
+ return autodoc.ModuleDocumenter
+ elif inspect.ismethod(obj) or inspect.ismethoddescriptor(obj):
+ return autodoc.MethodDocumenter
+ elif (ismemberdescriptor(obj) or isgetsetdescriptor(obj)
+ or inspect.isdatadescriptor(obj)):
+ return autodoc.AttributeDocumenter
+ elif inspect.isroutine(obj):
+ return autodoc.FunctionDocumenter
+ else:
+ return autodoc.DataDocumenter
+
# -- .. autosummary:: ----------------------------------------------------------
@@ -125,35 +175,38 @@ class Autosummary(Directive):
option_spec = {
'toctree': directives.unchanged,
'nosignatures': directives.flag,
+ 'template': directives.unchanged,
}
- def run(self):
- names = []
- names += [x.strip() for x in self.content if x.strip()]
+ def warn(self, msg):
+ self.warnings.append(self.state.document.reporter.warning(
+ msg, line=self.lineno))
- table, warnings, real_names = get_autosummary(
- names, self.state, 'nosignatures' in self.options)
- node = table
+ def run(self):
+ self.env = env = self.state.document.settings.env
+ self.genopt = {}
+ self.warnings = []
- env = self.state.document.settings.env
- suffix = env.config.source_suffix
- all_docnames = env.found_docs.copy()
- dirname = posixpath.dirname(env.docname)
+ names = [x.strip().split()[0] for x in self.content
+ if x.strip() and re.search(r'^[~a-zA-Z_]', x.strip()[0])]
+ items = self.get_items(names)
+ nodes = self.get_table(items)
if 'toctree' in self.options:
+ suffix = env.config.source_suffix
+ all_docnames = env.found_docs.copy()
+ dirname = posixpath.dirname(env.docname)
+
tree_prefix = self.options['toctree'].strip()
docnames = []
- for name in names:
- name = real_names.get(name, name)
-
- docname = posixpath.join(tree_prefix, name)
+ for name, sig, summary, real_name in items:
+ docname = posixpath.join(tree_prefix, real_name)
if docname.endswith(suffix):
docname = docname[:-len(suffix)]
docname = posixpath.normpath(posixpath.join(dirname, docname))
if docname not in env.found_docs:
- warnings.append(self.state.document.reporter.warning(
- 'toctree references unknown document %r' % docname,
- line=self.lineno))
+ self.warn('toctree references unknown document %r'
+ % docname)
docnames.append(docname)
tocnode = addnodes.toctree()
@@ -163,63 +216,167 @@ class Autosummary(Directive):
tocnode['glob'] = None
tocnode = autosummary_toc('', '', tocnode)
- return warnings + [node] + [tocnode]
- else:
- return warnings + [node]
+ nodes.append(tocnode)
+ return self.warnings + nodes
-def get_autosummary(names, state, no_signatures=False):
- """
- Generate a proper table node for autosummary:: directive.
+ def get_items(self, names):
+ """
+ Try to import the given names, and return a list of
+ ``[(name, signature, summary_string, real_name), ...]``.
+ """
+ env = self.state.document.settings.env
+
+ prefixes = ['']
+ if env.currmodule:
+ prefixes.insert(0, env.currmodule)
+
+ items = []
+
+ max_item_chars = 50
+
+ for name in names:
+ display_name = name
+ if name.startswith('~'):
+ name = name[1:]
+ display_name = name.split('.')[-1]
+
+ try:
+ obj, real_name = import_by_name(name, prefixes=prefixes)
+ except ImportError:
+ self.warn('failed to import %s' % name)
+ items.append((name, '', '', name))
+ continue
+
+ # NB. using real_name here is important, since Documenters
+ # handle module prefixes slightly differently
+ documenter = get_documenter(obj)(self, real_name)
+ if not documenter.parse_name():
+ self.warn('failed to parse name %s' % real_name)
+ items.append((display_name, '', '', real_name))
+ continue
+ if not documenter.import_object():
+ self.warn('failed to import object %s' % real_name)
+ items.append((display_name, '', '', real_name))
+ continue
+
+ # -- Grab the signature
+
+ sig = documenter.format_signature()
+ if not sig:
+ sig = ''
+ else:
+ max_chars = max(10, max_item_chars - len(display_name))
+ sig = mangle_signature(sig, max_chars=max_chars)
+ sig = sig.replace('*', r'\*')
- *names* is a list of names of Python objects to be imported and added to the
- table. *document* is the Docutils document object.
+ # -- Grab the summary
+ doc = list(documenter.process_doc(documenter.get_doc()))
+
+ while doc and not doc[0].strip():
+ doc.pop(0)
+ m = re.search(r"^([A-Z][^A-Z]*?\.\s)", " ".join(doc).strip())
+ if m:
+ summary = m.group(1).strip()
+ elif doc:
+ summary = doc[0].strip()
+ else:
+ summary = ''
+
+ items.append((display_name, sig, summary, real_name))
+
+ return items
+
+ def get_table(self, items):
+ """
+ Generate a proper list of table nodes for autosummary:: directive.
+
+ *items* is a list produced by :meth:`get_items`.
+ """
+ table_spec = addnodes.tabular_col_spec()
+ table_spec['spec'] = 'LL'
+
+ table = autosummary_table('')
+ real_table = nodes.table('')
+ table.append(real_table)
+ group = nodes.tgroup('', cols=2)
+ real_table.append(group)
+ group.append(nodes.colspec('', colwidth=10))
+ group.append(nodes.colspec('', colwidth=90))
+ body = nodes.tbody('')
+ group.append(body)
+
+ def append_row(*column_texts):
+ row = nodes.row('')
+ for text in column_texts:
+ node = nodes.paragraph('')
+ vl = ViewList()
+ vl.append(text, '<autosummary>')
+ self.state.nested_parse(vl, 0, node)
+ try:
+ if isinstance(node[0], nodes.paragraph):
+ node = node[0]
+ except IndexError:
+ pass
+ row.append(nodes.entry('', node))
+ body.append(row)
+
+ for name, sig, summary, real_name in items:
+ qualifier = 'obj'
+ if 'nosignatures' not in self.options:
+ col1 = ':%s:`%s <%s>`\ %s' % (qualifier, name, real_name, sig)
+ else:
+ col1 = ':%s:`%s <%s>`' % (qualifier, name, real_name)
+ col2 = summary
+ append_row(col1, col2)
+
+ return [table_spec, table]
+
+def mangle_signature(sig, max_chars=30):
+ """Reformat a function signature to a more compact form."""
+ sig = re.sub(r"^\((.*)\)$", r"\1", sig) + ", "
+ r = re.compile(r"(?P<name>[a-zA-Z0-9_*]+)(?P<default>=.*?)?, ")
+ items = r.findall(sig)
+
+ args = [name for name, default in items if not default]
+ opts = [name for name, default in items if default]
+
+ sig = limited_join(", ", args, max_chars=max_chars-2)
+ if opts:
+ if not sig:
+ sig = "[%s]" % limited_join(", ", opts, max_chars=max_chars-4)
+ elif len(sig) < max_chars - 4 - 2 - 3:
+ sig += "[, %s]" % limited_join(", ", opts,
+ max_chars=max_chars-len(sig)-4-2)
+
+ return u"(%s)" % sig
+
+def limited_join(sep, items, max_chars=30, overflow_marker="..."):
"""
- document = state.document
-
- real_names = {}
- warnings = []
-
- prefixes = ['']
- prefixes.insert(0, document.settings.env.currmodule)
-
- table = nodes.table('')
- group = nodes.tgroup('', cols=2)
- table.append(group)
- group.append(nodes.colspec('', colwidth=30))
- group.append(nodes.colspec('', colwidth=70))
- body = nodes.tbody('')
- group.append(body)
-
- def append_row(*column_texts):
- row = nodes.row('')
- for text in column_texts:
- node = nodes.paragraph('')
- vl = ViewList()
- vl.append(text, '<autosummary>')
- state.nested_parse(vl, 0, node)
- row.append(nodes.entry('', node))
- body.append(row)
-
- for name in names:
- try:
- obj, real_name = import_by_name(name, prefixes=prefixes)
- except ImportError:
- warnings.append(document.reporter.warning(
- 'failed to import %s' % name))
- append_row(':obj:`%s`' % name, '')
- continue
+ Join a number of strings to one, limiting the length to *max_chars*.
- real_names[name] = real_name
+ If the string overflows this limit, replace the last fitting item by
+ *overflow_marker*.
+
+ Returns: joined_string
+ """
+ full_str = sep.join(items)
+ if len(full_str) < max_chars:
+ return full_str
+
+ n_chars = 0
+ n_items = 0
+ for j, item in enumerate(items):
+ n_chars += len(item) + len(sep)
+ if n_chars < max_chars - len(overflow_marker):
+ n_items += 1
+ else:
+ break
- title = ''
- qualifier = 'obj'
- col1 = ':'+qualifier+':`%s <%s>`' % (name, real_name)
- col2 = title
- append_row(col1, col2)
+ return sep.join(list(items[:n_items]) + [overflow_marker])
- return table, warnings, real_names
+# -- Importing items -----------------------------------------------------------
def import_by_name(name, prefixes=[None]):
"""
@@ -241,14 +398,16 @@ def import_by_name(name, prefixes=[None]):
def _import_by_name(name):
"""Import a Python object given its full name."""
try:
- # try first interpret `name` as MODNAME.OBJ
name_parts = name.split('.')
- try:
- modname = '.'.join(name_parts[:-1])
- __import__(modname)
- return getattr(sys.modules[modname], name_parts[-1])
- except (ImportError, IndexError, AttributeError):
- pass
+
+ # try first interpret `name` as MODNAME.OBJ
+ modname = '.'.join(name_parts[:-1])
+ if modname:
+ try:
+ __import__(modname)
+ return getattr(sys.modules[modname], name_parts[-1])
+ except (ImportError, IndexError, AttributeError):
+ pass
# ... then as MODNAME, MODNAME.OBJ1, MODNAME.OBJ1.OBJ2, ...
last_j = 0
@@ -301,16 +460,25 @@ def autolink_role(typ, rawtext, etext, lineno, inliner,
def process_generate_options(app):
genfiles = app.config.autosummary_generate
+
+ ext = app.config.source_suffix
+
+ if genfiles and not hasattr(genfiles, '__len__'):
+ env = app.builder.env
+ genfiles = [x + ext for x in env.found_docs
+ if os.path.isfile(env.doc2path(x))]
+
if not genfiles:
return
+
from sphinx.ext.autosummary.generate import generate_autosummary_docs
- ext = app.config.source_suffix
- genfiles = [path.join(app.srcdir, genfile +
- (not genfile.endswith(ext) and ext or ''))
+ genfiles = [genfile + (not genfile.endswith(ext) and ext or '')
for genfile in genfiles]
- generate_autosummary_docs(genfiles, warn=app.warn, info=app.info,
- suffix=ext)
+
+ generate_autosummary_docs(genfiles, builder=app.builder,
+ warn=app.warn, info=app.info, suffix=ext,
+ base_path=app.srcdir)
def setup(app):
@@ -318,7 +486,11 @@ def setup(app):
app.setup_extension('sphinx.ext.autodoc')
app.add_node(autosummary_toc,
html=(autosummary_toc_visit_html, autosummary_noop),
- latex=(autosummary_toc_visit_latex, autosummary_noop),
+ latex=(autosummary_noop, autosummary_noop),
+ text=(autosummary_noop, autosummary_noop))
+ app.add_node(autosummary_table,
+ html=(autosummary_table_visit_html, autosummary_noop),
+ latex=(autosummary_noop, autosummary_noop),
text=(autosummary_noop, autosummary_noop))
app.add_directive('autosummary', Autosummary)
app.add_role('autolink', autolink_role)
diff --git a/sphinx/ext/autosummary/generate.py b/sphinx/ext/autosummary/generate.py
index 0a1e0406..f8447e94 100644
--- a/sphinx/ext/autosummary/generate.py
+++ b/sphinx/ext/autosummary/generate.py
@@ -20,219 +20,288 @@
import os
import re
import sys
-import getopt
+import optparse
import inspect
+import pydoc
-from jinja2 import Environment, PackageLoader
+from jinja2 import FileSystemLoader, TemplateNotFound
+from jinja2.sandbox import SandboxedEnvironment
-from sphinx.ext.autosummary import import_by_name
+from sphinx.ext.autosummary import import_by_name, get_documenter
from sphinx.util import ensuredir
+from sphinx.jinja2glue import BuiltinTemplateLoader
-# create our own templating environment, for module template only
-env = Environment(loader=PackageLoader('sphinx.ext.autosummary', 'templates'))
+def main(argv=sys.argv):
+ usage = """%prog [OPTIONS] SOURCEFILE ..."""
+ p = optparse.OptionParser(usage.strip())
+ p.add_option("-o", "--output-dir", action="store", type="string",
+ dest="output_dir", default=None,
+ help="Directory to place all output in")
+ p.add_option("-s", "--suffix", action="store", type="string",
+ dest="suffix", default="rst",
+ help="Default suffix for files (default: %default)")
+ p.add_option("-t", "--templates", action="store", type="string",
+ dest="templates", default=None,
+ help="Custom template directory (default: %default)")
+ options, args = p.parse_args(argv[1:])
+
+ if len(args) < 1:
+ p.error('no input files given')
+ generate_autosummary_docs(args, options.output_dir,
+ "." + options.suffix,
+ template_dir=options.templates)
def _simple_info(msg):
print msg
def _simple_warn(msg):
- print >>sys.stderr, 'WARNING: ' + msg
+ print >> sys.stderr, 'WARNING: ' + msg
+
+# -- Generating output ---------------------------------------------------------
+
+def generate_autosummary_docs(sources, output_dir=None, suffix='.rst',
+ warn=_simple_warn, info=_simple_info,
+ base_path=None, builder=None, template_dir=None):
+
+ showed_sources = list(sorted(sources))
+ if len(showed_sources) > 20:
+ showed_sources = showed_sources[:10] + ['...'] + showed_sources[-10:]
+ info('[autosummary] generating autosummary for: %s' %
+ ', '.join(showed_sources))
-def generate_autosummary_docs(sources, output_dir=None, suffix=None,
- warn=_simple_warn, info=_simple_info):
- info('generating autosummary for: %s' % ', '.join(sources))
if output_dir:
- info('writing to %s' % output_dir)
+ info('[autosummary] writing to %s' % output_dir)
+
+ if base_path is not None:
+ sources = [os.path.join(base_path, filename) for filename in sources]
+
+ # create our own templating environment
+ template_dirs = [os.path.join(os.path.dirname(__file__), 'templates')]
+ if builder is not None:
+ # allow the user to override the templates
+ template_loader = BuiltinTemplateLoader()
+ template_loader.init(builder, dirs=template_dirs)
+ else:
+ if template_dir:
+ template_dirs.insert(0, template_dir)
+ template_loader = FileSystemLoader(template_dirs)
+ template_env = SandboxedEnvironment(loader=template_loader)
+
# read
- names = {}
- for name, loc in get_documented(sources).items():
- for (filename, sec_title, keyword, toctree) in loc:
- if toctree is not None:
- path = os.path.join(os.path.dirname(filename), toctree)
- names[name] = os.path.abspath(path)
+ items = find_autosummary_in_files(sources)
+
+ # remove possible duplicates
+ items = dict([(item, True) for item in items]).keys()
+
+ # keep track of new files
+ new_files = []
# write
- for name, path in sorted(names.items()):
- path = output_dir or path
+ for name, path, template_name in sorted(items):
+ if path is None:
+ # The corresponding autosummary:: directive did not have
+ # a :toctree: option
+ continue
+
+ path = output_dir or os.path.abspath(path)
ensuredir(path)
try:
obj, name = import_by_name(name)
except ImportError, e:
- warn('failed to import %r: %s' % (name, e))
+ warn('[autosummary] failed to import %r: %s' % (name, e))
continue
- fn = os.path.join(path, name + (suffix or '.rst'))
+ fn = os.path.join(path, name + suffix)
+
# skip it if it exists
if os.path.isfile(fn):
continue
+ new_files.append(fn)
+
f = open(fn, 'w')
try:
- if inspect.ismodule(obj):
- # XXX replace this with autodoc's API?
- tmpl = env.get_template('module')
- functions = [getattr(obj, item).__name__
- for item in dir(obj)
- if inspect.isfunction(getattr(obj, item))]
- classes = [getattr(obj, item).__name__
- for item in dir(obj)
- if inspect.isclass(getattr(obj, item))
- and not issubclass(getattr(obj, item), Exception)]
- exceptions = [getattr(obj, item).__name__
- for item in dir(obj)
- if inspect.isclass(getattr(obj, item))
- and issubclass(getattr(obj, item), Exception)]
- rendered = tmpl.render(name=name,
- underline='='*len(name),
- functions=functions,
- classes=classes,
- exceptions=exceptions,
- len_functions=len(functions),
- len_classes=len(classes),
- len_exceptions=len(exceptions))
- f.write(rendered)
+ doc = get_documenter(obj)
+
+ if template_name is not None:
+ template = template_env.get_template(template_name)
else:
- f.write('%s\n%s\n\n' % (name, '='*len(name)))
-
- if inspect.isclass(obj):
- if issubclass(obj, Exception):
- f.write(format_modulemember(name, 'autoexception'))
- else:
- f.write(format_modulemember(name, 'autoclass'))
- elif inspect.ismethod(obj) or inspect.ismethoddescriptor(obj):
- f.write(format_classmember(name, 'automethod'))
- elif callable(obj):
- f.write(format_modulemember(name, 'autofunction'))
- elif hasattr(obj, '__get__'):
- f.write(format_classmember(name, 'autoattribute'))
- else:
- f.write(format_modulemember(name, 'autofunction'))
- finally:
- f.close()
+ try:
+ template = template_env.get_template('autosummary/%s.rst'
+ % doc.objtype)
+ except TemplateNotFound:
+ template = template_env.get_template('autosummary/base.rst')
+
+ def get_members(obj, typ, include_public=[]):
+ items = [
+ name for name in dir(obj)
+ if get_documenter(getattr(obj, name)).objtype == typ
+ ]
+ public = [x for x in items
+ if x in include_public or not x.startswith('_')]
+ return public, items
+
+ ns = {}
+
+ if doc.objtype == 'module':
+ ns['members'] = dir(obj)
+ ns['functions'], ns['all_functions'] = \
+ get_members(obj, 'function')
+ ns['classes'], ns['all_classes'] = \
+ get_members(obj, 'class')
+ ns['exceptions'], ns['all_exceptions'] = \
+ get_members(obj, 'exception')
+ elif doc.objtype == 'class':
+ ns['members'] = dir(obj)
+ ns['methods'], ns['all_methods'] = \
+ get_members(obj, 'method', ['__init__'])
+ ns['attributes'], ns['all_attributes'] = \
+ get_members(obj, 'attribute')
+
+ parts = name.split('.')
+ if doc.objtype in ('method', 'attribute'):
+ mod_name = '.'.join(parts[:-2])
+ cls_name = parts[-2]
+ obj_name = '.'.join(parts[-2:])
+ ns['class'] = cls_name
+ else:
+ mod_name, obj_name = '.'.join(parts[:-1]), parts[-1]
+ ns['fullname'] = name
+ ns['module'] = mod_name
+ ns['objname'] = obj_name
+ ns['name'] = parts[-1]
-def format_modulemember(name, directive):
- parts = name.split('.')
- mod, name = '.'.join(parts[:-1]), parts[-1]
- return '.. currentmodule:: %s\n\n.. %s:: %s\n' % (mod, directive, name)
+ ns['objtype'] = doc.objtype
+ ns['underline'] = len(name) * '='
+ rendered = template.render(**ns)
+ f.write(rendered)
+ finally:
+ f.close()
-def format_classmember(name, directive):
- parts = name.split('.')
- mod, name = '.'.join(parts[:-2]), '.'.join(parts[-2:])
- return '.. currentmodule:: %s\n\n.. %s:: %s\n' % (mod, directive, name)
+ # descend recursively to new files
+ if new_files:
+ generate_autosummary_docs(new_files, output_dir=output_dir,
+ suffix=suffix, warn=warn, info=info,
+ base_path=base_path, builder=builder,
+ template_dir=template_dir)
-title_underline_re = re.compile('^[-=*_^#]{3,}\s*$')
-autodoc_re = re.compile(r'.. auto(function|method|attribute|class|exception'
- '|module)::\s*([A-Za-z0-9_.]+)\s*$')
-autosummary_re = re.compile(r'^\.\.\s+autosummary::\s*')
-module_re = re.compile(r'^\.\.\s+(current)?module::\s*([a-zA-Z0-9_.]+)\s*$')
-autosummary_item_re = re.compile(r'^\s+([_a-zA-Z][a-zA-Z0-9_.]*)\s*')
-toctree_arg_re = re.compile(r'^\s+:toctree:\s*(.*?)\s*$')
+# -- Finding documented entries in files ---------------------------------------
-def get_documented(filenames):
+def find_autosummary_in_files(filenames):
"""
- Find out what items are documented in the given filenames.
-
- Returns a dict of list of (filename, title, keyword, toctree) Keys are
- documented names of objects. The value is a list of locations where the
- object was documented. Each location is a tuple of filename, the current
- section title, the name of the directive, and the value of the :toctree:
- argument (if present) of the directive.
+ Find out what items are documented in source/*.rst.
+ See `find_autosummary_in_lines`.
"""
-
- documented = {}
-
+ documented = []
for filename in filenames:
- current_title = []
- last_line = None
- toctree = None
- current_module = None
- in_autosummary = False
-
f = open(filename, 'r')
- for line in f:
- try:
- if in_autosummary:
- m = toctree_arg_re.match(line)
- if m:
- toctree = m.group(1)
- continue
-
- if line.strip().startswith(':'):
- continue # skip options
-
- m = autosummary_item_re.match(line)
-
- if m:
- name = m.group(1).strip()
- if current_module and \
- not name.startswith(current_module + '.'):
- name = '%s.%s' % (current_module, name)
- documented.setdefault(name, []).append(
- (filename, current_title, 'autosummary', toctree))
- continue
- if line.strip() == '':
- continue
- in_autosummary = False
-
- m = autosummary_re.match(line)
- if m:
- in_autosummary = True
- continue
-
- m = autodoc_re.search(line)
- if m:
- name = m.group(2).strip()
- # XXX look in newer generate.py
- if current_module and \
- not name.startswith(current_module + '.'):
- name = '%s.%s' % (current_module, name)
- if m.group(1) == 'module':
- current_module = name
- documented.setdefault(name, []).append(
- (filename, current_title, 'auto' + m.group(1), None))
- continue
-
- m = title_underline_re.match(line)
- if m and last_line:
- current_title = last_line.strip()
- continue
-
- m = module_re.match(line)
- if m:
- current_module = m.group(2)
- continue
- finally:
- last_line = line
+ lines = f.read().splitlines()
+ documented.extend(find_autosummary_in_lines(lines, filename=filename))
+ f.close()
return documented
-
-def main(argv=sys.argv):
- usage = 'usage: %s [-o output_dir] [-s suffix] sourcefile ...' % sys.argv[0]
+def find_autosummary_in_docstring(name, module=None, filename=None):
+ """
+ Find out what items are documented in the given object's docstring.
+ See `find_autosummary_in_lines`.
+ """
try:
- opts, args = getopt.getopt(argv[1:], 'o:s:')
- except getopt.error:
- print >>sys.stderr, usage
- return 1
-
- output_dir = None
- suffix = None
- for opt, val in opts:
- if opt == '-o':
- output_dir = val
- elif opt == '-s':
- suffix = val
+ obj, real_name = import_by_name(name)
+ lines = pydoc.getdoc(obj).splitlines()
+ return find_autosummary_in_lines(lines, module=name, filename=filename)
+ except AttributeError:
+ pass
+ except ImportError, e:
+ print "Failed to import '%s': %s" % (name, e)
+ return []
+
+def find_autosummary_in_lines(lines, module=None, filename=None):
+ """
+ Find out what items appear in autosummary:: directives in the given lines.
+
+ Returns a list of (name, toctree, template) where *name* is a name
+ of an object and *toctree* the :toctree: path of the corresponding
+ autosummary directive (relative to the root of the file name), and
+ *template* the value of the :template: option. *toctree* and
+ *template* ``None`` if the directive does not have the
+ corresponding options set.
+ """
+ autosummary_re = re.compile(r'^\s*\.\.\s+autosummary::\s*')
+ automodule_re = re.compile(r'^\s*\.\.\s+automodule::\s*([A-Za-z0-9_.]+)\s*$')
+ module_re = re.compile(r'^\s*\.\.\s+(current)?module::\s*([a-zA-Z0-9_.]+)\s*$')
+ autosummary_item_re = re.compile(r'^\s+(~?[_a-zA-Z][a-zA-Z0-9_.]*)\s*.*?')
+ toctree_arg_re = re.compile(r'^\s+:toctree:\s*(.*?)\s*$')
+ template_arg_re = re.compile(r'^\s+:template:\s*(.*?)\s*$')
+
+ documented = []
+
+ toctree = None
+ template = None
+ current_module = module
+ in_autosummary = False
+
+ for line in lines:
+ if in_autosummary:
+ m = toctree_arg_re.match(line)
+ if m:
+ toctree = m.group(1)
+ if filename:
+ toctree = os.path.join(os.path.dirname(filename),
+ toctree)
+ continue
+
+ m = template_arg_re.match(line)
+ if m:
+ template = m.group(1).strip()
+ continue
+
+ if line.strip().startswith(':'):
+ continue # skip options
+
+ m = autosummary_item_re.match(line)
+ if m:
+ name = m.group(1).strip()
+ if name.startswith('~'):
+ name = name[1:]
+ if current_module and \
+ not name.startswith(current_module + '.'):
+ name = "%s.%s" % (current_module, name)
+ documented.append((name, toctree, template))
+ continue
+
+ if not line.strip():
+ continue
+
+ in_autosummary = False
+
+ m = autosummary_re.match(line)
+ if m:
+ in_autosummary = True
+ toctree = None
+ template = None
+ continue
- if len(args) < 1:
- print >>sys.stderr, usage
- return 1
+ m = automodule_re.search(line)
+ if m:
+ current_module = m.group(1).strip()
+ # recurse into the automodule docstring
+ documented.extend(find_autosummary_in_docstring(
+ current_module, filename=filename))
+ continue
+
+ m = module_re.match(line)
+ if m:
+ current_module = m.group(2)
+ continue
- generate_autosummary_docs(args, output_dir, suffix)
+ return documented
if __name__ == '__main__':
- main(sys.argv)
+ main()
diff --git a/sphinx/ext/autosummary/templates/autosummary/base.rst b/sphinx/ext/autosummary/templates/autosummary/base.rst
new file mode 100644
index 00000000..21a0ccd8
--- /dev/null
+++ b/sphinx/ext/autosummary/templates/autosummary/base.rst
@@ -0,0 +1,6 @@
+{{ fullname }}
+{{ underline }}
+
+.. currentmodule:: {{ module }}
+
+.. auto{{ objtype }}:: {{ objname }}
diff --git a/sphinx/ext/autosummary/templates/autosummary/class.rst b/sphinx/ext/autosummary/templates/autosummary/class.rst
new file mode 100644
index 00000000..40494dad
--- /dev/null
+++ b/sphinx/ext/autosummary/templates/autosummary/class.rst
@@ -0,0 +1,30 @@
+{{ fullname }}
+{{ underline }}
+
+.. currentmodule:: {{ module }}
+
+.. autoclass:: {{ objname }}
+
+ {% block methods %}
+ .. automethod:: __init__
+
+ {% if methods %}
+ .. rubric:: Methods
+
+ .. autosummary::
+ {% for item in methods %}
+ ~{{ name }}.{{ item }}
+ {%- endfor %}
+ {% endif %}
+ {% endblock %}
+
+ {% block attributes %}
+ {% if attributes %}
+ .. rubric:: Attributes
+
+ .. autosummary::
+ {% for item in attributes %}
+ ~{{ name }}.{{ item }}
+ {%- endfor %}
+ {% endif %}
+ {% endblock %}
diff --git a/sphinx/ext/autosummary/templates/autosummary/module.rst b/sphinx/ext/autosummary/templates/autosummary/module.rst
new file mode 100644
index 00000000..cc76c9e0
--- /dev/null
+++ b/sphinx/ext/autosummary/templates/autosummary/module.rst
@@ -0,0 +1,37 @@
+{{ fullname }}
+{{ underline }}
+
+.. automodule:: {{ fullname }}
+
+ {% block functions %}
+ {% if functions %}
+ .. rubric:: Functions
+
+ .. autosummary::
+ {% for item in functions %}
+ {{ item }}
+ {%- endfor %}
+ {% endif %}
+ {% endblock %}
+
+ {% block classes %}
+ {% if classes %}
+ .. rubric:: Classes
+
+ .. autosummary::
+ {% for item in classes %}
+ {{ item }}
+ {%- endfor %}
+ {% endif %}
+ {% endblock %}
+
+ {% block exceptions %}
+ {% if exceptions %}
+ .. rubric:: Exceptions
+
+ .. autosummary::
+ {% for item in classes %}
+ {{ item }}
+ {%- endfor %}
+ {% endif %}
+ {% endblock %}
diff --git a/sphinx/ext/autosummary/templates/module b/sphinx/ext/autosummary/templates/module
deleted file mode 100644
index 0cbc8266..00000000
--- a/sphinx/ext/autosummary/templates/module
+++ /dev/null
@@ -1,39 +0,0 @@
-:mod:`{{name}}`
-======{{ underline }}=
-
-
-.. automodule:: {{name}}
-
-{% if len_functions > 0 %}
-Functions
-----------
-{% for item in functions %}
-.. autofunction:: {{item}}
-{% endfor %}
-{% endif %}
-
-{% if len_classes > 0 %}
-Classes
---------
-{% for item in classes %}
-.. autoclass:: {{item}}
- :show-inheritance:
- :members:
- :inherited-members:
- :undoc-members:
-
-{% endfor %}
-{% endif %}
-
-{% if len_exceptions > 0 %}
-Exceptions
-------------
-{% for item in exceptions %}
-.. autoclass:: {{item}}
- :show-inheritance:
- :members:
- :inherited-members:
- :undoc-members:
-
-{% endfor %}
-{% endif %}
diff --git a/sphinx/ext/extlinks.py b/sphinx/ext/extlinks.py
new file mode 100644
index 00000000..8e68681b
--- /dev/null
+++ b/sphinx/ext/extlinks.py
@@ -0,0 +1,54 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.ext.extlinks
+ ~~~~~~~~~~~~~~~~~~~
+
+ Extension to save typing and prevent hard-coding of base URLs in the reST
+ files.
+
+ This adds a new config value called ``extlinks`` that is created like this::
+
+ extlinks = {'exmpl': ('http://example.com/', prefix), ...}
+
+ Now you can use e.g. :exmpl:`foo` in your documents. This will create a
+ link to ``http://example.com/foo``. The link caption depends on the
+ *prefix* value given:
+
+ - If it is ``None``, the caption will be the full URL.
+ - If it is a string (empty or not), the caption will be the prefix prepended
+ to the role content.
+
+ You can also give an explicit caption, e.g. :exmpl:`Foo <foo>`.
+
+ :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from docutils import nodes, utils
+
+from sphinx.util import split_explicit_title
+
+
+def make_link_role(base_url, prefix):
+ def role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
+ text = utils.unescape(text)
+ has_explicit_title, title, url = split_explicit_title(text)
+ # NOTE: not using urlparse.urljoin() here, to allow something like
+ # base_url = 'bugs.python.org/issue' and url = '1024'
+ full_url = base_url + url
+ if not has_explicit_title:
+ if prefix is None:
+ title = full_url
+ else:
+ title = prefix + url
+ pnode = nodes.reference(title, title, refuri=full_url)
+ return [pnode], []
+ return role
+
+def setup_link_roles(app):
+ for name, (base_url, prefix) in app.config.extlinks.iteritems():
+ app.add_role(name, make_link_role(base_url, prefix))
+
+def setup(app):
+ app.add_config_value('extlinks', {}, 'env')
+ app.connect('builder-inited', setup_link_roles)
diff --git a/sphinx/ext/todo.py b/sphinx/ext/todo.py
index d726b0eb..249fb361 100644
--- a/sphinx/ext/todo.py
+++ b/sphinx/ext/todo.py
@@ -94,7 +94,7 @@ def process_todo_nodes(app, doctree, fromdocname):
content = []
for todo_info in env.todo_all_todos:
- para = nodes.paragraph()
+ para = nodes.paragraph(classes=['todo-source'])
filename = env.doc2path(todo_info['docname'], base=None)
description = (
_('(The original entry is located in %s, line %d and '
diff --git a/sphinx/highlighting.py b/sphinx/highlighting.py
index 5bd0fe00..aa1cbd18 100644
--- a/sphinx/highlighting.py
+++ b/sphinx/highlighting.py
@@ -78,6 +78,7 @@ _LATEX_STYLES = r'''
\newcommand\PYGZrb{]}
'''
+doctestopt_re = re.compile(r'#\s*doctest:.+$', re.MULTILINE)
parsing_exceptions = (SyntaxError, UnicodeEncodeError)
if sys.version_info < (2, 5):
@@ -92,7 +93,8 @@ class PygmentsBridge(object):
html_formatter = HtmlFormatter
latex_formatter = LatexFormatter
- def __init__(self, dest='html', stylename='sphinx'):
+ def __init__(self, dest='html', stylename='sphinx',
+ trim_doctest_flags=False):
self.dest = dest
if not pygments:
return
@@ -106,6 +108,7 @@ class PygmentsBridge(object):
stylename)
else:
style = get_style_by_name(stylename)
+ self.trim_doctest_flags = trim_doctest_flags
if dest == 'html':
self.fmter = {False: self.html_formatter(style=style),
True: self.html_formatter(style=style, linenos=True)}
@@ -167,6 +170,8 @@ class PygmentsBridge(object):
source = source.decode()
if not pygments:
return self.unhighlighted(source)
+
+ # find out which lexer to use
if lang in ('py', 'python'):
if source.startswith('>>>'):
# interactive session
@@ -191,6 +196,12 @@ class PygmentsBridge(object):
else:
lexer = lexers[lang] = get_lexer_by_name(lang)
lexer.add_filter('raiseonerror')
+
+ # trim doctest options if wanted
+ if isinstance(lexer, PythonConsoleLexer) and self.trim_doctest_flags:
+ source = doctestopt_re.sub('', source)
+
+ # highlight via Pygments
try:
if self.dest == 'html':
return highlight(source, lexer, self.fmter[bool(linenos)])
diff --git a/sphinx/locale/cs/LC_MESSAGES/sphinx.po b/sphinx/locale/cs/LC_MESSAGES/sphinx.po
index c0557111..500bf1cc 100644
--- a/sphinx/locale/cs/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/cs/LC_MESSAGES/sphinx.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.5\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2008-11-27 18:39+0100\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: Pavel Kosina <pavel.kosina@gmail.com>\n"
"Language-Team: Pavel Kosina <pavel.kosina@gmail.com>\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%d.%m.%Y"
@@ -27,12 +27,12 @@ msgstr "%d.%m.%Y"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Index"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Rejstřík modulů "
@@ -58,34 +58,34 @@ msgstr "Vestavěné funkce "
msgid "Module level"
msgstr "Úroveň modulů"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%d.%m.%Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Rejstřík indexů"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "index"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "Celkový rejstřík modulů"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "moduly"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "další"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "předchozí"
@@ -209,37 +209,37 @@ msgstr "%s (C proměnná)"
msgid "%scommand line option; %s"
msgstr "%s parametry příkazového řádku; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "Platformy: "
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (module)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Autor sekce: "
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Autor modulu: "
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Autor: "
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "Viz také"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -433,40 +433,40 @@ msgstr "hledej"
msgid "Enter search terms or a module, class or function name."
msgstr "Zadej jméno modulu, třídy nebo funkce."
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Hledání uvnitř %(docstitle)s"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "O těchto dokumentech"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Hledání"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Veškerá práva vyhrazena"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Aktualizováno dne %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -507,7 +507,7 @@ msgid "search"
msgstr "hledej"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Výsledky hledání"
@@ -564,15 +564,15 @@ msgstr "Hledám"
msgid "Preparing search..."
msgstr "Připravuji vyhledávání...."
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
msgstr "modul, v"
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ", v"
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
@@ -580,24 +580,24 @@ msgstr ""
"Nenalezli jsme žádný dokument. Ujistěte se prosím, že všechna slova jsou "
"správně a že jste vybral dostatek kategorií."
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr "Vyhledávání skončilo, nalezeno %s stran."
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "Vydání"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
#, fuzzy
msgid "Continued on next page"
msgstr "Plný index na jedné stránce"
diff --git a/sphinx/locale/de/LC_MESSAGES/sphinx.po b/sphinx/locale/de/LC_MESSAGES/sphinx.po
index a054b142..e1d61a20 100644
--- a/sphinx/locale/de/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/de/LC_MESSAGES/sphinx.po
@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2008-08-07 21:40+0200\n"
-"PO-Revision-Date: 2009-08-06 22:49+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: Horst Gutmann <zerok@zerokspot.com>\n"
"Language-Team: de <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%d. %m. %Y"
@@ -25,12 +25,12 @@ msgstr "%d. %m. %Y"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Stichwortverzeichnis"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Modulindex"
@@ -56,34 +56,34 @@ msgstr "Builtins"
msgid "Module level"
msgstr "Modulebene"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%d. %m. %Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Allgemeiner Index"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "Index"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "Globaler Modulindex"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "Module"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "weiter"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "zurück"
@@ -206,37 +206,37 @@ msgstr "%s (C-Variable)"
msgid "%scommand line option; %s"
msgstr "%sKommandozeilenoption; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "Plattformen: "
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (Modul)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Autor des Abschnitts: "
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Autor des Moduls: "
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Autor: "
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "Siehe auch"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr " Basisklassen: %s"
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr "Alias von :class:`%s`"
@@ -431,40 +431,40 @@ msgstr ""
"Geben Sie Suchbegriffe oder einen Modul-, Klassen- oder Funktionsnamen "
"ein."
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Suche in %(docstitle)s"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Über diese Dokumentation"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Suche"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Zuletzt aktualisiert am %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -506,7 +506,7 @@ msgid "search"
msgstr "suchen"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Suchergebnisse"
@@ -563,15 +563,15 @@ msgstr "Suche..."
msgid "Preparing search..."
msgstr "Suche wird vorbereitet..."
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
msgstr "Modul, in "
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ", in "
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
@@ -579,24 +579,24 @@ msgstr ""
"Es wurden keine zutreffenden Dokumente gefunden. Haben Sie alle "
"Suchbegriffe richtig geschrieben und genügend Kategorien ausgewählt?"
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr "Suche beendet, %s zutreffende Seite(n) gefunden."
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "Release"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
-msgstr "Fußnoten"
+msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr "Fortsetzung der vorherigen Seite"
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
msgid "Continued on next page"
msgstr "Fortsetzung auf der nächsten Seite"
diff --git a/sphinx/locale/es/LC_MESSAGES/sphinx.po b/sphinx/locale/es/LC_MESSAGES/sphinx.po
index b7718a10..d73327cf 100644
--- a/sphinx/locale/es/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/es/LC_MESSAGES/sphinx.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.5\n"
"Report-Msgid-Bugs-To: guillem@torroja.dmt.upm.es\n"
"POT-Creation-Date: 2008-09-11 23:58+0200\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: Guillem Borrell <guillem@torroja.dmt.upm.es>\n"
"Language-Team: es <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, fuzzy, python-format
msgid "%B %d, %Y"
msgstr "%d de %B de %Y"
@@ -26,12 +26,12 @@ msgstr "%d de %B de %Y"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Índice"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Índice de Módulos"
@@ -59,34 +59,34 @@ msgstr "Funciones de base"
msgid "Module level"
msgstr "Módulos"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b, %Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Índice General"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "índice"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "Índice Global de Módulos"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "módulos"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "siguiente"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "anterior"
@@ -211,37 +211,37 @@ msgstr "%s (variable C)"
msgid "%scommand line option; %s"
msgstr "%sOpciones en línea de comandos; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "Plataformas:"
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (módulo)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Autor de la sección"
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Autor del módulo"
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Autor:"
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "Ver también"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -436,40 +436,40 @@ msgstr "Ir a"
msgid "Enter search terms or a module, class or function name."
msgstr "Introducir en nombre de un módulo, clase o función"
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Buscar en %(docstitle)s"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Sobre este documento"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Búsqueda"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\\\"%(path)s\\\">Copyright</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Actualizado por última vez en %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -511,7 +511,7 @@ msgid "search"
msgstr "buscar"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Resultados de la búsqueda"
@@ -569,16 +569,16 @@ msgstr "Buscando"
msgid "Preparing search..."
msgstr "Preparando la búsqueda"
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
#, fuzzy
msgid "module, in "
msgstr "módulo"
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
@@ -587,27 +587,27 @@ msgstr ""
"todas las palabras correctamente y que ha seleccionado suficientes "
"categorías"
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr ""
"Búsqueda finalizada, se han encontrado %s página(s) que concuerdan con su"
" consulta"
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
#, fuzzy
msgid "Release"
msgstr "Versión"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
#, fuzzy
msgid "Continued on next page"
msgstr "Índice completo en una página"
diff --git a/sphinx/locale/fi/LC_MESSAGES/sphinx.po b/sphinx/locale/fi/LC_MESSAGES/sphinx.po
index 922cb1f7..3794a648 100644
--- a/sphinx/locale/fi/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/fi/LC_MESSAGES/sphinx.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.6\n"
"Report-Msgid-Bugs-To: sphinx@awot.fi\n"
"POT-Creation-Date: 2009-01-24 18:39+0000\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: Jukka Inkeri <sphinx@awot.fi>\n"
"Language-Team: fi <sphinx@awot.fi>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%d.%m.%Y"
@@ -26,12 +26,12 @@ msgstr "%d.%m.%Y"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Sisällysluettelo"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Moduuli sisällysluettelo"
@@ -57,34 +57,34 @@ msgstr ""
msgid "Module level"
msgstr "Moduulitaso"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%d.%m.%Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Yleinen sisällysluettelo"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "hakemisto"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "Yleinen moduulien sisällysluettelo"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "moduulit"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr ">"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "<"
@@ -207,37 +207,37 @@ msgstr ""
msgid "%scommand line option; %s"
msgstr ""
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "Ympäristö"
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (moduuli)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Luvun kirjoittaja: "
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Moduulin kirjoittaja: "
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Tekijä: "
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "Katso myös"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -430,40 +430,40 @@ msgstr "Siirry"
msgid "Enter search terms or a module, class or function name."
msgstr "Anna etsittävä termi tai moduuli, luokka tai funktio"
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr ""
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Tietoja tästä documentistä"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Etsi"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr ""
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -498,7 +498,7 @@ msgid "search"
msgstr "etsi"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Etsinnän tulos"
@@ -555,38 +555,38 @@ msgstr "Etsitään"
msgid "Preparing search..."
msgstr "Valmistellaan etsintää..."
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
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 "Ei löytynyt yhtään. Tarkista hakuehdot, sanahaku, ei sen osia"
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr "Etsintä tehty, löydetty %s sivu(a)."
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr ""
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
#, fuzzy
msgid "Continued on next page"
msgstr "Hakemisto yhtenä luettelona"
diff --git a/sphinx/locale/fr/LC_MESSAGES/sphinx.po b/sphinx/locale/fr/LC_MESSAGES/sphinx.po
index a8960ada..fb1f1984 100644
--- a/sphinx/locale/fr/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/fr/LC_MESSAGES/sphinx.po
@@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.5\n"
"Report-Msgid-Bugs-To: larlet@gmail.com\n"
"POT-Creation-Date: 2008-08-08 12:39+0000\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: Sébastien Douche <sdouche@gmail.com>\n"
"Language-Team: French Translation Team <sphinx-dev@googlegroups.com>\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%d %B %Y"
@@ -27,12 +27,12 @@ msgstr "%d %B %Y"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Index"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Index du module"
@@ -58,34 +58,34 @@ msgstr "Fonctions de base"
msgid "Module level"
msgstr "Module"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b %Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Index général"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "index"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "Index général des modules"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "modules"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "suivant"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "précédent"
@@ -209,37 +209,37 @@ msgstr "%s (variable C)"
msgid "%scommand line option; %s"
msgstr "%soption de ligne de commande; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "Plateformes : "
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (module)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Auteur de la section : "
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Auteur du module : "
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Auteur : "
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "Voir aussi"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -433,40 +433,40 @@ msgstr "Go"
msgid "Enter search terms or a module, class or function name."
msgstr "Saisissez un nom de module, classe ou fonction."
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Recherchez dans %(docstitle)s"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "À propos de ces documents"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Recherche"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Mis à jour le %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -511,7 +511,7 @@ msgid "search"
msgstr "rechercher"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Résultats de la recherche"
@@ -568,15 +568,15 @@ msgstr "En cours de recherche"
msgid "Preparing search..."
msgstr "Préparation de la recherche..."
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
msgstr "module, dans"
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ", dans"
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
@@ -585,24 +585,24 @@ msgstr ""
"des termes de recherche et que vous avez sélectionné suffisamment de "
"catégories."
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr "La recherche est terminée, %s page(s) correspond(ent) à la requête."
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "Version"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
#, fuzzy
msgid "Continued on next page"
msgstr "Index complet sur une seule page"
diff --git a/sphinx/locale/it/LC_MESSAGES/sphinx.po b/sphinx/locale/it/LC_MESSAGES/sphinx.po
index f0e981c9..ec240872 100644
--- a/sphinx/locale/it/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/it/LC_MESSAGES/sphinx.po
@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.5\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2008-11-27 18:39+0100\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: Sandro Dentella <sandro@e-den.it>\n"
"Language-Team: <sphinx-dev@googlegroups.com>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%d %B %Y"
@@ -25,12 +25,12 @@ msgstr "%d %B %Y"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Indice"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Indice dei Moduli"
@@ -56,34 +56,34 @@ msgstr "Builtin"
msgid "Module level"
msgstr "Modulo"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%d/%b/%Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Indice generale"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "indice"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "Indice dei moduli"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "moduli"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "successivo"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "precedente"
@@ -206,37 +206,37 @@ msgstr "%s (variabile C)"
msgid "%scommand line option; %s"
msgstr "%sopzione di linea di comando; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "Piattaforme:"
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (modulo)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Autore della sezione"
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Autore del modulo"
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Autore: "
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "Vedi anche"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr "alias per :class:`%s`"
@@ -429,40 +429,40 @@ msgstr "Vai"
msgid "Enter search terms or a module, class or function name."
msgstr "Inserisci un termine di ricerca un modulo, classe o nome di funzione"
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Cerca in %(docstitle)s"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "A proposito di questi documenti"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Cerca"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Ultimo aggiornamento %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -505,7 +505,7 @@ msgid "search"
msgstr "cerca"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Risultati della ricerca"
@@ -562,15 +562,15 @@ msgstr "Ricerca in corso"
msgid "Preparing search..."
msgstr "Preparazione della ricerca"
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
msgstr "modulo, in"
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ", in "
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
@@ -579,24 +579,24 @@ msgstr ""
"dei termini di ricerca e di avere selezionato un numero sufficiente di "
"categorie"
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr "Ricerca terminata, trovate %s pagine corrispondenti alla ricerca."
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "Release"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
#, fuzzy
msgid "Continued on next page"
msgstr "Indice completo in una pagina"
diff --git a/sphinx/locale/ja/LC_MESSAGES/sphinx.po b/sphinx/locale/ja/LC_MESSAGES/sphinx.po
index afaedfdc..3b0ce0f0 100644
--- a/sphinx/locale/ja/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/ja/LC_MESSAGES/sphinx.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.5\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2008-09-11 23:58+0200\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: Yasushi MASUDA <whosaysni@gmail.com>\n"
"Language-Team: ja <LL@li.org>\n"
"Plural-Forms: nplurals=1; plural=0\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%Y 年 %m 月 %d 日"
@@ -26,12 +26,12 @@ msgstr "%Y 年 %m 月 %d 日"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "索引"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "モジュール索引"
@@ -57,34 +57,34 @@ msgstr "組み込み"
msgid "Module level"
msgstr "モジュールレベル"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%Y 年 %m 月 %d 日"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "総合索引"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "索引"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "モジュール総索引"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "モジュール"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "次へ"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "前へ"
@@ -208,37 +208,37 @@ msgstr "%s (C の変数)"
msgid "%scommand line option; %s"
msgstr "%sコマンドラインオプション; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "プラットフォーム: "
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (モジュール)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "この節の作者: "
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "モジュールの作者: "
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "作者: "
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "参考"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -432,40 +432,40 @@ msgstr "検索"
msgid "Enter search terms or a module, class or function name."
msgstr "モジュール、クラス、または関数名を入力してください"
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "%(docstitle)s 内を検索"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "このドキュメントについて"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "検索"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "著作権"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "最終更新: %(last_updated)s"
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -503,7 +503,7 @@ msgid "search"
msgstr "検索"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "検索結果"
@@ -560,39 +560,39 @@ msgstr "検索中"
msgid "Preparing search..."
msgstr "検索の準備中..."
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
#, fuzzy
msgid "module, in "
msgstr "モジュール"
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
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 "検索条件に一致するドキュメントはありませんでした。検索したい言葉を正しいつづりで入力しているか確認してください。また、正しいカテゴリの検索を行っているか確認してください。"
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr "検索が終了し、条件に一致するページが %s 個みつかりました。"
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "リリース"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
#, fuzzy
msgid "Continued on next page"
msgstr "総索引"
diff --git a/sphinx/locale/nl/LC_MESSAGES/sphinx.po b/sphinx/locale/nl/LC_MESSAGES/sphinx.po
index 1b21566f..4454ebb7 100644
--- a/sphinx/locale/nl/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/nl/LC_MESSAGES/sphinx.po
@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.5\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2008-09-11 23:58+0200\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: nl <LL@li.org>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%d. %B %Y"
@@ -25,12 +25,12 @@ msgstr "%d. %B %Y"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Index"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Module-index"
@@ -56,34 +56,34 @@ msgstr "Builtins"
msgid "Module level"
msgstr "Moduleniveau"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%d.%b.%Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Algemene index"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "Index"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "Globale Module-index"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "modules"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "volgende"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "vorige"
@@ -207,37 +207,37 @@ msgstr "%s (C-variabele)"
msgid "%scommand line option; %s"
msgstr "%scommandolijn optie; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "Platformen: "
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (module)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Auteur van deze sectie: "
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Auteur van deze module: "
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Auteur: "
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "Zie ook"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -431,40 +431,40 @@ msgstr "Go"
msgid "Enter search terms or a module, class or function name."
msgstr "Geef de naam van een module, klasse of functie."
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Zoeken in %(docstitle)s"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Over deze documenten"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Zoeken"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Laatste aanpassing op %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -508,7 +508,7 @@ msgid "search"
msgstr "zoeken"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Zoekresultaten"
@@ -565,16 +565,16 @@ msgstr "Zoeken"
msgid "Preparing search..."
msgstr "Het zoeken wordt voorbereid"
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
#, fuzzy
msgid "module, in "
msgstr "module"
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
@@ -582,24 +582,24 @@ msgstr ""
"Uw zoekopdracht leverde geen resultaten op. Controleer of alle "
"woordencorrect gespeld zijn en dat u genoeg categoriën hebt geselecteerd."
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr "Zoeken voltooid, %s pagina(s) gevonden."
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "Release"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
#, fuzzy
msgid "Continued on next page"
msgstr "Volledige index op een pagina"
diff --git a/sphinx/locale/pl/LC_MESSAGES/sphinx.js b/sphinx/locale/pl/LC_MESSAGES/sphinx.js
index ce79a179..a913d3d6 100644
--- a/sphinx/locale/pl/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/pl/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "pl", "plural_expr": "(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", "messages": {"module, in ": "modu\u0142", "Preparing search...": "Przygotowanie wyszukiwania...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Nie znaleziono \u017cadnych pasuj\u0105cych dokument\u00f3w. Upewnij si\u0119, \u017ce wszystkie s\u0142owa s\u0105 poprawnie wpisane i \u017ce wybra\u0142e\u015b wystarczaj\u0105c\u0105liczb\u0119 kategorii.", "Search finished, found %s page(s) matching the search query.": "Przeszukiwanie zako\u0144czone, znaleziono %s pasuj\u0105cych stron.", ", in ": "", "Permalink to this headline": "Sta\u0142y odno\u015bnik do tego nag\u0142\u00f3wka", "Searching": "Wyszukiwanie", "Permalink to this definition": "Sta\u0142y odno\u015bnik do tej definicji", "Hide Search Matches": "Ukryj wyniki wyszukiwania", "Search Results": "Wyniki wyszukiwania"}}); \ No newline at end of file
+Documentation.addTranslations({"locale": "pl", "plural_expr": "(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", "messages": {"module, in ": "modu\u0142, w ", "Preparing search...": "Przygotowanie wyszukiwania...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Nie znaleziono \u017cadnych pasuj\u0105cych dokument\u00f3w. Upewnij si\u0119, \u017ce wszystkie s\u0142owa s\u0105 poprawnie wpisane i \u017ce wybra\u0142e\u015b wystarczaj\u0105c\u0105liczb\u0119 kategorii.", "Search finished, found %s page(s) matching the search query.": "Przeszukiwanie zako\u0144czone, znaleziono %s pasuj\u0105cych stron.", ", in ": ", w ", "Permalink to this headline": "Sta\u0142y odno\u015bnik do tego nag\u0142\u00f3wka", "Searching": "Wyszukiwanie", "Permalink to this definition": "Sta\u0142y odno\u015bnik do tej definicji", "Hide Search Matches": "Ukryj wyniki wyszukiwania", "Search Results": "Wyniki wyszukiwania"}}); \ No newline at end of file
diff --git a/sphinx/locale/pl/LC_MESSAGES/sphinx.mo b/sphinx/locale/pl/LC_MESSAGES/sphinx.mo
index c53656a0..31e424d8 100644
--- a/sphinx/locale/pl/LC_MESSAGES/sphinx.mo
+++ b/sphinx/locale/pl/LC_MESSAGES/sphinx.mo
Binary files differ
diff --git a/sphinx/locale/pl/LC_MESSAGES/sphinx.po b/sphinx/locale/pl/LC_MESSAGES/sphinx.po
index 350280b3..3519730b 100644
--- a/sphinx/locale/pl/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/pl/LC_MESSAGES/sphinx.po
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.5\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2008-08-10 11:43+0000\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: Michał Kandulski <Michal.Kandulski@poczta.onet.pl>\n"
"Language-Team: \n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && "
@@ -14,7 +14,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%B %d %Y"
@@ -23,12 +23,12 @@ msgstr "%B %d %Y"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Indeks"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Indeks modułów"
@@ -54,40 +54,40 @@ msgstr "Wbudowane"
msgid "Module level"
msgstr "Poziom modułu"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%b %d %Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Indeks ogólny"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "indeks"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "Indeks modułów"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "moduły"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "dalej"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "wstecz"
#: sphinx/builders/latex.py:162
msgid " (in "
-msgstr ""
+msgstr " (w "
#: sphinx/directives/desc.py:97
msgid "Raises"
@@ -106,9 +106,8 @@ msgid "Return type"
msgstr "Typ zwracany"
#: sphinx/directives/desc.py:186
-#, fuzzy
msgid "Parameter"
-msgstr "Parametry"
+msgstr "Parametr"
#: sphinx/directives/desc.py:190
msgid "Parameters"
@@ -136,9 +135,9 @@ msgid "%s (in module %s)"
msgstr "%s (w module %s)"
#: sphinx/directives/desc.py:439
-#, fuzzy, python-format
+#, python-format
msgid "%s (built-in class)"
-msgstr "%s (zmienna wbudowana)"
+msgstr "%s (klasa wbudowana)"
#: sphinx/directives/desc.py:440
#, python-format
@@ -201,57 +200,59 @@ msgid "%s (C variable)"
msgstr "%s (zmienna C)"
#: sphinx/directives/desc.py:665
-#, fuzzy, python-format
+#, python-format
msgid "%scommand line option; %s"
msgstr "%sopcja linii komend; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "Platformy: "
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (moduł)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Autor rozdziału: "
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Autor modułu: "
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Autor: "
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "Zobacz także"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
-msgstr ""
+msgstr " Klasy bazowe: %s"
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
-msgstr ""
+msgstr "alias klasy :class:`%s`"
#: sphinx/ext/todo.py:41
msgid "Todo"
-msgstr ""
+msgstr "Do zrobienia"
#: sphinx/ext/todo.py:99
#, python-format
msgid "(The original entry is located in %s, line %d and can be found "
msgstr ""
+"(Oryginalny wpis znajduje się w pliku %s, w linii %d i może być "
+"odnaleziony "
#: sphinx/ext/todo.py:105
msgid "here"
-msgstr ""
+msgstr "tutaj"
#: sphinx/locale/__init__.py:15
msgid "Attention"
@@ -425,44 +426,43 @@ msgid "Go"
msgstr "Szukaj"
#: sphinx/themes/basic/layout.html:81
-#, fuzzy
msgid "Enter search terms or a module, class or function name."
-msgstr "Wprowadź nazwę modułu, klasy lub funkcji."
+msgstr "Wprowadź szukany termin lub nazwę modułu, klasy lub funkcji."
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Szukaj pośród %(docstitle)s"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "O tych dokumentach"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Szukaj"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Ostatnia modyfikacja %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -484,10 +484,9 @@ msgstr "Przeszukaj %(docstitle)s"
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
-msgstr ""
+msgstr "Aby umożliwić wuszukiwanie, proszę włączyć JavaScript."
#: sphinx/themes/basic/search.html:14
-#, fuzzy
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"
@@ -496,16 +495,17 @@ msgid ""
msgstr ""
"Stąd możesz przeszukać dokumentację. Wprowadź szukane\n"
" słowa w poniższym okienku i kliknij \"Szukaj\". Zwróć uwagę, że\n"
-" funkcja szukająca będzie automatycznie szukała wszystkich słów. "
-"Strony nie zawierające wszystkich słów nie znajdą się na wynikowej "
-"liście."
+" funkcja szukająca będzie automatycznie szukała wszystkich słów. "
+"Strony\n"
+" nie zawierające wszystkich wpisanych słów nie znajdą się na wynikowej"
+" liście."
#: sphinx/themes/basic/search.html:21
msgid "search"
msgstr "Szukaj"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Wyniki wyszukiwania"
@@ -562,16 +562,15 @@ msgstr "Wyszukiwanie"
msgid "Preparing search..."
msgstr "Przygotowanie wyszukiwania..."
-#: sphinx/themes/basic/static/searchtools.js:338
-#, fuzzy
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
-msgstr "moduł"
+msgstr "moduł, w "
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
-msgstr ""
+msgstr ", w "
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
@@ -579,24 +578,24 @@ msgstr ""
"Nie znaleziono żadnych pasujących dokumentów. Upewnij się, że wszystkie "
"słowa są poprawnie wpisane i że wybrałeś wystarczającąliczbę kategorii."
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr "Przeszukiwanie zakończone, znaleziono %s pasujących stron."
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "Wydanie"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
#, fuzzy
msgid "Continued on next page"
msgstr "Cały indeks na jednej stronie"
diff --git a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po
index 1d63841f..443967ed 100644
--- a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.5\n"
"Report-Msgid-Bugs-To: roger.demetrescu@gmail.com\n"
"POT-Creation-Date: 2008-11-09 19:46+0100\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: Roger Demetrescu <roger.demetrescu@gmail.com>\n"
"Language-Team: pt_BR <roger.demetrescu@gmail.com>\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%d/%m/%Y"
@@ -26,12 +26,12 @@ msgstr "%d/%m/%Y"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Índice"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Índice do Módulo"
@@ -57,34 +57,34 @@ msgstr "Internos"
msgid "Module level"
msgstr "Módulo"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%d/%m/%Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Índice Geral"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "índice"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "Índice Global de Módulos"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "módulos"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "próximo"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "anterior"
@@ -208,37 +208,37 @@ msgstr "%s (variável C)"
msgid "%scommand line option; %s"
msgstr "%sopção de linha de comando; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "Plataformas: "
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (módulo)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Autor da seção: "
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Autor do módulo: "
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Autor: "
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "Veja também"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -432,40 +432,40 @@ msgstr "Ir"
msgid "Enter search terms or a module, class or function name."
msgstr "Informe o nome de um módulo, classe ou função."
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Pesquisar dentro de %(docstitle)s"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Sobre estes documentos"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Pesquisar"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Última atualização em %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -509,7 +509,7 @@ msgid "search"
msgstr "pesquisar"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Resultados da Pesquisa"
@@ -566,15 +566,15 @@ msgstr "Pesquisando"
msgid "Preparing search..."
msgstr "Preparando pesquisa..."
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
msgstr "módulo, em "
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ", em "
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
@@ -583,26 +583,26 @@ msgstr ""
" todas as palavras foram digitadas corretamente e de que você tenha "
"selecionado o mínimo de categorias."
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr ""
"Pesquisa finalizada, foram encontrada(s) %s página(s) que conferem com o "
"critério de pesquisa."
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "Versão"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
#, fuzzy
msgid "Continued on next page"
msgstr "Índice completo em uma página"
diff --git a/sphinx/locale/ru/LC_MESSAGES/sphinx.po b/sphinx/locale/ru/LC_MESSAGES/sphinx.po
index cf466c7e..05594cc5 100644
--- a/sphinx/locale/ru/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/ru/LC_MESSAGES/sphinx.po
@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.6b1\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2009-01-24 18:39+0000\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: alexander smishlajev <alex@tycobka.lv>\n"
"Language-Team: ru <LL@li.org>\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%d %B %Y"
@@ -26,12 +26,12 @@ msgstr "%d %B %Y"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Алфавитный указатель"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Состав модуля"
@@ -57,34 +57,34 @@ msgstr "Встроенные функции"
msgid "Module level"
msgstr "Модуль"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b %Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Словарь-указатель"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "словарь"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "Алфавитный указатель модулей"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "модули"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "следующий"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "предыдущий"
@@ -207,37 +207,37 @@ msgstr "%s (переменная C)"
msgid "%scommand line option; %s"
msgstr "Опция командной строки %s; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "Платформы: "
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (модуль)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Автор секции: "
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Автор модуля: "
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Автор: "
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "См.также"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr " Базовые классы: %s"
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr "псевдоним класса :class:`%s`"
@@ -430,40 +430,40 @@ msgstr "Искать"
msgid "Enter search terms or a module, class or function name."
msgstr "Введите слова для поиска или имя модуля, класса или функции."
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Поиск в документе «%(docstitle)s»"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Об этих документах…"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Поиск"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Дата последнего обновления: %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -505,7 +505,7 @@ msgid "search"
msgstr "искать"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Результаты поиска"
@@ -562,15 +562,15 @@ msgstr "Поиск"
msgid "Preparing search..."
msgstr "Подготовка к поиску..."
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
msgstr ", модуль в "
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ", в "
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
@@ -578,24 +578,24 @@ msgstr ""
"Нет документов, соответствующих вашему запросу. Проверьте, правильно ли "
"выбраны категории и нет ли опечаток в запросе."
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr "Поиск окончен, найдено страниц: %s."
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "Выпуск"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
#, fuzzy
msgid "Continued on next page"
msgstr "Полный алфавитный указатель на одной странице"
diff --git a/sphinx/locale/sl/LC_MESSAGES/sphinx.js b/sphinx/locale/sl/LC_MESSAGES/sphinx.js
index e00eb23b..a0936a57 100644
--- a/sphinx/locale/sl/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/sl/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "sl", "plural_expr": "0", "messages": {"module, in ": "modul, v ", "Preparing search...": "Pripravljam iskanje...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Za va\u0161e iskanje ni rezultatov. Prosimo preglejte ali so vse besede pravilno \u010drkovane in ali ste izbrali dovolj kategorij.", "Search finished, found %s page(s) matching the search query.": "Iskanje kon\u010dano, najdeno %s strani, ki ustrezajo iskalnemu nizu.", ", in ": ", v ", "Permalink to this headline": "Povezava na naslov", "Searching": "I\u0161\u010dem", "Permalink to this definition": "Povezava na to definicijo", "Hide Search Matches": "Skrij Resultate Iskanja", "Search Results": "Rezultati Iskanja"}}); \ No newline at end of file
+Documentation.addTranslations({"locale": "sl", "plural_expr": "0", "messages": {"Search Results": "Rezultati Iskanja", "Preparing search...": "Pripravljam iskanje...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Za va\u0161e iskanje ni rezultatov. Prosimo preglejte ali so vse besede pravilno \u010drkovane in ali ste izbrali dovolj kategorij.", "Search finished, found %s page(s) matching the search query.": "Iskanje kon\u010dano, najdeno %s strani, ki ustrezajo iskalnemu nizu.", ", in ": ", v ", "Permalink to this headline": "Povezava na naslov", "Searching": "I\u0161\u010dem", "Permalink to this definition": "Povezava na to definicijo", "module, in ": "modul, v ", "Hide Search Matches": "Skrij resultate iskanja"}}); \ No newline at end of file
diff --git a/sphinx/locale/sl/LC_MESSAGES/sphinx.mo b/sphinx/locale/sl/LC_MESSAGES/sphinx.mo
index e7d1e830..c8e1e0a4 100644
--- a/sphinx/locale/sl/LC_MESSAGES/sphinx.mo
+++ b/sphinx/locale/sl/LC_MESSAGES/sphinx.mo
Binary files differ
diff --git a/sphinx/locale/sl/LC_MESSAGES/sphinx.po b/sphinx/locale/sl/LC_MESSAGES/sphinx.po
index cba48284..07fb84f1 100644
--- a/sphinx/locale/sl/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/sl/LC_MESSAGES/sphinx.po
@@ -4,8 +4,8 @@ msgstr ""
"Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2008-09-11 23:58+0200\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
-"Last-Translator: Rok Garbas <rok.garbas@gmail.com>\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
+"Last-Translator: Domen Kožar <domen@dev.si>\n"
"Language-Team: Rok Garbas <rok.garbas@gmail.com>\n"
"Plural-Forms: nplurals=1; plural=0\n"
"MIME-Version: 1.0\n"
@@ -13,7 +13,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%d %B, %Y"
@@ -22,23 +22,23 @@ msgstr "%d %B, %Y"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Abecedni seznam"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Seznam modulov"
#: sphinx/environment.py:326 sphinx/themes/basic/defindex.html:16
msgid "Search Page"
-msgstr "Iskalna stran"
+msgstr "Iskalnik"
#: sphinx/roles.py:55 sphinx/directives/desc.py:747
#, python-format
msgid "environment variable; %s"
-msgstr "globalna spremenljivka; %s"
+msgstr "okoljska spremenljivka; %s"
#: sphinx/roles.py:62
#, python-format
@@ -53,44 +53,44 @@ msgstr "Vgrajeni deli"
msgid "Module level"
msgstr "Nivo modula"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b, %Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Splošni abecedni seznam"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "abecedni seznam"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
-msgstr "Splošen Seznam Modulov"
+msgstr "Splošen seznam modulov"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "Moduli"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "naprej"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "nazaj"
#: sphinx/builders/latex.py:162
msgid " (in "
-msgstr "(v "
+msgstr " (v "
#: sphinx/directives/desc.py:97
msgid "Raises"
-msgstr "Javi"
+msgstr "Sproži izjemo"
#: sphinx/directives/desc.py:101
msgid "Variable"
@@ -105,9 +105,8 @@ msgid "Return type"
msgstr "Vrne tip"
#: sphinx/directives/desc.py:186
-#, fuzzy
msgid "Parameter"
-msgstr "Parametri"
+msgstr "Parameter"
#: sphinx/directives/desc.py:190
msgid "Parameters"
@@ -202,51 +201,51 @@ msgstr "%s (C spremenljivka)"
#: sphinx/directives/desc.py:665
#, python-format
msgid "%scommand line option; %s"
-msgstr "%sopcija komandne linije; %s"
+msgstr "%scommand line parameter; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
-msgstr "Platforma:"
+msgstr "Platforme:"
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (modul)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Avtor sekcije:"
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Avtor modula:"
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Avtor:"
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
-msgstr "Poglej tudi"
+msgstr "Poglej Tudi"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
-msgstr ""
+msgstr " Osnove: %s"
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
-msgstr ""
+msgstr "vzdevek za :class:`%s`"
#: sphinx/ext/todo.py:41
msgid "Todo"
-msgstr "Naredi"
+msgstr "Todo"
#: sphinx/ext/todo.py:99
#, python-format
msgid "(The original entry is located in %s, line %d and can be found "
-msgstr "(Originalen vnos se nahajana v %s, vrstica %d in jo je moč poiskati "
+msgstr "(Originalen vnos se nahaja v %s, v vrstici %d, in ga je moč poiskati "
#: sphinx/ext/todo.py:105
msgid "here"
@@ -262,7 +261,7 @@ msgstr "Previdno"
#: sphinx/locale/__init__.py:17
msgid "Danger"
-msgstr "Navarno"
+msgstr "Nevarno"
#: sphinx/locale/__init__.py:18
msgid "Error"
@@ -300,7 +299,7 @@ msgstr "Novo v verziji %s"
#: sphinx/locale/__init__.py:29
#, python-format
msgid "Changed in version %s"
-msgstr "Spemenjeno v verziji %s"
+msgstr "Spremenjeno v verziji %s"
#: sphinx/locale/__init__.py:30
#, python-format
@@ -313,7 +312,7 @@ msgstr "modul"
#: sphinx/locale/__init__.py:35
msgid "keyword"
-msgstr "kllučna beseda"
+msgstr "ključna beseda"
#: sphinx/locale/__init__.py:36
msgid "operator"
@@ -341,7 +340,7 @@ msgstr "Pregled"
#: sphinx/themes/basic/defindex.html:11
msgid "Indices and tables:"
-msgstr "Kazalo in tabele:"
+msgstr "Kazalo in seznami:"
#: sphinx/themes/basic/defindex.html:14
msgid "Complete Table of Contents"
@@ -353,7 +352,7 @@ msgstr "prikazi vse sekcije in podsekcije"
#: sphinx/themes/basic/defindex.html:17
msgid "search this documentation"
-msgstr "isči po dokumentaciji"
+msgstr "išči po dokumentaciji"
#: sphinx/themes/basic/defindex.html:20
msgid "quick access to all modules"
@@ -361,7 +360,7 @@ msgstr "hiter dostop do vseh modulov"
#: sphinx/themes/basic/defindex.html:22
msgid "all functions, classes, terms"
-msgstr "vse funkcije, rezredi, termini"
+msgstr "vse funkcije, razredi, izrazi"
#: sphinx/themes/basic/genindex-single.html:5
#, python-format
@@ -409,7 +408,7 @@ msgstr "naslednje poglavje"
#: sphinx/themes/basic/layout.html:60
msgid "This Page"
-msgstr "Ta stran"
+msgstr "Trenutna stran"
#: sphinx/themes/basic/layout.html:63
msgid "Show Source"
@@ -424,44 +423,43 @@ msgid "Go"
msgstr "Potrdi"
#: sphinx/themes/basic/layout.html:81
-#, fuzzy
msgid "Enter search terms or a module, class or function name."
-msgstr "Vnesi ime mudla, razreda ali funkcije."
+msgstr "Vnesi ime modula, razreda ali funkcije."
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Išči med %(docstitle)s"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
-msgstr "O teh dokumentih"
+msgstr "O dokumentih"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Išči"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Vse pravice pridržane"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Vse pravice pridržane</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Vse pravice pridržane %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
-msgstr "Zadnjič posodobljeno na %(last_updated)s."
+msgstr "Zadnjič posodobljeno %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -484,16 +482,17 @@ msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr ""
+"Prosimo omogočite JavaScript\n"
+" za delovanje iskalnika."
#: sphinx/themes/basic/search.html:14
-#, fuzzy
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 ""
-"O tukaj lahko isčete dokumente. Vnesite iskalni\n"
+"Tukaj lahko iščete dokumente. Vnesite iskalni\n"
" niz v polje spodaj in pritisnite \"išči\". Sproženo iskanje\n"
" bo iskalo po vseh besedah v iskalnem nizu. Strani, ki ne\n"
" vsebujejo vseh besed ne bodo prikazane na seznamu rezultatov."
@@ -503,7 +502,7 @@ msgid "search"
msgstr "išči"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Rezultati Iskanja"
@@ -550,7 +549,7 @@ msgstr "Povezava na to definicijo"
#: sphinx/themes/basic/static/doctools.js:174
msgid "Hide Search Matches"
-msgstr "Skrij Resultate Iskanja"
+msgstr "Skrij resultate iskanja"
#: sphinx/themes/basic/static/searchtools.js:274
msgid "Searching"
@@ -560,15 +559,15 @@ msgstr "Iščem"
msgid "Preparing search..."
msgstr "Pripravljam iskanje..."
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
msgstr "modul, v "
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ", v "
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
@@ -576,27 +575,26 @@ msgstr ""
"Za vaše iskanje ni rezultatov. Prosimo preglejte ali so vse besede "
"pravilno črkovane in ali ste izbrali dovolj kategorij."
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr "Iskanje končano, najdeno %s strani, ki ustrezajo iskalnemu nizu."
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "Izdaja"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
-msgstr ""
+msgstr "nadaljevanje prejšnje strani"
-#: sphinx/writers/latex.py:644
-#, fuzzy
+#: sphinx/writers/latex.py:651
msgid "Continued on next page"
-msgstr "Poln indeks na eni strani"
+msgstr "Nadaljevanje na naslednji strani"
#: sphinx/writers/text.py:166
#, python-format
diff --git a/sphinx/locale/sphinx.pot b/sphinx/locale/sphinx.pot
index eff6e983..d6337cf7 100644
--- a/sphinx/locale/sphinx.pot
+++ b/sphinx/locale/sphinx.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: Sphinx 0.6.2+/6b02a19ccf31\n"
+"Project-Id-Version: Sphinx 1.0\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2009-08-06 22:48+0200\n"
+"POT-Creation-Date: 2009-08-06 23:04+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr ""
@@ -26,12 +26,12 @@ msgstr ""
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr ""
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr ""
@@ -57,34 +57,34 @@ msgstr ""
msgid "Module level"
msgstr ""
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr ""
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr ""
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr ""
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr ""
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr ""
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr ""
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr ""
@@ -207,37 +207,37 @@ msgstr ""
msgid "%scommand line option; %s"
msgstr ""
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr ""
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr ""
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr ""
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr ""
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr ""
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr ""
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -430,40 +430,40 @@ msgstr ""
msgid "Enter search terms or a module, class or function name."
msgstr ""
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr ""
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr ""
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr ""
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr ""
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -498,7 +498,7 @@ msgid "search"
msgstr ""
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr ""
@@ -555,38 +555,38 @@ msgstr ""
msgid "Preparing search..."
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
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 ""
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr ""
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr ""
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
msgid "Continued on next page"
msgstr ""
diff --git a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po
index 75c933a2..16f6f022 100644
--- a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.6\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2008-12-28 23:40+0100\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: Petro Sasnyk <petro@sasnyk.name>\n"
"Language-Team: uk_UA <LL@li.org>\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr ""
@@ -27,12 +27,12 @@ msgstr ""
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "Індекс"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "Індекс модулів"
@@ -58,34 +58,34 @@ msgstr "Вбудовані елементи"
msgid "Module level"
msgstr "Рівень модуля"
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%b %d, %Y"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "Загальний індекс"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "індекс"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr "Загальний індекс модулів"
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "модулі"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "наступний"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "попередній"
@@ -208,37 +208,37 @@ msgstr "%s (C змінна)"
msgid "%scommand line option; %s"
msgstr "%sопція командного рядка; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "Платформи: "
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (модуль)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Автор секції: "
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "Автор модуля: "
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "Автор: "
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr "Дивись також"
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr " Базовий: %s"
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr "синонім :class:`%s`"
@@ -431,40 +431,40 @@ msgstr "Вперед"
msgid "Enter search terms or a module, class or function name."
msgstr "Введіть пошуковий термін, модуль, клас чи назву функції."
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Шукати в %(docstitle)s"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Про ці документи"
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "Пошук"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Авторські права"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Востаннє оновлено %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -508,7 +508,7 @@ msgid "search"
msgstr "пошук"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "Результати пошуку"
@@ -565,15 +565,15 @@ msgstr "Шукаю"
msgid "Preparing search..."
msgstr "Підготовка до пошуку..."
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
msgstr "модуль, в "
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ", в "
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
msgid ""
"Your search did not match any documents. Please make sure that all words "
"are spelled correctly and that you've selected enough categories."
@@ -581,24 +581,24 @@ msgstr ""
"Ваш пошук не виявив жодного співпадіння. Будь-ласка переконайтеся що всі "
"слова набрані правильно і ви обрали достатньо категорій."
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr "Пошук закінчено, знайдено %s сторінок які співпали з пошуковим запитом."
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "Реліз"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
#, fuzzy
msgid "Continued on next page"
msgstr "Повний індекс на одній сторінці"
diff --git a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js
new file mode 100644
index 00000000..911a8f26
--- /dev/null
+++ b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js
@@ -0,0 +1 @@
+Documentation.addTranslations({"locale": "zh_CN", "plural_expr": "0", "messages": {"module, in ": "\u6a21\u5757\uff0c\u4f4d\u4e8e", "Preparing search...": "\u51c6\u5907\u641c\u7d22...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u4f60\u7684\u641c\u7d22\u6ca1\u6709\u5339\u914d\u5230\u4efb\u4f55\u6587\u6863\u3002\u8bf7\u786e\u8ba4\u4f60\u6240\u641c\u7d22\u7684\u5173\u952e\u5b57.", "Search finished, found %s page(s) matching the search query.": "\u641c\u7d22\u5b8c\u6210\uff0c \u627e\u5230\u4e86 %s \u9875\u5339\u914d\u6240\u641c\u7d22\u7684\u5173\u952e\u5b57", ", in ": ", \u4f4d\u4e8e", "Permalink to this headline": "\u6c38\u4e45\u94fe\u63a5\u81f3\u6807\u9898", "Searching": "\u641c\u7d22\u4e2d", "Permalink to this definition": "\u6c38\u4e45\u94fe\u63a5\u81f3\u76ee\u6807", "Hide Search Matches": "\u9690\u85cf\u641c\u7d22\u7ed3\u679c", "Search Results": "\u641c\u7d22\u7ed3\u679c"}}); \ No newline at end of file
diff --git a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mo b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mo
new file mode 100644
index 00000000..8d8fbefa
--- /dev/null
+++ b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mo
Binary files differ
diff --git a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po
new file mode 100644
index 00000000..5b13794d
--- /dev/null
+++ b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po
@@ -0,0 +1,604 @@
+# Chinese (Simplified Chinese) translations for Sphinx.
+# Copyright (C) 2009 Tower Joo
+# This file is distributed under the same license as the Sphinx project.
+# Tower Joo<zhutao.iscas@gmail.com>, 2009.
+# My homepage is at http://sites.google.com/site/towerjooeng
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx 0.6\n"
+"Report-Msgid-Bugs-To: zhutao.iscas@gmail.com\n"
+"POT-Creation-Date: 2009-03-09 19:46+0120\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
+"Last-Translator: Tower Joo<zhutao.iscas@gmail.com>\n"
+"Language-Team: cn <LL@li.org>\n"
+"Plural-Forms: nplurals=1; plural=0\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"
+
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
+#, python-format
+msgid "%B %d, %Y"
+msgstr "%Y 年 %m 月 %d 日"
+
+#: sphinx/environment.py:324 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 "索引"
+
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
+msgid "Module Index"
+msgstr "模块索引"
+
+#: sphinx/environment.py:326 sphinx/themes/basic/defindex.html:16
+msgid "Search Page"
+msgstr "搜索页面"
+
+#: sphinx/roles.py:55 sphinx/directives/desc.py:747
+#, python-format
+msgid "environment variable; %s"
+msgstr "环境变量; %s"
+
+#: sphinx/roles.py:62
+#, python-format
+msgid "Python Enhancement Proposals!PEP %s"
+msgstr "Python 建议文件!PEP %s"
+
+#: sphinx/builders/changes.py:71
+msgid "Builtins"
+msgstr "内置"
+
+#: sphinx/builders/changes.py:73
+msgid "Module level"
+msgstr "模块级别"
+
+#: sphinx/builders/html.py:222
+#, python-format
+msgid "%b %d, %Y"
+msgstr "%Y 年 %m 月 %d 日"
+
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
+msgid "General Index"
+msgstr "总目录"
+
+#: sphinx/builders/html.py:241
+msgid "index"
+msgstr "索引"
+
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
+#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
+msgid "Global Module Index"
+msgstr "全局模块索引"
+
+#: sphinx/builders/html.py:244
+msgid "modules"
+msgstr "模块"
+
+#: sphinx/builders/html.py:300
+msgid "next"
+msgstr "下一页"
+
+#: sphinx/builders/html.py:309
+msgid "previous"
+msgstr "上一页"
+
+#: sphinx/builders/latex.py:162
+msgid " (in "
+msgstr ""
+
+#: sphinx/directives/desc.py:97
+msgid "Raises"
+msgstr "引发"
+
+#: sphinx/directives/desc.py:101
+msgid "Variable"
+msgstr "变量"
+
+#: sphinx/directives/desc.py:104
+msgid "Returns"
+msgstr "返回"
+
+#: sphinx/directives/desc.py:113
+msgid "Return type"
+msgstr "返回类型"
+
+#: sphinx/directives/desc.py:186
+#, fuzzy
+msgid "Parameter"
+msgstr "参数"
+
+#: sphinx/directives/desc.py:190
+msgid "Parameters"
+msgstr "参数"
+
+#: sphinx/directives/desc.py:418
+#, python-format
+msgid "%s() (built-in function)"
+msgstr "%s() (內置函数)"
+
+#: sphinx/directives/desc.py:419 sphinx/directives/desc.py:476
+#: sphinx/directives/desc.py:488
+#, python-format
+msgid "%s() (in module %s)"
+msgstr "%s() (在 %s 模块中)"
+
+#: sphinx/directives/desc.py:422
+#, python-format
+msgid "%s (built-in variable)"
+msgstr "%s (內置变量)"
+
+#: sphinx/directives/desc.py:423 sphinx/directives/desc.py:514
+#, python-format
+msgid "%s (in module %s)"
+msgstr "%s() (在 %s 模块中)"
+
+#: sphinx/directives/desc.py:439
+#, python-format
+msgid "%s (built-in class)"
+msgstr "%s (內置类)"
+
+#: sphinx/directives/desc.py:440
+#, python-format
+msgid "%s (class in %s)"
+msgstr ""
+
+#: sphinx/directives/desc.py:480
+#, python-format
+msgid "%s() (%s.%s method)"
+msgstr "%s() (%s.%s 方法)"
+
+#: sphinx/directives/desc.py:482
+#, python-format
+msgid "%s() (%s method)"
+msgstr "%s() (%s 方法)"
+
+#: sphinx/directives/desc.py:492
+#, python-format
+msgid "%s() (%s.%s static method)"
+msgstr "%s() (%s.%s 静态方法)"
+
+#: sphinx/directives/desc.py:495
+#, python-format
+msgid "%s() (%s static method)"
+msgstr "%s() (%s 静态方法)"
+
+#: sphinx/directives/desc.py:518
+#, python-format
+msgid "%s (%s.%s attribute)"
+msgstr "%s (%s.%s 属性)"
+
+#: sphinx/directives/desc.py:520
+#, python-format
+msgid "%s (%s attribute)"
+msgstr "%s (%s 属性)"
+
+#: sphinx/directives/desc.py:609
+#, python-format
+msgid "%s (C function)"
+msgstr "%s (C 函数)"
+
+#: sphinx/directives/desc.py:611
+#, python-format
+msgid "%s (C member)"
+msgstr "%s (C 成员)"
+
+#: sphinx/directives/desc.py:613
+#, python-format
+msgid "%s (C macro)"
+msgstr "%s (C 宏)"
+
+#: sphinx/directives/desc.py:615
+#, python-format
+msgid "%s (C type)"
+msgstr "%s (C 类型)"
+
+#: sphinx/directives/desc.py:617
+#, python-format
+msgid "%s (C variable)"
+msgstr "%s (C 变量)"
+
+#: sphinx/directives/desc.py:665
+#, python-format
+msgid "%scommand line option; %s"
+msgstr "%s命令行选项; %s"
+
+#: sphinx/directives/other.py:140
+msgid "Platforms: "
+msgstr "平台"
+
+#: sphinx/directives/other.py:146
+#, python-format
+msgid "%s (module)"
+msgstr "%s (模块)"
+
+#: sphinx/directives/other.py:195
+msgid "Section author: "
+msgstr "Section 作者:"
+
+#: sphinx/directives/other.py:197
+msgid "Module author: "
+msgstr "模块作者:"
+
+#: sphinx/directives/other.py:199
+msgid "Author: "
+msgstr "作者:"
+
+#: sphinx/directives/other.py:319
+msgid "See also"
+msgstr "也可以参考"
+
+#: sphinx/ext/autodoc.py:889
+#, python-format
+msgid " Bases: %s"
+msgstr ""
+
+#: sphinx/ext/autodoc.py:922
+#, python-format
+msgid "alias of :class:`%s`"
+msgstr ""
+
+#: sphinx/ext/todo.py:41
+msgid "Todo"
+msgstr "待处理"
+
+#: sphinx/ext/todo.py:99
+#, python-format
+msgid "(The original entry is located in %s, line %d and can be found "
+msgstr "(最初的入口位于%s 的第%d行"
+
+#: sphinx/ext/todo.py:105
+msgid "here"
+msgstr "这里"
+
+#: sphinx/locale/__init__.py:15
+msgid "Attention"
+msgstr "注意"
+
+#: sphinx/locale/__init__.py:16
+msgid "Caution"
+msgstr "警告"
+
+#: sphinx/locale/__init__.py:17
+msgid "Danger"
+msgstr "危险"
+
+#: sphinx/locale/__init__.py:18
+msgid "Error"
+msgstr "错误"
+
+#: sphinx/locale/__init__.py:19
+msgid "Hint"
+msgstr "提示"
+
+#: sphinx/locale/__init__.py:20
+msgid "Important"
+msgstr "重要"
+
+#: sphinx/locale/__init__.py:21
+msgid "Note"
+msgstr "注解"
+
+#: sphinx/locale/__init__.py:22
+msgid "See Also"
+msgstr "也可以参考"
+
+#: sphinx/locale/__init__.py:23
+msgid "Tip"
+msgstr "小技巧"
+
+#: sphinx/locale/__init__.py:24
+msgid "Warning"
+msgstr "警告"
+
+#: sphinx/locale/__init__.py:28
+#, python-format
+msgid "New in version %s"
+msgstr "%s 新版功能"
+
+#: sphinx/locale/__init__.py:29
+#, python-format
+msgid "Changed in version %s"
+msgstr "在 %s 版更改"
+
+#: sphinx/locale/__init__.py:30
+#, python-format
+msgid "Deprecated since version %s"
+msgstr "%s 版后已移除"
+
+#: sphinx/locale/__init__.py:34
+msgid "module"
+msgstr "模块"
+
+#: sphinx/locale/__init__.py:35
+msgid "keyword"
+msgstr "关键字"
+
+#: sphinx/locale/__init__.py:36
+msgid "operator"
+msgstr "操作数"
+
+#: sphinx/locale/__init__.py:37
+msgid "object"
+msgstr "对象"
+
+#: sphinx/locale/__init__.py:38
+msgid "exception"
+msgstr "例外"
+
+#: sphinx/locale/__init__.py:39
+msgid "statement"
+msgstr "语句"
+
+#: sphinx/locale/__init__.py:40
+msgid "built-in function"
+msgstr "內置函数"
+
+#: sphinx/themes/basic/defindex.html:2
+msgid "Overview"
+msgstr "概述"
+
+#: sphinx/themes/basic/defindex.html:11
+msgid "Indices and tables:"
+msgstr "索引和表格"
+
+#: sphinx/themes/basic/defindex.html:14
+msgid "Complete Table of Contents"
+msgstr "完整的内容表"
+
+#: sphinx/themes/basic/defindex.html:15
+msgid "lists all sections and subsections"
+msgstr "列出所有的章节和部分"
+
+#: sphinx/themes/basic/defindex.html:17
+msgid "search this documentation"
+msgstr "搜索文档"
+
+#: sphinx/themes/basic/defindex.html:20
+msgid "quick access to all modules"
+msgstr "快速查看所有的模块"
+
+#: sphinx/themes/basic/defindex.html:22
+msgid "all functions, classes, terms"
+msgstr "所的函数,类,术语"
+
+#: sphinx/themes/basic/genindex-single.html:5
+#, python-format
+msgid "Index &ndash; %(key)s"
+msgstr "索引 &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 "一页的全部索引"
+
+#: sphinx/themes/basic/genindex-split.html:7
+msgid "Index pages by letter"
+msgstr "按照字母的索引页"
+
+#: sphinx/themes/basic/genindex-split.html:15
+msgid "can be huge"
+msgstr "可能会很多"
+
+#: sphinx/themes/basic/layout.html:10
+msgid "Navigation"
+msgstr "导航"
+
+#: sphinx/themes/basic/layout.html:42
+msgid "Table Of Contents"
+msgstr "內容目录"
+
+#: sphinx/themes/basic/layout.html:48
+msgid "Previous topic"
+msgstr "上一个主题"
+
+#: sphinx/themes/basic/layout.html:50
+msgid "previous chapter"
+msgstr "上一章"
+
+#: sphinx/themes/basic/layout.html:53
+msgid "Next topic"
+msgstr "下一个主题"
+
+#: sphinx/themes/basic/layout.html:55
+msgid "next chapter"
+msgstr "下一章"
+
+#: sphinx/themes/basic/layout.html:60
+msgid "This Page"
+msgstr "本页"
+
+#: sphinx/themes/basic/layout.html:63
+msgid "Show Source"
+msgstr "显示源代码"
+
+#: sphinx/themes/basic/layout.html:73
+msgid "Quick search"
+msgstr "快速搜索"
+
+#: sphinx/themes/basic/layout.html:76
+msgid "Go"
+msgstr "搜索"
+
+#: sphinx/themes/basic/layout.html:81
+msgid "Enter search terms or a module, class or function name."
+msgstr "输入相关的模块,术语,类或者函数名称进行搜索"
+
+#: sphinx/themes/basic/layout.html:122
+#, python-format
+msgid "Search within %(docstitle)s"
+msgstr "在 %(docstitle)s 中搜索"
+
+#: sphinx/themes/basic/layout.html:131
+msgid "About these documents"
+msgstr "关于这些文档"
+
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/search.html:5
+msgid "Search"
+msgstr "搜索"
+
+#: sphinx/themes/basic/layout.html:140
+msgid "Copyright"
+msgstr "版权所有"
+
+#: sphinx/themes/basic/layout.html:187
+#, python-format
+msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
+msgstr "&copy; <a href=\"%(path)s\">版权所有</a> % (copyright)s."
+
+#: sphinx/themes/basic/layout.html:189
+#, python-format
+msgid "&copy; Copyright %(copyright)s."
+msgstr "&copy; 版权所有 %(copyright)s."
+
+#: sphinx/themes/basic/layout.html:193
+#, python-format
+msgid "Last updated on %(last_updated)s."
+msgstr "最后更新日期是 %(last_updated)s."
+
+#: sphinx/themes/basic/layout.html:196
+#, python-format
+msgid ""
+"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
+"%(sphinx_version)s."
+msgstr "使用 <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> %(sphinx_version)s."
+
+#: sphinx/themes/basic/modindex.html:36
+msgid "Deprecated"
+msgstr "已移除"
+
+#: sphinx/themes/basic/opensearch.xml:4
+#, python-format
+msgid "Search %(docstitle)s"
+msgstr "搜索 %(docstitle)s"
+
+#: sphinx/themes/basic/search.html:9
+msgid ""
+"Please activate JavaScript to enable the search\n"
+" functionality."
+msgstr ""
+
+#: 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 "在这儿,你可以对这些文档进行搜索。向搜索框中输入你所要搜索的关键字并点击\"搜索\"。注意:搜索引擎会自动搜索所有的关键字。将不会搜索到部分关键字的页面."
+
+#: sphinx/themes/basic/search.html:21
+msgid "search"
+msgstr "搜索"
+
+#: sphinx/themes/basic/search.html:25
+#: sphinx/themes/basic/static/searchtools.js:462
+msgid "Search Results"
+msgstr "搜索结果"
+
+#: sphinx/themes/basic/search.html:27
+msgid "Your search did not match any results."
+msgstr "你的搜索没有找到任何的结果."
+
+#: 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 "更改发生在版本 %(version)s &mdash; %(docstitle)s"
+
+#: sphinx/themes/basic/changes/rstsource.html:5
+#, python-format
+msgid "%(filename)s &mdash; %(docstitle)s"
+msgstr ""
+
+#: sphinx/themes/basic/changes/versionchanges.html:17
+#, python-format
+msgid "Automatically generated list of changes in version %(version)s"
+msgstr "自动生成的版本 %(version)s中的更改列表"
+
+#: sphinx/themes/basic/changes/versionchanges.html:18
+msgid "Library changes"
+msgstr "库更改"
+
+#: sphinx/themes/basic/changes/versionchanges.html:23
+msgid "C API changes"
+msgstr "C API 更改"
+
+#: sphinx/themes/basic/changes/versionchanges.html:25
+msgid "Other changes"
+msgstr "其他更改"
+
+#: sphinx/themes/basic/static/doctools.js:139 sphinx/writers/html.py:473
+#: sphinx/writers/html.py:478
+msgid "Permalink to this headline"
+msgstr "永久链接至标题"
+
+#: sphinx/themes/basic/static/doctools.js:145 sphinx/writers/html.py:80
+msgid "Permalink to this definition"
+msgstr "永久链接至目标"
+
+#: sphinx/themes/basic/static/doctools.js:174
+msgid "Hide Search Matches"
+msgstr "隐藏搜索结果"
+
+#: sphinx/themes/basic/static/searchtools.js:274
+msgid "Searching"
+msgstr "搜索中"
+
+#: sphinx/themes/basic/static/searchtools.js:279
+msgid "Preparing search..."
+msgstr "准备搜索..."
+
+#: sphinx/themes/basic/static/searchtools.js:347
+msgid "module, in "
+msgstr "模块,位于"
+
+#: sphinx/themes/basic/static/searchtools.js:356
+msgid ", in "
+msgstr ", 位于"
+
+#: sphinx/themes/basic/static/searchtools.js:464
+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 "你的搜索没有匹配到任何文档。请确认你所搜索的关键字."
+
+#: sphinx/themes/basic/static/searchtools.js:466
+#, python-format
+msgid "Search finished, found %s page(s) matching the search query."
+msgstr "搜索完成, 找到了 %s 页匹配所搜索的关键字"
+
+#: sphinx/writers/latex.py:187
+msgid "Release"
+msgstr "发布"
+
+#: sphinx/writers/latex.py:578
+msgid "Footnotes"
+msgstr ""
+
+#: sphinx/writers/latex.py:646
+msgid "continued from previous page"
+msgstr ""
+
+#: sphinx/writers/latex.py:651
+#, fuzzy
+msgid "Continued on next page"
+msgstr "一页的全部索引"
+
+#: sphinx/writers/text.py:166
+#, python-format
+msgid "Platform: %s"
+msgstr "平台:%s"
+
+#: sphinx/writers/text.py:428
+msgid "[image]"
+msgstr "[图片]"
+
diff --git a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po
index 6b86de79..53d1731d 100644
--- a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Sphinx 0.5\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2008-11-09 19:46+0100\n"
-"PO-Revision-Date: 2009-08-06 22:48+0200\n"
+"PO-Revision-Date: 2009-08-06 23:04+0200\n"
"Last-Translator: Fred Lin <gasolin@gmail.com>\n"
"Language-Team: tw <LL@li.org>\n"
"Plural-Forms: nplurals=1; plural=0\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.4\n"
-#: sphinx/environment.py:103 sphinx/writers/latex.py:182
+#: sphinx/environment.py:103 sphinx/writers/latex.py:184
#, python-format
msgid "%B %d, %Y"
msgstr "%Y 年 %m 月 %d 日"
@@ -26,12 +26,12 @@ msgstr "%Y 年 %m 月 %d 日"
#: 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:131
-#: sphinx/writers/latex.py:188
+#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:190
msgid "Index"
msgstr "索引"
-#: sphinx/environment.py:325 sphinx/writers/latex.py:187
+#: sphinx/environment.py:325 sphinx/writers/latex.py:189
msgid "Module Index"
msgstr "模組索引"
@@ -57,34 +57,34 @@ msgstr ""
msgid "Module level"
msgstr ""
-#: sphinx/builders/html.py:205
+#: sphinx/builders/html.py:222
#, python-format
msgid "%b %d, %Y"
msgstr "%Y 年 %m 月 %d 日"
-#: sphinx/builders/html.py:224 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:241 sphinx/themes/basic/defindex.html:21
msgid "General Index"
msgstr "總索引"
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:241
msgid "index"
msgstr "索引"
-#: sphinx/builders/html.py:226 sphinx/builders/htmlhelp.py:219
+#: sphinx/builders/html.py:243 sphinx/builders/htmlhelp.py:219
#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
msgid "Global Module Index"
msgstr ""
-#: sphinx/builders/html.py:227
+#: sphinx/builders/html.py:244
msgid "modules"
msgstr "模組"
-#: sphinx/builders/html.py:281
+#: sphinx/builders/html.py:300
msgid "next"
msgstr "下一頁"
-#: sphinx/builders/html.py:290
+#: sphinx/builders/html.py:309
msgid "previous"
msgstr "上一頁"
@@ -208,37 +208,37 @@ msgstr "%s (C 變數)"
msgid "%scommand line option; %s"
msgstr "%s命令列選項; %s"
-#: sphinx/directives/other.py:138
+#: sphinx/directives/other.py:140
msgid "Platforms: "
msgstr "平台"
-#: sphinx/directives/other.py:144
+#: sphinx/directives/other.py:146
#, python-format
msgid "%s (module)"
msgstr "%s (模組)"
-#: sphinx/directives/other.py:193
+#: sphinx/directives/other.py:195
msgid "Section author: "
msgstr "Section 作者:"
-#: sphinx/directives/other.py:195
+#: sphinx/directives/other.py:197
msgid "Module author: "
msgstr "模組作者:"
-#: sphinx/directives/other.py:197
+#: sphinx/directives/other.py:199
msgid "Author: "
msgstr "作者:"
-#: sphinx/directives/other.py:317
+#: sphinx/directives/other.py:319
msgid "See also"
msgstr ""
-#: sphinx/ext/autodoc.py:883
+#: sphinx/ext/autodoc.py:889
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:916
+#: sphinx/ext/autodoc.py:922
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -432,40 +432,40 @@ msgstr ""
msgid "Enter search terms or a module, class or function name."
msgstr "輸入一個模組、類別、或是函式名稱."
-#: sphinx/themes/basic/layout.html:119
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "在 %(docstitle)s 中搜尋"
-#: sphinx/themes/basic/layout.html:128
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr ""
-#: sphinx/themes/basic/layout.html:134 sphinx/themes/basic/search.html:2
+#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
#: sphinx/themes/basic/search.html:5
msgid "Search"
msgstr "搜尋"
-#: sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "版權所有"
-#: sphinx/themes/basic/layout.html:183
+#: sphinx/themes/basic/layout.html:187
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:185
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:188
+#: sphinx/themes/basic/layout.html:193
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "最後更新日期是 %(last_updated)s."
-#: sphinx/themes/basic/layout.html:191
+#: sphinx/themes/basic/layout.html:196
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
@@ -500,7 +500,7 @@ msgid "search"
msgstr "搜尋"
#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:453
+#: sphinx/themes/basic/static/searchtools.js:462
msgid "Search Results"
msgstr "搜尋結果"
@@ -557,38 +557,38 @@ msgstr "搜尋中"
msgid "Preparing search..."
msgstr "準備搜尋..."
-#: sphinx/themes/basic/static/searchtools.js:338
+#: sphinx/themes/basic/static/searchtools.js:347
msgid "module, in "
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:347
+#: sphinx/themes/basic/static/searchtools.js:356
msgid ", in "
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:455
+#: sphinx/themes/basic/static/searchtools.js:464
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 ""
-#: sphinx/themes/basic/static/searchtools.js:457
+#: sphinx/themes/basic/static/searchtools.js:466
#, python-format
msgid "Search finished, found %s page(s) matching the search query."
msgstr ""
-#: sphinx/writers/latex.py:185
+#: sphinx/writers/latex.py:187
msgid "Release"
msgstr "釋出"
-#: sphinx/writers/latex.py:571
+#: sphinx/writers/latex.py:578
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:639
+#: sphinx/writers/latex.py:646
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:644
+#: sphinx/writers/latex.py:651
msgid "Continued on next page"
msgstr ""
diff --git a/sphinx/quickstart.py b/sphinx/quickstart.py
index 054a487f..914d9567 100644
--- a/sphinx/quickstart.py
+++ b/sphinx/quickstart.py
@@ -56,7 +56,7 @@ templates_path = ['%(dot)stemplates']
source_suffix = '%(suffix)s'
# The encoding of source files.
-#source_encoding = 'utf-8'
+#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = '%(master_str)s'
@@ -174,6 +174,12 @@ html_static_path = ['%(dot)sstatic']
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
@@ -275,7 +281,9 @@ help:
\t@echo " json to make JSON files"
\t@echo " htmlhelp to make HTML files and a HTML help project"
\t@echo " qthelp to make HTML files and a qthelp project"
+\t@echo " devhelp to make HTML files and a Devhelp project"
\t@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+\t@echo " latexpdf to make LaTeX files and run them through pdflatex"
\t@echo " changes to make an overview of all changed/added/deprecated items"
\t@echo " linkcheck to check all external links for integrity"
\t@echo " doctest to run all doctests embedded in the documentation \
@@ -319,6 +327,15 @@ qthelp:
\t@echo "To view the help file:"
\t@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/%(project_fn)s.qhc"
+devhelp:
+\t$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) %(rbuilddir)s/devhelp
+\t@echo
+\t@echo "Build finished."
+\t@echo "To view the help file:"
+\t@echo "# mkdir -p $$HOME/.local/share/devhelp/%(project_fn)s"
+\t@echo "# ln -s %(rbuilddir)s/devhelp $$HOME/.local/share/devhelp/%(project_fn)s"
+\t@echo "# devhelp"
+
latex:
\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
\t@echo
@@ -326,6 +343,12 @@ latex:
\t@echo "Run \\`make all-pdf' or \\`make all-ps' in that directory to" \\
\t "run these through (pdf)latex."
+latexpdf: latex
+\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) %(rbuilddir)s/latex
+\t@echo "Running LaTeX files through pdflatex..."
+\tmake -C %(rbuilddir)s/latex all-pdf
+\t@echo "pdflatex finished; the PDF files are in %(rbuilddir)s/latex."
+
changes:
\t$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
\t@echo
@@ -366,6 +389,7 @@ if "%%1" == "help" (
\techo. json to make JSON files
\techo. htmlhelp to make HTML files and a HTML help project
\techo. qthelp to make HTML files and a qthelp project
+\techo. devhelp to make HTML files and a Devhelp project
\techo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
\techo. changes to make an overview over all changed/added/deprecated items
\techo. linkcheck to check all external links for integrity
@@ -426,6 +450,13 @@ if "%%1" == "qthelp" (
\tgoto end
)
+if "%%1" == "devhelp" (
+\t%%SPHINXBUILD%% -b devhelp %%ALLSPHINXOPTS%% %(rbuilddir)s/devhelp
+\techo.
+\techo.Build finished.
+\tgoto end
+)
+
if "%%1" == "latex" (
\t%%SPHINXBUILD%% -b latex %%ALLSPHINXOPTS%% %%BUILDDIR%%/latex
\techo.
diff --git a/sphinx/roles.py b/sphinx/roles.py
index cf04c095..af574b98 100644
--- a/sphinx/roles.py
+++ b/sphinx/roles.py
@@ -15,7 +15,7 @@ from docutils import nodes, utils
from docutils.parsers.rst import roles
from sphinx import addnodes
-from sphinx.util import ws_re, caption_ref_re
+from sphinx.util import ws_re, split_explicit_title
generic_docroles = {
@@ -133,28 +133,15 @@ def xfileref_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
modname=env.currmodule, classname=env.currclass)
# we may need the line number for warnings
pnode.line = lineno
- # the link title may differ from the target, but by default
- # they are the same
- title = target = text
- titleistarget = True
# look if explicit title and target are given with `foo <bar>` syntax
- brace = text.find('<')
- if brace != -1:
- titleistarget = False
+ has_explicit_title, title, target = split_explicit_title(text)
+ if has_explicit_title:
pnode['refcaption'] = True
- m = caption_ref_re.match(text)
- if m:
- target = m.group(2)
- title = m.group(1)
- else:
- # fallback: everything after '<' is the target
- target = text[brace+1:]
- title = text[:brace]
# special target for Python object cross-references
if typ in ('data', 'exc', 'func', 'class', 'const', 'attr',
'meth', 'mod', 'obj'):
# fix-up parentheses in link title
- if titleistarget:
+ if not has_explicit_title:
title = title.lstrip('.') # only has a meaning for the target
target = target.lstrip('~') # only has a meaning for the title
title = _fix_parens(typ, title, env)
@@ -176,7 +163,7 @@ def xfileref_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
# some other special cases for the target
elif typ == 'option':
program = env.currprogram
- if titleistarget:
+ if not has_explicit_title:
if ' ' in title and not (title.startswith('/') or
title.startswith('-')):
program, target = re.split(' (?=-|--|/)', title, 1)
@@ -195,7 +182,7 @@ def xfileref_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
target = ws_re.sub('', target).lower()
elif typ == 'cfunc':
# fix-up parens for C functions too
- if titleistarget:
+ if not has_explicit_title:
title = _fix_parens(typ, title, env)
# remove parentheses from the target too
if target.endswith('()'):
diff --git a/sphinx/search.py b/sphinx/search.py
index 9ca0682f..9bfa9d92 100644
--- a/sphinx/search.py
+++ b/sphinx/search.py
@@ -13,8 +13,14 @@ import cPickle as pickle
from docutils.nodes import comment, Text, NodeVisitor, SkipNode
-from sphinx.util.stemmer import PorterStemmer
from sphinx.util import jsdump, rpartition
+try:
+ # http://bitbucket.org/methane/porterstemmer/
+ from porterstemmer import Stemmer as CStemmer
+ CSTEMMER = True
+except ImportError:
+ from sphinx.util.stemmer import PorterStemmer
+ CSTEMMER = False
word_re = re.compile(r'\w+(?u)')
@@ -61,15 +67,23 @@ class _JavaScriptIndex(object):
js_index = _JavaScriptIndex()
-class Stemmer(PorterStemmer):
- """
- All those porter stemmer implementations look hideous.
- make at least the stem method nicer.
- """
+if CSTEMMER:
+ class Stemmer(CStemmer):
+
+ def stem(self, word):
+ return self(word.lower())
+
+else:
+ class Stemmer(PorterStemmer):
+ """
+ All those porter stemmer implementations look hideous.
+ make at least the stem method nicer.
+ """
+
+ def stem(self, word):
+ word = word.lower()
+ return PorterStemmer.stem(self, word, 0, len(word) - 1)
- def stem(self, word):
- word = word.lower()
- return PorterStemmer.stem(self, word, 0, len(word) - 1)
class WordCollector(NodeVisitor):
@@ -197,11 +211,11 @@ class IndexBuilder(object):
visitor = WordCollector(doctree)
doctree.walk(visitor)
- def add_term(word, prefix='', stem=self._stemmer.stem):
+ def add_term(word, stem=self._stemmer.stem):
word = stem(word)
if len(word) < 3 or word in stopwords or word.isdigit():
return
- self._mapping.setdefault(prefix + word, set()).add(filename)
+ self._mapping.setdefault(word, set()).add(filename)
for word in word_re.findall(title):
add_term(word)
diff --git a/sphinx/texinputs/howto.cls b/sphinx/texinputs/sphinxhowto.cls
index 87d207d1..204d7063 100644
--- a/sphinx/texinputs/howto.cls
+++ b/sphinx/texinputs/sphinxhowto.cls
@@ -1,14 +1,25 @@
%
-% howto.cls for Sphinx
+% sphinxhowto.cls for Sphinx (http://sphinx.pocoo.org/)
%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{howto}[2008/10/18 Document class (Sphinx HOWTO)]
+\ProvidesClass{sphinxhowto}[2009/06/02 Document class (Sphinx HOWTO)]
-% Pass all given class options to the parent class.
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+% 'oneside' option overriding the 'twoside' default
+\newif\if@oneside
+\DeclareOption{oneside}{\@onesidetrue}
+% Pass remaining document options to the parent class.
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}}
\ProcessOptions\relax
-\LoadClass[twoside]{article}
+
+% Default to two-side document
+\if@oneside
+% nothing to do (oneside is the default)
+\else
+\PassOptionsToClass{twoside}{\sphinxdocclass}
+\fi
+
+\LoadClass{\sphinxdocclass}
% Set some sane defaults for section numbering depth and TOC depth. You can
% reset these counters in your preamble.
diff --git a/sphinx/texinputs/manual.cls b/sphinx/texinputs/sphinxmanual.cls
index f94ee6d6..da805cdc 100644
--- a/sphinx/texinputs/manual.cls
+++ b/sphinx/texinputs/sphinxmanual.cls
@@ -1,14 +1,28 @@
%
-% manual.cls for Sphinx
+% sphinxmanual.cls for Sphinx (http://sphinx.pocoo.org/)
%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesClass{manual}[2008/10/18 Document class (Sphinx manual)]
+\ProvidesClass{sphinxmanual}[2009/06/02 Document class (Sphinx manual)]
-% Pass all given class options to the parent class.
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{report}}
+% chapters starting at odd pages (overridden by 'openany' document option)
+\PassOptionsToClass{openright}{\sphinxdocclass}
+
+% 'oneside' option overriding the 'twoside' default
+\newif\if@oneside
+\DeclareOption{oneside}{\@onesidetrue}
+% Pass remaining document options to the parent class.
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{\sphinxdocclass}}
\ProcessOptions\relax
-\LoadClass[twoside,openright]{report}
+
+% Defaults two-side document
+\if@oneside
+% nothing to do (oneside is the default)
+\else
+\PassOptionsToClass{twoside}{\sphinxdocclass}
+\fi
+
+\LoadClass{\sphinxdocclass}
% Set some sane defaults for section numbering depth and TOC depth. You can
% reset these counters in your preamble.
diff --git a/sphinx/themes/basic/layout.html b/sphinx/themes/basic/layout.html
index dd2e2d51..2f643c5d 100644
--- a/sphinx/themes/basic/layout.html
+++ b/sphinx/themes/basic/layout.html
@@ -91,7 +91,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta http-equiv="Content-Type" content="text/html; charset={{ encoding }}" />
{{ metatags }}
{%- if not embedded %}
{%- set titlesuffix = " &mdash; "|safe + docstitle|e %}
@@ -101,6 +101,9 @@
<title>{{ title|striptags }}{{ titlesuffix }}</title>
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
+ {%- for cssfile in css_files %}
+ <link rel="stylesheet" href="{{ pathto('_static/' + cssfile, 1) }}" type="text/css" />
+ {%- endfor %}
{%- if not embedded %}
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
@@ -179,10 +182,12 @@
{%- block footer %}
<div class="footer">
- {%- if hasdoc('copyright') %}
- {% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
- {%- else %}
- {% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
+ {%- if show_copyright %}
+ {%- if hasdoc('copyright') %}
+ {% trans path=pathto('copyright'), copyright=copyright|e %}&copy; <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
+ {%- else %}
+ {% trans copyright=copyright|e %}&copy; Copyright {{ copyright }}.{% endtrans %}
+ {%- endif %}
{%- endif %}
{%- if last_updated %}
{% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
diff --git a/sphinx/themes/basic/static/basic.css b/sphinx/themes/basic/static/basic.css
index 128114b7..b52e5f8b 100644
--- a/sphinx/themes/basic/static/basic.css
+++ b/sphinx/themes/basic/static/basic.css
@@ -252,7 +252,7 @@ table.docutils {
}
table.docutils td, table.docutils th {
- padding: 1px 8px 1px 0;
+ padding: 1px 8px 1px 5px;
border-top: 0;
border-left: 0;
border-right: 0;
diff --git a/sphinx/themes/basic/static/searchtools.js b/sphinx/themes/basic/static/searchtools.js
index e0226258..36acb12e 100644
--- a/sphinx/themes/basic/static/searchtools.js
+++ b/sphinx/themes/basic/static/searchtools.js
@@ -287,8 +287,13 @@ var Search = {
},
query : function(query) {
- // stem the searchterms and add them to the
- // correct list
+ var stopwords = ['and', 'then', 'into', 'it', 'as', 'are', 'in',
+ 'if', 'for', 'no', 'there', 'their', 'was', 'is',
+ 'be', 'to', 'that', 'but', 'they', 'not', 'such',
+ 'with', 'by', 'a', 'on', 'these', 'of', 'will',
+ 'this', 'near', 'the', 'or', 'at'];
+
+ // stem the searchterms and add them to the correct list
var stemmer = new PorterStemmer();
var searchterms = [];
var excluded = [];
@@ -296,6 +301,10 @@ var Search = {
var tmp = query.split(/\s+/);
var object = (tmp.length == 1) ? tmp[0].toLowerCase() : null;
for (var i = 0; i < tmp.length; i++) {
+ if (stopwords.indexOf(tmp[i]) != -1 || tmp[i].match(/^\d+$/)) {
+ // skip this word
+ continue;
+ }
// stem the word
var word = stemmer.stemWord(tmp[i]).toLowerCase();
// select the correct list
diff --git a/sphinx/themes/default/static/default.css_t b/sphinx/themes/default/static/default.css_t
index a363167a..fbfd64a8 100644
--- a/sphinx/themes/default/static/default.css_t
+++ b/sphinx/themes/default/static/default.css_t
@@ -147,6 +147,11 @@ a {
text-decoration: none;
}
+a:visited {
+ color: {{ theme_visitedlinkcolor }};
+ text-decoration: none;
+}
+
a:hover {
text-decoration: underline;
}
@@ -241,3 +246,7 @@ tt {
padding: 0 1px 0 1px;
font-size: 0.95em;
}
+
+th {
+ background-color: #ede;
+}
diff --git a/sphinx/themes/default/theme.conf b/sphinx/themes/default/theme.conf
index 812330f8..5035fae5 100644
--- a/sphinx/themes/default/theme.conf
+++ b/sphinx/themes/default/theme.conf
@@ -21,6 +21,7 @@ headbgcolor = #f2f2f2
headtextcolor = #20435c
headlinkcolor = #c60f0f
linkcolor = #355f7c
+visitedlinkcolor = #355f7c
codebgcolor = #eeffcc
codetextcolor = #333333
diff --git a/sphinx/util/__init__.py b/sphinx/util/__init__.py
index ec7f164f..50c5bd3f 100644
--- a/sphinx/util/__init__.py
+++ b/sphinx/util/__init__.py
@@ -28,7 +28,8 @@ import sphinx
# Generally useful regular expressions.
ws_re = re.compile(r'\s+')
-caption_ref_re = re.compile(r'^([^<]+?)\s*<(.+)>$')
+explicit_title_re = re.compile('^(.+?)\s*<(.*?)>$')
+caption_ref_re = explicit_title_re # b/w compat alias
url_re = re.compile(r'(?P<schema>.+)://.*')
# SEP separates path elements in the canonical file names
@@ -437,34 +438,40 @@ def copy_static_entry(source, target, builder, context={}):
shutil.copytree(source, target)
+
+def split_explicit_title(text):
+ """Split role content into title and target, if given."""
+ match = explicit_title_re.match(text)
+ if match:
+ return True, match.group(1), match.group(2)
+ return False, text, text
+
# monkey-patch Node.traverse to get more speed
# traverse() is called so many times during a build that it saves
# on average 20-25% overall build time!
-def _all_traverse(self):
+def _all_traverse(self, result):
"""Version of Node.traverse() that doesn't need a condition."""
- result = []
result.append(self)
for child in self.children:
- result.extend(child._all_traverse())
+ child._all_traverse(result)
return result
-def _fast_traverse(self, cls):
+def _fast_traverse(self, cls, result):
"""Version of Node.traverse() that only supports instance checks."""
- result = []
if isinstance(self, cls):
result.append(self)
for child in self.children:
- result.extend(child._fast_traverse(cls))
+ child._fast_traverse(cls, result)
return result
def _new_traverse(self, condition=None,
include_self=1, descend=1, siblings=0, ascend=0):
if include_self and descend and not siblings and not ascend:
if condition is None:
- return self._all_traverse()
+ return self._all_traverse([])
elif isinstance(condition, (types.ClassType, type)):
- return self._fast_traverse(condition)
+ return self._fast_traverse(condition, [])
return self._old_traverse(condition, include_self,
descend, siblings, ascend)
diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py
index 07eed28a..70086779 100644
--- a/sphinx/writers/latex.py
+++ b/sphinx/writers/latex.py
@@ -28,8 +28,10 @@ from sphinx.util.texescape import tex_escape_map
from sphinx.util.smartypants import educateQuotesLatex
HEADER = r'''%% Generated by Sphinx.
-\documentclass[%(papersize)s,%(pointsize)s%(classoptions)s]{%(docclass)s}
+\def\sphinxdocclass{%(docclass)s}
+\documentclass[%(papersize)s,%(pointsize)s%(classoptions)s]{%(wrapperclass)s}
%(inputenc)s
+%(utf8extra)s
%(fontenc)s
%(babel)s
%(fontpkg)s
@@ -134,11 +136,11 @@ class LaTeXTranslator(nodes.NodeVisitor):
ignore_missing_images = False
default_elements = {
- 'docclass': 'manual',
'papersize': 'letterpaper',
'pointsize': '10pt',
'classoptions': '',
'inputenc': '\\usepackage[utf8]{inputenc}',
+ 'utf8extra': '\\DeclareUnicodeCharacter{00A0}{\\nobreakspace}',
'fontenc': '\\usepackage[T1]{fontenc}',
'babel': '\\usepackage{babel}',
'fontpkg': '\\usepackage{times}',
@@ -173,7 +175,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
self.elements = self.default_elements.copy()
self.elements.update({
- 'docclass': document.settings.docclass,
+ 'wrapperclass': 'sphinx' + document.settings.docclass,
'papersize': papersize,
'pointsize': builder.config.latex_font_size,
# if empty, the title is set to the first section title
@@ -187,6 +189,11 @@ class LaTeXTranslator(nodes.NodeVisitor):
'modindexname': _('Module Index'),
'indexname': _('Index'),
})
+ if document.settings.docclass == 'howto':
+ docclass = builder.config.latex_docclass.get('howto', 'article')
+ else:
+ docclass = builder.config.latex_docclass.get('manual', 'report')
+ self.elements['docclass'] = docclass
if builder.config.latex_logo:
self.elements['logo'] = '\\includegraphics{%s}\\par' % \
path.basename(builder.config.latex_logo)
@@ -208,8 +215,8 @@ class LaTeXTranslator(nodes.NodeVisitor):
# allow the user to override them all
self.elements.update(builder.config.latex_elements)
- self.highlighter = highlighting.PygmentsBridge(
- 'latex', builder.config.pygments_style)
+ self.highlighter = highlighting.PygmentsBridge('latex',
+ builder.config.pygments_style, builder.config.trim_doctest_flags)
self.context = []
self.descstack = []
self.bibitems = []
@@ -221,13 +228,13 @@ class LaTeXTranslator(nodes.NodeVisitor):
self.footnotestack = []
self.curfilestack = []
self.handled_abbrs = set()
- if self.elements['docclass'] == 'manual':
+ if document.settings.docclass == 'howto':
+ self.top_sectionlevel = 2
+ else:
if builder.config.latex_use_parts:
self.top_sectionlevel = 0
else:
self.top_sectionlevel = 1
- else:
- self.top_sectionlevel = 2
self.next_section_target = None
# flags
self.verbatim = None
diff --git a/tests/coverage.py b/tests/coverage.py
index 148e573c..117fd4f2 100755
--- a/tests/coverage.py
+++ b/tests/coverage.py
@@ -106,20 +106,20 @@ class StatementFindingAstVisitor(compiler.visitor.ASTVisitor):
self.excluded = excluded
self.suite_spots = suite_spots
self.excluding_suite = 0
-
+
def doRecursive(self, node):
for n in node.getChildNodes():
self.dispatch(n)
visitStmt = visitModule = doRecursive
-
+
def doCode(self, node):
if hasattr(node, 'decorators') and node.decorators:
self.dispatch(node.decorators)
self.recordAndDispatch(node.code)
else:
self.doSuite(node, node.code)
-
+
visitFunction = visitClass = doCode
def getFirstLine(self, node):
@@ -139,14 +139,14 @@ class StatementFindingAstVisitor(compiler.visitor.ASTVisitor):
for n in node.getChildNodes():
lineno = max(lineno, self.getLastLine(n))
return lineno
-
+
def doStatement(self, node):
self.recordLine(self.getFirstLine(node))
visitAssert = visitAssign = visitAssTuple = visitPrint = \
visitPrintnl = visitRaise = visitSubscript = visitDecorators = \
doStatement
-
+
def visitPass(self, node):
# Pass statements have weird interactions with docstrings. If this
# pass statement is part of one of those pairs, claim that the statement
@@ -155,10 +155,10 @@ class StatementFindingAstVisitor(compiler.visitor.ASTVisitor):
if l:
lines = self.suite_spots.get(l, [l,l])
self.statements[lines[1]] = 1
-
+
def visitDiscard(self, node):
# Discard nodes are statements that execute an expression, but then
- # discard the results. This includes function calls, so we can't
+ # discard the results. This includes function calls, so we can't
# ignore them all. But if the expression is a constant, the statement
# won't be "executed", so don't count it now.
if node.expr.__class__.__name__ != 'Const':
@@ -172,7 +172,7 @@ class StatementFindingAstVisitor(compiler.visitor.ASTVisitor):
return self.recordLine(self.getFirstLine(node))
else:
return 0
-
+
def recordLine(self, lineno):
# Returns a bool, whether the line is included or excluded.
if lineno:
@@ -196,9 +196,9 @@ class StatementFindingAstVisitor(compiler.visitor.ASTVisitor):
self.statements[lineno] = 1
return 1
return 0
-
+
default = recordNodeLine
-
+
def recordAndDispatch(self, node):
self.recordNodeLine(node)
self.dispatch(node)
@@ -209,7 +209,7 @@ class StatementFindingAstVisitor(compiler.visitor.ASTVisitor):
self.excluding_suite = 1
self.recordAndDispatch(body)
self.excluding_suite = exsuite
-
+
def doPlainWordSuite(self, prevsuite, suite):
# Finding the exclude lines for else's is tricky, because they aren't
# present in the compiler parse tree. Look at the previous suite,
@@ -223,11 +223,11 @@ class StatementFindingAstVisitor(compiler.visitor.ASTVisitor):
break
else:
self.doSuite(None, suite)
-
+
def doElse(self, prevsuite, node):
if node.else_:
self.doPlainWordSuite(prevsuite, node.else_)
-
+
def visitFor(self, node):
self.doSuite(node, node.body)
self.doElse(node.body, node)
@@ -257,14 +257,14 @@ class StatementFindingAstVisitor(compiler.visitor.ASTVisitor):
else:
self.doSuite(a, h)
self.doElse(node.handlers[-1][2], node)
-
+
def visitTryFinally(self, node):
self.doSuite(node, node.body)
self.doPlainWordSuite(node.body, node.final)
-
+
def visitWith(self, node):
self.doSuite(node, node.body)
-
+
def visitGlobal(self, node):
# "global" statements don't execute like others (they don't call the
# trace function), so don't record their line numbers.
@@ -285,7 +285,7 @@ class coverage:
# A dictionary with an entry for (Python source file name, line number
# in that file) if that line has been executed.
c = {}
-
+
# A map from canonical Python source file name to a dictionary in
# which there's an entry for each line number that has been
# executed.
@@ -313,19 +313,19 @@ class coverage:
self.relative_dir = self.abs_file(os.curdir)+os.sep
self.exclude('# *pragma[: ]*[nN][oO] *[cC][oO][vV][eE][rR]')
- # t(f, x, y). This method is passed to sys.settrace as a trace function.
- # See [van Rossum 2001-07-20b, 9.2] for an explanation of sys.settrace and
+ # t(f, x, y). This method is passed to sys.settrace as a trace function.
+ # See [van Rossum 2001-07-20b, 9.2] for an explanation of sys.settrace and
# the arguments and return value of the trace function.
# See [van Rossum 2001-07-20a, 3.2] for a description of frame and code
# objects.
-
+
def t(self, f, w, unused): #pragma: no cover
if w == 'line':
self.c[(f.f_code.co_filename, f.f_lineno)] = 1
#-for c in self.cstack:
#- c[(f.f_code.co_filename, f.f_lineno)] = 1
return self.t
-
+
def help(self, error=None): #pragma: no cover
if error:
print error
@@ -377,14 +377,14 @@ class coverage:
args_needed = (settings.get('execute')
or settings.get('annotate')
or settings.get('report'))
- action = (settings.get('erase')
+ action = (settings.get('erase')
or settings.get('collect')
or args_needed)
if not action:
help_fn("You must specify at least one of -e, -x, -c, -r, or -a.")
if not args_needed and args:
help_fn("Unexpected arguments: %s" % " ".join(args))
-
+
self.parallel_mode = settings.get('parallel-mode')
self.get_ready()
@@ -402,7 +402,7 @@ class coverage:
self.collect()
if not args:
args = self.cexecuted.keys()
-
+
ignore_errors = settings.get('ignore-errors')
show_missing = settings.get('show-missing')
directory = settings.get('directory=')
@@ -412,7 +412,7 @@ class coverage:
omit = [self.abs_file(p) for p in omit.split(',')]
else:
omit = []
-
+
if settings.get('report'):
self.report(args, show_missing, ignore_errors, omit_prefixes=omit)
if settings.get('annotate'):
@@ -422,7 +422,7 @@ class coverage:
self.usecache = usecache
if cache_file and not self.cache:
self.cache_default = cache_file
-
+
def get_ready(self, parallel_mode=False):
if self.usecache and not self.cache:
self.cache = os.environ.get(self.cache_env, self.cache_default)
@@ -430,7 +430,7 @@ class coverage:
self.cache += "." + gethostname() + "." + str(os.getpid())
self.restore()
self.analysis_cache = {}
-
+
def start(self, parallel_mode=False):
self.get_ready()
if self.nesting == 0: #pragma: no cover
@@ -438,7 +438,7 @@ class coverage:
if hasattr(threading, 'settrace'):
threading.settrace(self.t)
self.nesting += 1
-
+
def stop(self):
self.nesting -= 1
if self.nesting == 0: #pragma: no cover
@@ -462,7 +462,7 @@ class coverage:
def begin_recursive(self):
self.cstack.append(self.c)
self.xstack.append(self.exclude_re)
-
+
def end_recursive(self):
self.c = self.cstack.pop()
self.exclude_re = self.xstack.pop()
@@ -568,7 +568,7 @@ class coverage:
self.canonical_filename_cache[filename] = cf
return self.canonical_filename_cache[filename]
- # canonicalize_filenames(). Copy results from "c" to "cexecuted",
+ # canonicalize_filenames(). Copy results from "c" to "cexecuted",
# canonicalizing filenames on the way. Clear the "c" map.
def canonicalize_filenames(self):
@@ -598,7 +598,7 @@ class coverage:
# in the source code, (3) a list of lines of excluded statements,
# and (4), a map of line numbers to multi-line line number ranges, for
# statements that cross lines.
-
+
def analyze_morf(self, morf):
if self.analysis_cache.has_key(morf):
return self.analysis_cache[morf]
@@ -636,26 +636,26 @@ class coverage:
if len(tree) == 3 and type(tree[2]) == type(1):
return tree[2]
tree = tree[1]
-
+
def last_line_of_tree(self, tree):
while True:
if len(tree) == 3 and type(tree[2]) == type(1):
return tree[2]
tree = tree[-1]
-
+
def find_docstring_pass_pair(self, tree, spots):
for i in range(1, len(tree)):
if self.is_string_constant(tree[i]) and self.is_pass_stmt(tree[i+1]):
first_line = self.first_line_of_tree(tree[i])
last_line = self.last_line_of_tree(tree[i+1])
self.record_multiline(spots, first_line, last_line)
-
+
def is_string_constant(self, tree):
try:
return tree[0] == symbol.stmt and tree[1][1][1][0] == symbol.expr_stmt
except:
return False
-
+
def is_pass_stmt(self, tree):
try:
return tree[0] == symbol.stmt and tree[1][1][1][0] == symbol.pass_stmt
@@ -665,7 +665,7 @@ class coverage:
def record_multiline(self, spots, i, j):
for l in range(i, j+1):
spots[l] = (i, j)
-
+
def get_suite_spots(self, tree, spots):
""" Analyze a parse tree to find suite introducers which span a number
of lines.
@@ -707,7 +707,7 @@ class coverage:
# treat them differently, especially in the common case of a
# function with a doc string and a single pass statement.
self.find_docstring_pass_pair(tree[i], spots)
-
+
elif tree[i][0] == symbol.simple_stmt:
first_line = self.first_line_of_tree(tree[i])
last_line = self.last_line_of_tree(tree[i])
@@ -732,7 +732,7 @@ class coverage:
tree = parser.suite(text+'\n\n').totuple(1)
self.get_suite_spots(tree, suite_spots)
#print "Suite spots:", suite_spots
-
+
# Use the compiler module to parse the text and find the executable
# statements. We add newlines to be impervious to final partial lines.
statements = {}
@@ -842,7 +842,7 @@ class coverage:
else:
globbed.append(morf)
morfs = globbed
-
+
morfs = self.filter_by_prefix(morfs, omit_prefixes)
morfs.sort(self.morf_name_compare)
@@ -909,7 +909,7 @@ class coverage:
except:
if not ignore_errors:
raise
-
+
def annotate_file(self, filename, statements, excluded, missing, directory=None):
source = open(filename, 'r')
if directory:
@@ -937,7 +937,7 @@ class coverage:
if self.blank_re.match(line):
dest.write(' ')
elif self.else_re.match(line):
- # Special logic for lines containing only 'else:'.
+ # Special logic for lines containing only 'else:'.
# See [GDR 2001-12-04b, 3.2].
if i >= len(statements) and j >= len(missing):
dest.write('! ')
@@ -961,40 +961,40 @@ class coverage:
the_coverage = coverage()
# Module functions call methods in the singleton object.
-def use_cache(*args, **kw):
+def use_cache(*args, **kw):
return the_coverage.use_cache(*args, **kw)
-def start(*args, **kw):
+def start(*args, **kw):
return the_coverage.start(*args, **kw)
-def stop(*args, **kw):
+def stop(*args, **kw):
return the_coverage.stop(*args, **kw)
-def erase(*args, **kw):
+def erase(*args, **kw):
return the_coverage.erase(*args, **kw)
-def begin_recursive(*args, **kw):
+def begin_recursive(*args, **kw):
return the_coverage.begin_recursive(*args, **kw)
-def end_recursive(*args, **kw):
+def end_recursive(*args, **kw):
return the_coverage.end_recursive(*args, **kw)
-def exclude(*args, **kw):
+def exclude(*args, **kw):
return the_coverage.exclude(*args, **kw)
-def analysis(*args, **kw):
+def analysis(*args, **kw):
return the_coverage.analysis(*args, **kw)
-def analysis2(*args, **kw):
+def analysis2(*args, **kw):
return the_coverage.analysis2(*args, **kw)
-def report(*args, **kw):
+def report(*args, **kw):
return the_coverage.report(*args, **kw)
-def annotate(*args, **kw):
+def annotate(*args, **kw):
return the_coverage.annotate(*args, **kw)
-def annotate_file(*args, **kw):
+def annotate_file(*args, **kw):
return the_coverage.annotate_file(*args, **kw)
# Save coverage data when Python exits. (The atexit module wasn't
@@ -1008,7 +1008,7 @@ except ImportError:
def main():
the_coverage.command_line(sys.argv[1:])
-
+
# Command-line interface.
if __name__ == '__main__':
main()
@@ -1072,7 +1072,7 @@ if __name__ == '__main__':
# Thanks, Allen.
#
# 2005-12-02 NMB Call threading.settrace so that all threads are measured.
-# Thanks Martin Fuzzey. Add a file argument to report so that reports can be
+# Thanks Martin Fuzzey. Add a file argument to report so that reports can be
# captured to a different destination.
#
# 2005-12-03 NMB coverage.py can now measure itself.
diff --git a/tests/root/includes.txt b/tests/root/includes.txt
index 0976bf4a..da36503b 100644
--- a/tests/root/includes.txt
+++ b/tests/root/includes.txt
@@ -44,6 +44,11 @@ Literalinclude options
:start-after: coding: utf-8
:end-before: class Foo
+.. cssclass:: inc-preappend
+.. literalinclude:: literal.inc
+ :prepend: START CODE
+ :append: END CODE
+
Test if dedenting before parsing works.
.. highlight:: python
diff --git a/tests/test_autosummary.py b/tests/test_autosummary.py
new file mode 100644
index 00000000..276b9355
--- /dev/null
+++ b/tests/test_autosummary.py
@@ -0,0 +1,34 @@
+# -*- coding: utf-8 -*-
+"""
+ test_autosummary
+ ~~~~~~~~~~~~~~~~
+
+ Test the autosummary extension.
+
+ :copyright: Copyright 2007-2009 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+import string
+
+from util import *
+
+from sphinx.ext.autosummary import mangle_signature
+
+
+def test_mangle_signature():
+ TEST = """
+ () :: ()
+ (a, b, c, d, e) :: (a, b, c, d, e)
+ (a, b, c=1, d=2, e=3) :: (a, b[, c, d, e])
+ (a, b, aaa=1, bbb=1, ccc=1, eee=1, fff=1, ggg=1, hhh=1, iii=1, jjj=1)\
+ :: (a, b[, aaa, bbb, ccc, ...])
+ (a, b, c=(), d=<foo>) :: (a, b[, c, d])
+ (a, b, c='foobar()', d=123) :: (a, b[, c, d])
+ """
+
+ TEST = [map(string.strip, x.split("::")) for x in TEST.split("\n")
+ if '::' in x]
+ for inp, outp in TEST:
+ res = mangle_signature(inp).strip().replace(u"\u00a0", " ")
+ assert res == outp, (u"'%s' -> '%s' != '%s'" % (inp, res, outp))
diff --git a/tests/test_build.py b/tests/test_build.py
index 4c25c146..6668e245 100644
--- a/tests/test_build.py
+++ b/tests/test_build.py
@@ -134,6 +134,8 @@ if pygments:
r'^class Foo:\n pass\nclass Bar:\n$',
".//div[@class='inc-startend highlight-text']/div/pre":
ur'^foo = u"Including Unicode characters: üöä"\n$',
+ ".//div[@class='inc-preappend highlight-text']/div/pre":
+ r'(?m)^START CODE$',
".//div[@class='inc-pyobj-dedent highlight-python']/div/pre/span":
r'def',
})
diff --git a/tests/test_highlighting.py b/tests/test_highlighting.py
index ea1f25f1..7c303283 100644
--- a/tests/test_highlighting.py
+++ b/tests/test_highlighting.py
@@ -37,7 +37,8 @@ class MyLexer(RegexLexer):
class MyFormatter(HtmlFormatter):
def format(self, tokensource, outfile):
- outfile.write('test')
+ for tok in tokensource:
+ outfile.write(tok[1])
class ComplainOnUnhighlighted(PygmentsBridge):
@@ -69,7 +70,16 @@ def test_set_formatter():
PygmentsBridge.html_formatter = MyFormatter
try:
bridge = PygmentsBridge('html')
- ret = bridge.highlight_block('foo', 'python')
- assert ret == 'test'
+ ret = bridge.highlight_block('foo\n', 'python')
+ assert ret == 'foo\n'
+ finally:
+ PygmentsBridge.html_formatter = HtmlFormatter
+
+def test_trim_doctest_flags():
+ PygmentsBridge.html_formatter = MyFormatter
+ try:
+ bridge = PygmentsBridge('html', trim_doctest_flags=True)
+ ret = bridge.highlight_block('>>> 1+2 # doctest: SKIP\n3\n', 'pycon')
+ assert ret == '>>> 1+2 \n3\n'
finally:
PygmentsBridge.html_formatter = HtmlFormatter
diff --git a/tests/test_markup.py b/tests/test_markup.py
index d65b798e..03c421a1 100644
--- a/tests/test_markup.py
+++ b/tests/test_markup.py
@@ -112,7 +112,7 @@ def test_inline():
def test_latex_escaping():
# correct escaping in normal mode
yield (verify, u'Γ\\\\∞$', None,
- ur'\(\Gamma\)\textbackslash{}\(\infty\)\$')
+ ur'\(\Gamma\)\textbackslash{}\(\infty\)\$')
# in verbatim code fragments
yield (verify, u'::\n\n @Γ\\∞$[]', None,
u'\\begin{Verbatim}[commandchars=@\\[\\]]\n'