diff --git a/.hgignore b/.hgignore
index 70ea36a52..45ecebc31 100644
--- a/.hgignore
+++ b/.hgignore
@@ -15,3 +15,7 @@
^env/
\.DS_Store$
~$
+^utils/.*3\.py$
+^distribute-
+^tests/root/_build/*
+^tests/root/generated/*
diff --git a/AUTHORS b/AUTHORS
index 10120c7b4..acee46279 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -8,26 +8,36 @@ Other contributors, listed alphabetically, are:
* Andi Albrecht -- agogo theme
* Henrique Bastos -- SVG support for graphviz extension
* Daniel Bültmann -- todo extension
+* Etienne Desautels -- apidoc module
* Michael Droettboom -- inheritance_diagram extension
* Charles Duffy -- original graphviz extension
+* Kevin Dunn -- MathJax extension
* Josip Dzolonga -- coverage builder
* Horst Gutmann -- internationalization support
* Martin Hans -- autodoc improvements
+* Doug Hellmann -- graphviz improvements
* Dave Kuhlman -- original LaTeX writer
+* Blaise Laflamme -- pyramid theme
* Thomas Lamb -- linkcheck builder
+* Łukasz Langa -- partial support for autodoc
+* Robert Lehmann -- gettext builder (GSOC project)
* Dan MacKinlay -- metadata fixes
* Martin Mahner -- nature theme
* Will Maier -- directory HTML builder
+* Jacob Mason -- websupport library (GSOC project)
* Roland Meister -- epub builder
* Ezio Melotti -- collapsible sidebar JavaScript
-* Daniel Neuhäuser -- JavaScript domain
+* Daniel Neuhäuser -- JavaScript domain, Python 3 support (GSOC)
* Christopher Perkins -- autosummary integration
* Benjamin Peterson -- unittests
* T. Powers -- HTML output improvements
* Stefan Seefeld -- toctree improvements
+* Shibukawa Yoshiki -- pluggable search API and Japanese search
* Antonio Valentino -- qthelp builder
* Pauli Virtanen -- autodoc improvements, autosummary extension
* Stefan van der Walt -- autosummary extension
+* Thomas Waldmann -- apidoc module fixes
+* John Waltman -- Texinfo builder
* Barry Warsaw -- setup command improvements
* Sebastian Wiesner -- image handling, distutils support
diff --git a/CHANGES b/CHANGES
index adbb86a6d..4f86c7691 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,10 +1,306 @@
Release 1.1 (in development)
============================
+Incompatible changes
+--------------------
-Release 1.0.1 (in development)
+* The :rst:dir:`py:module` directive doesn't output its ``platform`` option
+ value anymore. (It was the only thing that the directive did output, and
+ therefore quite inconsistent.)
+
+Features added
+--------------
+
+* Added Python 3.x support.
+
+* New builders and subsystems:
+
+ - Added a Texinfo builder.
+ - Added i18n support for content, a ``gettext`` builder and related
+ utilities.
+ - Added the ``websupport`` library and builder.
+ - #98: Added a ``sphinx-apidoc`` script that autogenerates a hierarchy
+ of source files containing autodoc directives to document modules
+ and packages.
+ - #273: Add an API for adding full-text search support for languages
+ other than English. Add support for Japanese.
+
+* Markup:
+
+ - #138: Add an :rst:role:`index` role, to make inline index entries.
+ - #454: Add more index markup capabilities: marking see/seealso entries,
+ and main entries for a given key.
+ - #460: Allow limiting the depth of section numbers for HTML using the
+ :rst:dir:`toctree`\'s ``numbered`` option.
+ - #586: Implemented improved :rst:dir:`glossary` markup which allows
+ multiple terms per definition.
+ - #478: Added :rst:dir:`py:decorator` directive to describe decorators.
+ - C++ domain now supports array definitions.
+ - Section headings in :rst:dir:`only` directives are now correctly
+ handled.
+
+* HTML builder:
+
+ - Added ``pyramid`` theme.
+ - #559: :confval:`html_add_permalinks` is now a string giving the
+ text to display in permalinks.
+ - #259: HTML table rows now have even/odd CSS classes to enable
+ "Zebra styling".
+ - #554: Add theme option ``sidebarwidth`` to the basic theme.
+
+* Other builders:
+
+ - #516: Added new value of the :confval:`latex_show_urls` option to
+ show the URLs in footnotes.
+ - #209: Added :confval:`text_newlines` and :confval:`text_sectionchars`
+ config values.
+ - Added :confval:`man_show_urls` config value.
+ - #472: linkcheck builder: Check links in parallel, use HTTP HEAD
+ requests and allow configuring the timeout. New config values:
+ :confval:`linkcheck_timeout` and :confval:`linkcheck_workers`.
+ - #521: Added :confval:`linkcheck_ignore` config value.
+
+* Configuration and extensibility:
+
+ - #537: Added :confval:`nitpick_ignore`.
+ - #306: Added :event:`env-get-outdated` event.
+
+* Autodoc:
+
+ - #564: Add :confval:`autodoc_docstring_signature`. When enabled (the
+ default), autodoc retrieves the signature from the first line of the
+ docstring, if it is found there.
+ - #176: Provide ``private-members`` option for autodoc directives.
+ - #520: Provide ``special-members`` option for autodoc directives.
+ - #431: Doc comments for attributes can now be given on the same line
+ as the assignment.
+ - #437: autodoc now shows values of class data attributes.
+ - autodoc now supports documenting the signatures of
+ ``functools.partial`` objects.
+
+* Other extensions:
+
+ - Added the :mod:`sphinx.ext.mathjax` extension.
+ - #443: Allow referencing external graphviz files.
+ - Added ``inline`` option to graphviz directives, and fixed the
+ default (block-style) in LaTeX output.
+ - #590: Added ``caption`` option to graphviz directives.
+ - #553: Added :rst:dir:`testcleanup` blocks in the doctest extension.
+ - #594: :confval:`trim_doctest_flags` now also removes ````
+ indicators.
+ - #367: Added automatic exclusion of hidden members in inheritance
+ diagrams, and an option to selectively enable it.
+ - Added :confval:`pngmath_add_tooltips`.
+
+* New locales:
+
+ - #221: Added Swedish locale.
+ - #526: Added Iranian locale.
+
+
+Release 1.0.8 (in development)
==============================
+
+Release 1.0.7 (Jan 15, 2011)
+============================
+
+* #347: Fix wrong generation of directives of static methods in
+ autosummary.
+
+* #599: Import PIL as ``from PIL import Image``.
+
+* #558: Fix longtables with captions in LaTeX output.
+
+* Make token references work as hyperlinks again in LaTeX output.
+
+* #572: Show warnings by default when reference labels cannot be
+ found.
+
+* #536: Include line number when complaining about missing reference
+ targets in nitpicky mode.
+
+* #590: Fix inline display of graphviz diagrams in LaTeX output.
+
+* #589: Build using app.build() in setup command.
+
+* Fix a bug in the inheritance diagram exception that caused base
+ classes to be skipped if one of them is a builtin.
+
+* Fix general index links for C++ domain objects.
+
+* #332: Make admonition boundaries in LaTeX output visible.
+
+* #573: Fix KeyErrors occurring on rebuild after removing a file.
+
+* Fix a traceback when removing files with globbed toctrees.
+
+* If an autodoc object cannot be imported, always re-read the
+ document containing the directive on next build.
+
+* If an autodoc object cannot be imported, show the full traceback
+ of the import error.
+
+* Fix a bug where the removal of download files and images wasn't
+ noticed.
+
+* #571: Implement ``~`` cross-reference prefix for the C domain.
+
+* Fix regression of LaTeX output with the fix of #556.
+
+* #568: Fix lookup of class attribute documentation on descriptors
+ so that comment documentation now works.
+
+* Fix traceback with ``only`` directives preceded by targets.
+
+* Fix tracebacks occurring for duplicate C++ domain objects.
+
+* Fix JavaScript domain links to objects with ``$`` in their name.
+
+
+Release 1.0.6 (Jan 04, 2011)
+============================
+
+* #581: Fix traceback in Python domain for empty cross-reference
+ targets.
+
+* #283: Fix literal block display issues on Chrome browsers.
+
+* #383, #148: Support sorting a limited range of accented characters
+ in the general index and the glossary.
+
+* #570: Try decoding ``-D`` and ``-A`` command-line arguments with
+ the locale's preferred encoding.
+
+* #528: Observe :confval:`locale_dirs` when looking for the JS
+ translations file.
+
+* #574: Add special code for better support of Japanese documents
+ in the LaTeX builder.
+
+* Regression of #77: If there is only one parameter given with
+ ``:param:`` markup, the bullet list is now suppressed again.
+
+* #556: Fix missing paragraph breaks in LaTeX output in certain
+ situations.
+
+* #567: Emit the ``autodoc-process-docstring`` event even for objects
+ without a docstring so that it can add content.
+
+* #565: In the LaTeX builder, not only literal blocks require different
+ table handling, but also quite a few other list-like block elements.
+
+* #515: Fix tracebacks in the viewcode extension for Python objects
+ that do not have a valid signature.
+
+* Fix strange reportings of line numbers for warnings generated from
+ autodoc-included docstrings, due to different behavior depending
+ on docutils version.
+
+* Several fixes to the C++ domain.
+
+
+Release 1.0.5 (Nov 12, 2010)
+============================
+
+* #557: Add CSS styles required by docutils 0.7 for aligned images
+ and figures.
+
+* In the Makefile generated by LaTeX output, do not delete pdf files
+ on clean; they might be required images.
+
+* #535: Fix LaTeX output generated for line blocks.
+
+* #544: Allow ``.pyw`` as a source file extension.
+
+
+Release 1.0.4 (Sep 17, 2010)
+============================
+
+* #524: Open intersphinx inventories in binary mode on Windows,
+ since version 2 contains zlib-compressed data.
+
+* #513: Allow giving non-local URIs for JavaScript files, e.g.
+ in the JSMath extension.
+
+* #512: Fix traceback when ``intersphinx_mapping`` is empty.
+
+
+Release 1.0.3 (Aug 23, 2010)
+============================
+
+* #495: Fix internal vs. external link distinction for links coming
+ from a docutils table-of-contents.
+
+* #494: Fix the ``maxdepth`` option for the ``toctree()`` template
+ callable when used with ``collapse=True``.
+
+* #507: Fix crash parsing Python argument lists containing brackets
+ in string literals.
+
+* #501: Fix regression when building LaTeX docs with figures that
+ don't have captions.
+
+* #510: Fix inheritance diagrams for classes that are not picklable.
+
+* #497: Introduce separate background color for the sidebar collapse
+ button, making it easier to see.
+
+* #502, #503, #496: Fix small layout bugs in several builtin themes.
+
+
+Release 1.0.2 (Aug 14, 2010)
+============================
+
+* #490: Fix cross-references to objects of types added by the
+ :func:`~.Sphinx.add_object_type` API function.
+
+* Fix handling of doc field types for different directive types.
+
+* Allow breaking long signatures, continuing with backlash-escaped
+ newlines.
+
+* Fix unwanted styling of C domain references (because of a namespace
+ clash with Pygments styles).
+
+* Allow references to PEPs and RFCs with explicit anchors.
+
+* #471: Fix LaTeX references to figures.
+
+* #482: When doing a non-exact search, match only the given type
+ of object.
+
+* #481: Apply non-exact search for Python reference targets with
+ ``.name`` for modules too.
+
+* #484: Fix crash when duplicating a parameter in an info field list.
+
+* #487: Fix setting the default role to one provided by the
+ ``oldcmarkup`` extension.
+
+* #488: Fix crash when json-py is installed, which provides a
+ ``json`` module but is incompatible to simplejson.
+
+* #480: Fix handling of target naming in intersphinx.
+
+* #486: Fix removal of ``!`` for all cross-reference roles.
+
+
+Release 1.0.1 (Jul 27, 2010)
+============================
+
+* #470: Fix generated target names for reST domain objects; they
+ are not in the same namespace.
+
+* #266: Add Bengali language.
+
+* #473: Fix a bug in parsing JavaScript object names.
+
+* #474: Fix building with SingleHTMLBuilder when there is no toctree.
+
+* Fix display names for objects linked to by intersphinx with
+ explicit targets.
+
* Fix building with the JSON builder.
* Fix hyperrefs in object descriptions for LaTeX.
@@ -170,15 +466,12 @@ Features added
- Added Danish translation, thanks to Hjorth Larsen.
- Added Lithuanian translation, thanks to Dalius Dobravolskas.
+* Bugs fixed:
-Release 0.6.8 (in development)
-==============================
-
-* #445: Fix links to result pages when using the search function
- of HTML built with the ``dirhtml`` builder.
-
-* #444: In templates, properly re-escape values treated with the
- "striptags" Jinja filter.
+ - #445: Fix links to result pages when using the search function
+ of HTML built with the ``dirhtml`` builder.
+ - #444: In templates, properly re-escape values treated with the
+ "striptags" Jinja filter.
Release 0.6.7 (Jun 05, 2010)
diff --git a/EXAMPLES b/EXAMPLES
index 52fce0e8b..8fe0ea98b 100644
--- a/EXAMPLES
+++ b/EXAMPLES
@@ -12,29 +12,34 @@ interesting examples.
Documentation using the default theme
-------------------------------------
-* APSW: http://apsw.googlecode.com/svn/publish/index.html
+* APSW: http://apidoc.apsw.googlecode.com/hg/index.html
* ASE: https://wiki.fysik.dtu.dk/ase/
* boostmpi: http://documen.tician.de/boostmpi/
-* Calibre: http://calibre.kovidgoyal.net/user_manual/
+* Calibre: http://calibre-ebook.com/user_manual/
* CodePy: http://documen.tician.de/codepy/
* Cython: http://docs.cython.org/
* C\\C++ Python language binding project: http://language-binding.net/index.html
* Director: http://packages.python.org/director/
-* F2py: http://www.f2py.org/html/
+* Dirigible: http://www.projectdirigible.com/documentation/
+* F2py: http://f2py.sourceforge.net/docs/
* GeoDjango: http://geodjango.org/docs/
* gevent: http://www.gevent.org/
* Google Wave API: http://wave-robot-python-client.googlecode.com/svn/trunk/pydocs/index.html
* GSL Shell: http://www.nongnu.org/gsl-shell/
+* Heapkeeper: http://heapkeeper.org/
+* Hands-on Python Tutorial: http://anh.cs.luc.edu/python/hands-on/3.1/handsonHtml/
* Hedge: http://documen.tician.de/hedge/
* Kaa: http://doc.freevo.org/api/kaa/
+* Leo: http://webpages.charter.net/edreamleo/front.html
+* Lino: http://lino.saffre-rumma.net/
* MeshPy: http://documen.tician.de/meshpy/
* mpmath: http://mpmath.googlecode.com/svn/trunk/doc/build/index.html
* OpenEXR: http://excamera.com/articles/26/doc/index.html
* OpenGDA: http://www.opengda.org/gdadoc/html/
* openWNS: http://docs.openwns.org/
* Paste: http://pythonpaste.org/script/
-* Paver: http://www.blueskyonmars.com/projects/paver/
-* Pyccuracy: http://www.pyccuracy.org/
+* Paver: http://paver.github.com/paver/
+* Pyccuracy: https://github.com/heynemann/pyccuracy/wiki/
* PyCuda: http://documen.tician.de/pycuda/
* Pyevolve: http://pyevolve.sourceforge.net/
* Pylo: http://documen.tician.de/pylo/
@@ -66,16 +71,16 @@ Documentation using a customized version of the default theme
* IFM: http://fluffybunny.memebot.com/ifm-docs/index.html
* LEPL: http://www.acooke.org/lepl/
* Mayavi: http://code.enthought.com/projects/mayavi/docs/development/html/mayavi
-* NOC: http://trac.nocproject.org/trac/wiki/NocGuide
+* NOC: http://redmine.nocproject.org/projects/noc
* NumPy: http://docs.scipy.org/doc/numpy/reference/
* Peach^3: http://peach3.nl/doc/latest/userdoc/
-* Py on Windows: http://timgolden.me.uk/python-on-windows/
* PyLit: http://pylit.berlios.de/
* Sage: http://sagemath.org/doc/
* SciPy: http://docs.scipy.org/doc/scipy/reference/
* simuPOP: http://simupop.sourceforge.net/manual_release/build/userGuide.html
* Sprox: http://sprox.org/
* TurboGears: http://turbogears.org/2.0/docs/
+* Zentyal: http://doc.zentyal.org/
* Zope: http://docs.zope.org/zope2/index.html
* zc.async: http://packages.python.org/zc.async/1.5.0/
@@ -83,20 +88,22 @@ Documentation using a customized version of the default theme
Documentation using the sphinxdoc theme
---------------------------------------
-* Fityk: http://www.unipress.waw.pl/fityk/
+* Fityk: http://fityk.nieto.pl/
* MapServer: http://mapserver.org/
* Matplotlib: http://matplotlib.sourceforge.net/
* Music21: http://mit.edu/music21/doc/html/contents.html
* MyHDL: http://www.myhdl.org/doc/0.6/
* NetworkX: http://networkx.lanl.gov/
* Pweave: http://mpastell.com/pweave/
+* Pyre: http://docs.danse.us/pyre/sphinx/
* Pysparse: http://pysparse.sourceforge.net/
* PyTango:
http://www.tango-controls.org/static/PyTango/latest/doc/html/index.html
-* Reteisi: http://docs.argolinux.org/reteisi/
-* Satchmo: http://www.satchmoproject.com/docs/svn/
+* Reteisi: http://www.reteisi.org/contents.html
+* Satchmo: http://www.satchmoproject.com/docs/dev/
* Sphinx: http://sphinx.pocoo.org/
* Sqlkit: http://sqlkit.argolinux.org/
+* Tau: http://www.tango-controls.org/static/tau/latest/doc/html/index.html
* Total Open Station: http://tops.berlios.de/
* WebFaction: http://docs.webfaction.com/
@@ -104,12 +111,13 @@ Documentation using the sphinxdoc theme
Documentation using another builtin theme
-----------------------------------------
-* C/C++ Development with Eclipse: http://book.dehlia.in/c-cpp-eclipse/ (agogo)
+* C/C++ Development with Eclipse: http://eclipsebook.in/ (agogo)
* Distribute: http://packages.python.org/distribute/ (nature)
-* Jinja: http://jinja.pocoo.org/2/documentation/ (scrolls)
+* Jinja: http://jinja.pocoo.org/ (scrolls)
* pip: http://pip.openplans.org/ (nature)
* Programmieren mit PyGTK und Glade (German):
http://www.florian-diesch.de/doc/python-und-glade/online/ (agogo)
+* pypol: http://pypol.altervista.org/ (nature)
* Spring Python: http://springpython.webfactional.com/current/sphinx/index.html
(nature)
* sqlparse: http://python-sqlparse.googlecode.com/svn/docs/api/index.html
@@ -134,16 +142,18 @@ Documentation using a custom theme/integrated in a site
* Open ERP: http://doc.openerp.com/
* OpenLayers: http://docs.openlayers.org/
* PyEphem: http://rhodesmill.org/pyephem/
+* German Plone 4.0 user manual: http://www.hasecke.com/plone-benutzerhandbuch/4.0/
* Pylons: http://pylonshq.com/docs/en/0.9.7/
* PyMOTW: http://www.doughellmann.com/PyMOTW/
* qooxdoo: http://manual.qooxdoo.org/current
* Roundup: http://www.roundup-tracker.org/
* Selenium: http://seleniumhq.org/docs/
* Self: http://selflanguage.org/
+* Tablib: http://tablib.org/
* SQLAlchemy: http://www.sqlalchemy.org/docs/
* tinyTiM: http://tinytim.sourceforge.net/docs/2.0/
* tipfy: http://www.tipfy.org/docs/
-* Werkzeug: http://werkzeug.pocoo.org/documentation/dev/
+* Werkzeug: http://werkzeug.pocoo.org/docs/
* WFront: http://discorporate.us/projects/WFront/
@@ -152,7 +162,22 @@ Homepages and other non-documentation sites
* Applied Mathematics at the Stellenbosch University: http://dip.sun.ac.za/
* A personal page: http://www.dehlia.in/
-* Benoit Boissinot: http://perso.ens-lyon.fr/benoit.boissinot/
+* Benoit Boissinot: http://bboissin.appspot.com/
* lunarsite: http://lunaryorn.de/
* The Wine Cellar Book: http://www.thewinecellarbook.com/doc/en/
* VOR: http://www.vor-cycling.be/
+
+
+Books produced using Sphinx
+---------------------------
+
+* "The ``repoze.bfg`` Web Application Framework":
+ http://www.amazon.com/repoze-bfg-Web-Application-Framework-Version/dp/0615345379
+* A Theoretical Physics Reference book: http://theoretical-physics.net/
+* "Simple and Steady Way of Learning for Software Engineering" (in Japanese):
+ http://www.amazon.co.jp/dp/477414259X/
+* "Expert Python Programming" (Japanese translation):
+ http://www.amazon.co.jp/dp/4048686291/
+* "Pomodoro Technique Illustrated" (Japanese translation):
+ http://www.amazon.co.jp/dp/4048689525/
+
diff --git a/LICENSE b/LICENSE
index 468914934..fa1ef9950 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,7 @@
License for Sphinx
==================
-Copyright (c) 2007-2010 by the Sphinx team (see AUTHORS file).
+Copyright (c) 2007-2011 by the Sphinx team (see AUTHORS file).
All rights reserved.
Redistribution and use in source and binary forms, with or without
diff --git a/MANIFEST.in b/MANIFEST.in
index 25cbc334f..cfc44c17e 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -7,7 +7,7 @@ include TODO
include babel.cfg
include Makefile
-include ez_setup.py
+include distribute_setup.py
include sphinx-autogen.py
include sphinx-build.py
include sphinx-quickstart.py
diff --git a/Makefile b/Makefile
index 7057a7152..128b2c809 100644
--- a/Makefile
+++ b/Makefile
@@ -1,36 +1,64 @@
PYTHON ?= python
-export PYTHONPATH = $(shell echo "$$PYTHONPATH"):./sphinx
+.PHONY: all check clean clean-pyc clean-patchfiles clean-backupfiles \
+ clean-generated pylint reindent test covertest build convert-utils
-.PHONY: all check clean clean-pyc clean-patchfiles pylint reindent test
+DONT_CHECK = -i build -i dist -i sphinx/style/jquery.js \
+ -i sphinx/pycode/pgen2 -i sphinx/util/smartypants.py \
+ -i .ropeproject -i doc/_build -i tests/path.py \
+ -i tests/coverage.py -i env -i utils/convert.py \
+ -i sphinx/search/ja.py \
+ -i utils/reindent3.py -i utils/check_sources3.py -i .tox
-all: clean-pyc check test
+all: clean-pyc clean-backupfiles check test
+ifeq ($(PYTHON), python3)
+check: convert-utils
+ @$(PYTHON) utils/check_sources3.py $(DONT_CHECK) .
+else
check:
- @$(PYTHON) utils/check_sources.py -i build -i dist -i sphinx/style/jquery.js \
- -i sphinx/pycode/pgen2 -i sphinx/util/smartypants.py -i .ropeproject \
- -i doc/_build -i ez_setup.py -i tests/path.py -i tests/coverage.py \
- -i env -i .tox .
+ @$(PYTHON) utils/check_sources.py $(DONT_CHECK) .
+endif
-clean: clean-pyc clean-patchfiles
+clean: clean-pyc clean-patchfiles clean-backupfiles clean-generated
clean-pyc:
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
- find . -name '*~' -exec rm -f {} +
clean-patchfiles:
find . -name '*.orig' -exec rm -f {} +
find . -name '*.rej' -exec rm -f {} +
+clean-backupfiles:
+ find . -name '*~' -exec rm -f {} +
+ find . -name '*.bak' -exec rm -f {} +
+
+clean-generated:
+ rm -f utils/*3.py*
+
pylint:
@pylint --rcfile utils/pylintrc sphinx
+ifeq ($(PYTHON), python3)
+reindent: convert-utils
+ @$(PYTHON) utils/reindent3.py -r -n .
+else
reindent:
- @$(PYTHON) utils/reindent.py -r -B .
+ @$(PYTHON) utils/reindent.py -r -n .
+endif
-test:
+test: build
@cd tests; $(PYTHON) run.py -d -m '^[tT]est' $(TEST)
-covertest:
- @cd tests; $(PYTHON) run.py -d -m '^[tT]est' --with-coverage --cover-package=sphinx $(TEST)
+covertest: build
+ @cd tests; $(PYTHON) run.py -d -m '^[tT]est' --with-coverage \
+ --cover-package=sphinx $(TEST)
+
+build:
+ @$(PYTHON) setup.py build
+
+ifeq ($(PYTHON), python3)
+convert-utils:
+ @python3 utils/convert.py -i utils/convert.py utils/
+endif
diff --git a/README b/README
index bb2dea9d6..e31d6b936 100644
--- a/README
+++ b/README
@@ -26,6 +26,18 @@ Then, direct your browser to ``_build/html/index.html``.
Or read them online at .
+Testing
+=======
+
+To run the tests with the interpreter available as ``python``, use::
+
+ make test
+
+If you want to use a different interpreter, e.g. ``python3``, use::
+
+ PYTHON=python3 make test
+
+
Contributing
============
diff --git a/custom_fixers/__init__.py b/custom_fixers/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/custom_fixers/fix_alt_unicode.py b/custom_fixers/fix_alt_unicode.py
new file mode 100644
index 000000000..55175e90f
--- /dev/null
+++ b/custom_fixers/fix_alt_unicode.py
@@ -0,0 +1,12 @@
+from lib2to3.fixer_base import BaseFix
+from lib2to3.fixer_util import Name
+
+class FixAltUnicode(BaseFix):
+ PATTERN = """
+ func=funcdef< 'def' name='__unicode__'
+ parameters< '(' NAME ')' > any+ >
+ """
+
+ def transform(self, node, results):
+ name = results['name']
+ name.replace(Name('__str__', prefix=name.prefix))
diff --git a/distribute_setup.py b/distribute_setup.py
new file mode 100644
index 000000000..37117b34e
--- /dev/null
+++ b/distribute_setup.py
@@ -0,0 +1,485 @@
+#!python
+"""Bootstrap distribute installation
+
+If you want to use setuptools in your package's setup.py, just include this
+file in the same directory with it, and add this to the top of your setup.py::
+
+ from distribute_setup import use_setuptools
+ use_setuptools()
+
+If you want to require a specific version of setuptools, set a download
+mirror, or use an alternate download directory, you can do so by supplying
+the appropriate options to ``use_setuptools()``.
+
+This file can also be run as a script to install or upgrade setuptools.
+"""
+import os
+import sys
+import time
+import fnmatch
+import tempfile
+import tarfile
+from distutils import log
+
+try:
+ from site import USER_SITE
+except ImportError:
+ USER_SITE = None
+
+try:
+ import subprocess
+
+ def _python_cmd(*args):
+ args = (sys.executable,) + args
+ return subprocess.call(args) == 0
+
+except ImportError:
+ # will be used for python 2.3
+ def _python_cmd(*args):
+ args = (sys.executable,) + args
+ # quoting arguments if windows
+ if sys.platform == 'win32':
+ def quote(arg):
+ if ' ' in arg:
+ return '"%s"' % arg
+ return arg
+ args = [quote(arg) for arg in args]
+ return os.spawnl(os.P_WAIT, sys.executable, *args) == 0
+
+DEFAULT_VERSION = "0.6.13"
+DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/"
+SETUPTOOLS_FAKED_VERSION = "0.6c11"
+
+SETUPTOOLS_PKG_INFO = """\
+Metadata-Version: 1.0
+Name: setuptools
+Version: %s
+Summary: xxxx
+Home-page: xxx
+Author: xxx
+Author-email: xxx
+License: xxx
+Description: xxx
+""" % SETUPTOOLS_FAKED_VERSION
+
+
+def _install(tarball):
+ # extracting the tarball
+ tmpdir = tempfile.mkdtemp()
+ log.warn('Extracting in %s', tmpdir)
+ old_wd = os.getcwd()
+ try:
+ os.chdir(tmpdir)
+ tar = tarfile.open(tarball)
+ _extractall(tar)
+ tar.close()
+
+ # going in the directory
+ subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
+ os.chdir(subdir)
+ log.warn('Now working in %s', subdir)
+
+ # installing
+ log.warn('Installing Distribute')
+ if not _python_cmd('setup.py', 'install'):
+ log.warn('Something went wrong during the installation.')
+ log.warn('See the error message above.')
+ finally:
+ os.chdir(old_wd)
+
+
+def _build_egg(egg, tarball, to_dir):
+ # extracting the tarball
+ tmpdir = tempfile.mkdtemp()
+ log.warn('Extracting in %s', tmpdir)
+ old_wd = os.getcwd()
+ try:
+ os.chdir(tmpdir)
+ tar = tarfile.open(tarball)
+ _extractall(tar)
+ tar.close()
+
+ # going in the directory
+ subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
+ os.chdir(subdir)
+ log.warn('Now working in %s', subdir)
+
+ # building an egg
+ log.warn('Building a Distribute egg in %s', to_dir)
+ _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir)
+
+ finally:
+ os.chdir(old_wd)
+ # returning the result
+ log.warn(egg)
+ if not os.path.exists(egg):
+ raise IOError('Could not build the egg.')
+
+
+def _do_download(version, download_base, to_dir, download_delay):
+ egg = os.path.join(to_dir, 'distribute-%s-py%d.%d.egg'
+ % (version, sys.version_info[0], sys.version_info[1]))
+ if not os.path.exists(egg):
+ tarball = download_setuptools(version, download_base,
+ to_dir, download_delay)
+ _build_egg(egg, tarball, to_dir)
+ sys.path.insert(0, egg)
+ import setuptools
+ setuptools.bootstrap_install_from = egg
+
+
+def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
+ to_dir=os.curdir, download_delay=15, no_fake=True):
+ # making sure we use the absolute path
+ to_dir = os.path.abspath(to_dir)
+ was_imported = 'pkg_resources' in sys.modules or \
+ 'setuptools' in sys.modules
+ try:
+ try:
+ import pkg_resources
+ if not hasattr(pkg_resources, '_distribute'):
+ if not no_fake:
+ _fake_setuptools()
+ raise ImportError
+ except ImportError:
+ return _do_download(version, download_base, to_dir, download_delay)
+ try:
+ pkg_resources.require("distribute>="+version)
+ return
+ except pkg_resources.VersionConflict:
+ e = sys.exc_info()[1]
+ if was_imported:
+ sys.stderr.write(
+ "The required version of distribute (>=%s) is not available,\n"
+ "and can't be installed while this script is running. Please\n"
+ "install a more recent version first, using\n"
+ "'easy_install -U distribute'."
+ "\n\n(Currently using %r)\n" % (version, e.args[0]))
+ sys.exit(2)
+ else:
+ del pkg_resources, sys.modules['pkg_resources'] # reload ok
+ return _do_download(version, download_base, to_dir,
+ download_delay)
+ except pkg_resources.DistributionNotFound:
+ return _do_download(version, download_base, to_dir,
+ download_delay)
+ finally:
+ if not no_fake:
+ _create_fake_setuptools_pkg_info(to_dir)
+
+def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
+ to_dir=os.curdir, delay=15):
+ """Download distribute from a specified location and return its filename
+
+ `version` should be a valid distribute version number that is available
+ as an egg for download under the `download_base` URL (which should end
+ with a '/'). `to_dir` is the directory where the egg will be downloaded.
+ `delay` is the number of seconds to pause before an actual download
+ attempt.
+ """
+ # making sure we use the absolute path
+ to_dir = os.path.abspath(to_dir)
+ try:
+ from urllib.request import urlopen
+ except ImportError:
+ from urllib2 import urlopen
+ tgz_name = "distribute-%s.tar.gz" % version
+ url = download_base + tgz_name
+ saveto = os.path.join(to_dir, tgz_name)
+ src = dst = None
+ if not os.path.exists(saveto): # Avoid repeated downloads
+ try:
+ log.warn("Downloading %s", url)
+ src = urlopen(url)
+ # Read/write all in one block, so we don't create a corrupt file
+ # if the download is interrupted.
+ data = src.read()
+ dst = open(saveto, "wb")
+ dst.write(data)
+ finally:
+ if src:
+ src.close()
+ if dst:
+ dst.close()
+ return os.path.realpath(saveto)
+
+def _no_sandbox(function):
+ def __no_sandbox(*args, **kw):
+ try:
+ from setuptools.sandbox import DirectorySandbox
+ if not hasattr(DirectorySandbox, '_old'):
+ def violation(*args):
+ pass
+ DirectorySandbox._old = DirectorySandbox._violation
+ DirectorySandbox._violation = violation
+ patched = True
+ else:
+ patched = False
+ except ImportError:
+ patched = False
+
+ try:
+ return function(*args, **kw)
+ finally:
+ if patched:
+ DirectorySandbox._violation = DirectorySandbox._old
+ del DirectorySandbox._old
+
+ return __no_sandbox
+
+def _patch_file(path, content):
+ """Will backup the file then patch it"""
+ existing_content = open(path).read()
+ if existing_content == content:
+ # already patched
+ log.warn('Already patched.')
+ return False
+ log.warn('Patching...')
+ _rename_path(path)
+ f = open(path, 'w')
+ try:
+ f.write(content)
+ finally:
+ f.close()
+ return True
+
+_patch_file = _no_sandbox(_patch_file)
+
+def _same_content(path, content):
+ return open(path).read() == content
+
+def _rename_path(path):
+ new_name = path + '.OLD.%s' % time.time()
+ log.warn('Renaming %s into %s', path, new_name)
+ os.rename(path, new_name)
+ return new_name
+
+def _remove_flat_installation(placeholder):
+ if not os.path.isdir(placeholder):
+ log.warn('Unkown installation at %s', placeholder)
+ return False
+ found = False
+ for file in os.listdir(placeholder):
+ if fnmatch.fnmatch(file, 'setuptools*.egg-info'):
+ found = True
+ break
+ if not found:
+ log.warn('Could not locate setuptools*.egg-info')
+ return
+
+ log.warn('Removing elements out of the way...')
+ pkg_info = os.path.join(placeholder, file)
+ if os.path.isdir(pkg_info):
+ patched = _patch_egg_dir(pkg_info)
+ else:
+ patched = _patch_file(pkg_info, SETUPTOOLS_PKG_INFO)
+
+ if not patched:
+ log.warn('%s already patched.', pkg_info)
+ return False
+ # now let's move the files out of the way
+ for element in ('setuptools', 'pkg_resources.py', 'site.py'):
+ element = os.path.join(placeholder, element)
+ if os.path.exists(element):
+ _rename_path(element)
+ else:
+ log.warn('Could not find the %s element of the '
+ 'Setuptools distribution', element)
+ return True
+
+_remove_flat_installation = _no_sandbox(_remove_flat_installation)
+
+def _after_install(dist):
+ log.warn('After install bootstrap.')
+ placeholder = dist.get_command_obj('install').install_purelib
+ _create_fake_setuptools_pkg_info(placeholder)
+
+def _create_fake_setuptools_pkg_info(placeholder):
+ if not placeholder or not os.path.exists(placeholder):
+ log.warn('Could not find the install location')
+ return
+ pyver = '%s.%s' % (sys.version_info[0], sys.version_info[1])
+ setuptools_file = 'setuptools-%s-py%s.egg-info' % \
+ (SETUPTOOLS_FAKED_VERSION, pyver)
+ pkg_info = os.path.join(placeholder, setuptools_file)
+ if os.path.exists(pkg_info):
+ log.warn('%s already exists', pkg_info)
+ return
+
+ log.warn('Creating %s', pkg_info)
+ f = open(pkg_info, 'w')
+ try:
+ f.write(SETUPTOOLS_PKG_INFO)
+ finally:
+ f.close()
+
+ pth_file = os.path.join(placeholder, 'setuptools.pth')
+ log.warn('Creating %s', pth_file)
+ f = open(pth_file, 'w')
+ try:
+ f.write(os.path.join(os.curdir, setuptools_file))
+ finally:
+ f.close()
+
+_create_fake_setuptools_pkg_info = _no_sandbox(_create_fake_setuptools_pkg_info)
+
+def _patch_egg_dir(path):
+ # let's check if it's already patched
+ pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
+ if os.path.exists(pkg_info):
+ if _same_content(pkg_info, SETUPTOOLS_PKG_INFO):
+ log.warn('%s already patched.', pkg_info)
+ return False
+ _rename_path(path)
+ os.mkdir(path)
+ os.mkdir(os.path.join(path, 'EGG-INFO'))
+ pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
+ f = open(pkg_info, 'w')
+ try:
+ f.write(SETUPTOOLS_PKG_INFO)
+ finally:
+ f.close()
+ return True
+
+_patch_egg_dir = _no_sandbox(_patch_egg_dir)
+
+def _before_install():
+ log.warn('Before install bootstrap.')
+ _fake_setuptools()
+
+
+def _under_prefix(location):
+ if 'install' not in sys.argv:
+ return True
+ args = sys.argv[sys.argv.index('install')+1:]
+ for index, arg in enumerate(args):
+ for option in ('--root', '--prefix'):
+ if arg.startswith('%s=' % option):
+ top_dir = arg.split('root=')[-1]
+ return location.startswith(top_dir)
+ elif arg == option:
+ if len(args) > index:
+ top_dir = args[index+1]
+ return location.startswith(top_dir)
+ if arg == '--user' and USER_SITE is not None:
+ return location.startswith(USER_SITE)
+ return True
+
+
+def _fake_setuptools():
+ log.warn('Scanning installed packages')
+ try:
+ import pkg_resources
+ except ImportError:
+ # we're cool
+ log.warn('Setuptools or Distribute does not seem to be installed.')
+ return
+ ws = pkg_resources.working_set
+ try:
+ setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools',
+ replacement=False))
+ except TypeError:
+ # old distribute API
+ setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools'))
+
+ if setuptools_dist is None:
+ log.warn('No setuptools distribution found')
+ return
+ # detecting if it was already faked
+ setuptools_location = setuptools_dist.location
+ log.warn('Setuptools installation detected at %s', setuptools_location)
+
+ # if --root or --preix was provided, and if
+ # setuptools is not located in them, we don't patch it
+ if not _under_prefix(setuptools_location):
+ log.warn('Not patching, --root or --prefix is installing Distribute'
+ ' in another location')
+ return
+
+ # let's see if its an egg
+ if not setuptools_location.endswith('.egg'):
+ log.warn('Non-egg installation')
+ res = _remove_flat_installation(setuptools_location)
+ if not res:
+ return
+ else:
+ log.warn('Egg installation')
+ pkg_info = os.path.join(setuptools_location, 'EGG-INFO', 'PKG-INFO')
+ if (os.path.exists(pkg_info) and
+ _same_content(pkg_info, SETUPTOOLS_PKG_INFO)):
+ log.warn('Already patched.')
+ return
+ log.warn('Patching...')
+ # let's create a fake egg replacing setuptools one
+ res = _patch_egg_dir(setuptools_location)
+ if not res:
+ return
+ log.warn('Patched done.')
+ _relaunch()
+
+
+def _relaunch():
+ log.warn('Relaunching...')
+ # we have to relaunch the process
+ # pip marker to avoid a relaunch bug
+ if sys.argv[:3] == ['-c', 'install', '--single-version-externally-managed']:
+ sys.argv[0] = 'setup.py'
+ args = [sys.executable] + sys.argv
+ sys.exit(subprocess.call(args))
+
+
+def _extractall(self, path=".", members=None):
+ """Extract all members from the archive to the current working
+ directory and set owner, modification time and permissions on
+ directories afterwards. `path' specifies a different directory
+ to extract to. `members' is optional and must be a subset of the
+ list returned by getmembers().
+ """
+ import copy
+ import operator
+ from tarfile import ExtractError
+ directories = []
+
+ if members is None:
+ members = self
+
+ for tarinfo in members:
+ if tarinfo.isdir():
+ # Extract directories with a safe mode.
+ directories.append(tarinfo)
+ tarinfo = copy.copy(tarinfo)
+ tarinfo.mode = 448 # decimal for oct 0700
+ self.extract(tarinfo, path)
+
+ # Reverse sort directories.
+ if sys.version_info < (2, 4):
+ def sorter(dir1, dir2):
+ return cmp(dir1.name, dir2.name)
+ directories.sort(sorter)
+ directories.reverse()
+ else:
+ directories.sort(key=operator.attrgetter('name'), reverse=True)
+
+ # Set correct owner, mtime and filemode on directories.
+ for tarinfo in directories:
+ dirpath = os.path.join(path, tarinfo.name)
+ try:
+ self.chown(tarinfo, dirpath)
+ self.utime(tarinfo, dirpath)
+ self.chmod(tarinfo, dirpath)
+ except ExtractError:
+ e = sys.exc_info()[1]
+ if self.errorlevel > 1:
+ raise
+ else:
+ self._dbg(1, "tarfile: %s" % e)
+
+
+def main(argv, version=DEFAULT_VERSION):
+ """Install or upgrade setuptools and EasyInstall"""
+ tarball = download_setuptools()
+ _install(tarball)
+
+
+if __name__ == '__main__':
+ main(sys.argv[1:])
diff --git a/doc/Makefile b/doc/Makefile
index 90fb5af25..47951316a 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -8,8 +8,9 @@ PAPER =
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) \
- $(SPHINXOPTS) $(O) .
+ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) \
+ $(SPHINXOPTS) $(O) .
+I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(O) .
.PHONY: help clean html dirhtml singlehtml text man pickle json htmlhelp \
qthelp devhelp epub latex latexpdf changes linkcheck doctest
@@ -29,6 +30,9 @@ help:
@echo " epub to make an epub file"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run pdflatex"
+ @echo " texinfo to make Texinfo files"
+ @echo " info to make Texinfo files and run them through makeinfo"
+ @echo " gettext to make PO message catalogs"
@echo " changes to make an overview over all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@@ -112,6 +116,11 @@ latexpdf:
make -C _build/latex all-pdf
@echo "pdflatex finished; the PDF files are in _build/latex."
+gettext:
+ $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) _build/locale
+ @echo
+ @echo "Build finished. The message catalogs are in _build/locale."
+
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes
@echo
@@ -125,3 +134,16 @@ linkcheck:
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest
+
+texinfo:
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) _build/texinfo
+ @echo
+ @echo "Build finished. The Texinfo files are in _build/texinfo."
+ @echo "Run \`make' in that directory to run these through makeinfo" \
+ "(use \`make info' here to do that automatically)."
+
+info:
+ $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) _build/texinfo
+ @echo "Running Texinfo files through makeinfo..."
+ make -C _build/texinfo info
+ @echo "makeinfo finished; the Info files are in _build/texinfo."
diff --git a/doc/_static/pocoo.png b/doc/_static/pocoo.png
new file mode 100644
index 000000000..297dcd5e0
Binary files /dev/null and b/doc/_static/pocoo.png differ
diff --git a/doc/_templates/index.html b/doc/_templates/index.html
index 524b2ffb6..34dead7e6 100644
--- a/doc/_templates/index.html
+++ b/doc/_templates/index.html
@@ -12,7 +12,7 @@
Sphinx is a tool that makes it easy to create intelligent and beautiful
documentation, written by Georg Brandl and licensed under the BSD license.
- It was originally created for the
+ It was originally created for the
new Python documentation , and it has excellent facilities for the
documentation of Python projects, but C/C++ is already supported as well,
and it is planned to add special support for other languages as well. Of
diff --git a/doc/_templates/indexsidebar.html b/doc/_templates/indexsidebar.html
index a268ec6ef..feafd9046 100644
--- a/doc/_templates/indexsidebar.html
+++ b/doc/_templates/indexsidebar.html
@@ -1,3 +1,6 @@
+
+
+
Download
{% if version.endswith('(hg)') %}
This documentation is for version {{ version }} , which is
@@ -23,6 +26,6 @@ are also available.
-or come to the #python-docs channel on FreeNode.
+or come to the #pocoo channel on FreeNode.
You can also open an issue at the
tracker .
diff --git a/doc/builders.rst b/doc/builders.rst
index 6e90ccc62..71600137d 100644
--- a/doc/builders.rst
+++ b/doc/builders.rst
@@ -144,6 +144,26 @@ Note that a direct PDF builder using ReportLab is available in `rst2pdf
.. versionadded:: 1.0
+
+.. module:: sphinx.builders.texinfo
+.. class:: TexinfoBuilder
+
+ This builder produces Texinfo files that can be processed into Info files by
+ the :program:`makeinfo` program. You have to specify which documents are to
+ be included in which Texinfo files via the :confval:`texinfo_documents`
+ configuration value.
+
+ The Info format is the basis of the on-line help system used by GNU Emacs and
+ the terminal-based program :program:`info`. See :ref:`texinfo-faq` for more
+ details. The Texinfo format is the official documentation system used by the
+ GNU project. More information on Texinfo can be found at
+ ` `_.
+
+ Its name is ``texinfo``.
+
+ .. versionadded:: 1.1
+
+
.. currentmodule:: sphinx.builders.html
.. class:: SerializingHTMLBuilder
@@ -220,6 +240,18 @@ Note that a direct PDF builder using ReportLab is available in `rst2pdf
.. versionadded:: 0.5
+.. module:: sphinx.builders.gettext
+.. class:: MessageCatalogBuilder
+
+ This builder produces gettext-style message catalogs. Each top-level file or
+ subdirectory grows a single ``.pot`` catalog template.
+
+ See the documentation on :ref:`intl` for further reference.
+
+ Its name is ``gettext``.
+
+ .. versionadded:: 1.1
+
.. module:: sphinx.builders.changes
.. class:: ChangesBuilder
@@ -255,11 +287,11 @@ All serialization builders outputs one file per source file and a few special
files. They also copy the reST source files in the directory ``_sources``
under the output directory.
-The :class:`PickleHTMLBuilder` is a builtin subclass that implements the pickle
+The :class:`.PickleHTMLBuilder` is a builtin subclass that implements the pickle
serialization interface.
The files per source file have the extensions of
-:attr:`~SerializingHTMLBuilder.out_suffix`, and are arranged in directories
+:attr:`~.SerializingHTMLBuilder.out_suffix`, and are arranged in directories
just as the source files are. They unserialize to a dictionary (or dictionary
like structure) with these keys:
@@ -290,7 +322,7 @@ like structure) with these keys:
The special files are located in the root output directory. They are:
-:attr:`SerializingHTMLBuilder.globalcontext_filename`
+:attr:`.SerializingHTMLBuilder.globalcontext_filename`
A pickled dict with these keys:
``project``, ``copyright``, ``release``, ``version``
@@ -309,7 +341,7 @@ The special files are located in the root output directory. They are:
``titles``
A dictionary of all documents' titles, as HTML strings.
-:attr:`SerializingHTMLBuilder.searchindex_filename`
+:attr:`.SerializingHTMLBuilder.searchindex_filename`
An index that can be used for searching the documentation. It is a pickled
list with these entries:
diff --git a/doc/conf.py b/doc/conf.py
index 8b76d23f1..19b952942 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -13,7 +13,7 @@ templates_path = ['_templates']
exclude_patterns = ['_build']
project = 'Sphinx'
-copyright = '2007-2010, Georg Brandl'
+copyright = '2007-2011, Georg Brandl'
version = sphinx.__released__
release = version
show_authors = True
@@ -21,7 +21,6 @@ show_authors = True
html_theme = 'sphinxdoc'
modindex_common_prefix = ['sphinx.']
html_static_path = ['_static']
-html_index = 'index.html'
html_sidebars = {'index': ['indexsidebar.html', 'searchbox.html']}
html_additional_pages = {'index': 'index.html'}
html_use_opensearch = 'http://sphinx.pocoo.org'
@@ -47,6 +46,7 @@ latex_logo = '_static/sphinx.png'
latex_elements = {
'fontpkg': '\\usepackage{palatino}',
}
+latex_show_urls = 'footnote'
autodoc_member_order = 'groupwise'
todo_include_todos = True
@@ -66,6 +66,16 @@ man_pages = [
'template generator', '', 1),
]
+texinfo_documents = [
+ ('contents', 'sphinx', 'Sphinx Documentation', 'Georg Brandl',
+ 'Sphinx', 'The Sphinx documentation builder.', 'Documentation tools',
+ 1),
+]
+
+# We're not using intersphinx right now, but if we did, this would be part of
+# the mapping:
+intersphinx_mapping = {'python': ('http://docs.python.org/dev', None)}
+
# -- Extension interface -------------------------------------------------------
@@ -91,8 +101,12 @@ def parse_event(env, sig, signode):
def setup(app):
from sphinx.ext.autodoc import cut_lines
+ from sphinx.util.docfields import GroupedField
app.connect('autodoc-process-docstring', cut_lines(4, what=['module']))
- app.add_description_unit('confval', 'confval',
- objname='configuration value',
- indextemplate='pair: %s; configuration value')
- app.add_description_unit('event', 'event', 'pair: %s; event', parse_event)
+ app.add_object_type('confval', 'confval',
+ objname='configuration value',
+ indextemplate='pair: %s; configuration value')
+ fdesc = GroupedField('parameter', label='Parameters',
+ names=['param'], can_collapse=True)
+ app.add_object_type('event', 'event', 'pair: %s; event', parse_event,
+ doc_field_types=[fdesc])
diff --git a/doc/config.rst b/doc/config.rst
index ea9b731ad..1260796a9 100644
--- a/doc/config.rst
+++ b/doc/config.rst
@@ -98,7 +98,7 @@ General configuration
Example patterns:
- ``'library/xml.rst'`` -- ignores the ``library/xml.rst`` file (replaces
- entry in :confval:`unused_docs`
+ entry in :confval:`unused_docs`)
- ``'library/xml'`` -- ignores the ``library/xml`` directory (replaces entry
in :confval:`exclude_trees`)
- ``'library/xml*'`` -- ignores all files and directories starting with
@@ -143,20 +143,6 @@ General configuration
.. deprecated:: 1.0
Use :confval:`exclude_patterns` instead.
-.. confval:: locale_dirs
-
- .. versionadded:: 0.5
-
- Directories in which to search for additional Sphinx message catalogs (see
- :confval:`language`), relative to the source directory. The directories on
- this path are searched by the standard :mod:`gettext` module for a text
- domain of ``sphinx``; so if you add the directory :file:`./locale` to this
- settting, the message catalogs (compiled from ``.po`` format using
- :program:`msgfmt`) must be in
- :file:`./locale/{language}/LC_MESSAGES/sphinx.mo`.
-
- The default is ``[]``.
-
.. confval:: templates_path
A list of paths that contain extra templates (or templates that overwrite
@@ -246,6 +232,14 @@ General configuration
.. versionadded:: 1.0
+.. confval:: nitpick_ignore
+
+ A list of ``(type, target)`` tuples (by default empty) that should be ignored
+ when generating warnings in "nitpicky mode". Note that ``type`` should
+ include the domain name. An example entry would be ``('py:func', 'int')``.
+
+ .. versionadded:: 1.1
+
Project information
-------------------
@@ -272,38 +266,6 @@ Project information
If you don't need the separation provided between :confval:`version` and
:confval:`release`, just set them both to the same value.
-.. confval:: language
-
- The code for the language the docs are written in. Any text automatically
- generated by Sphinx will be in that language. Also, in the LaTeX builder, a
- suitable language will be selected as an option for the *Babel* package.
- Default is ``None``, which means that no translation will be done.
-
- .. versionadded:: 0.5
-
- Currently supported languages are:
-
- * ``ca`` -- Catalan
- * ``cs`` -- Czech
- * ``da`` -- Danish
- * ``de`` -- German
- * ``en`` -- English
- * ``es`` -- Spanish
- * ``fi`` -- Finnish
- * ``fr`` -- French
- * ``hr`` -- Croatian
- * ``it`` -- Italian
- * ``lt`` -- Lithuanian
- * ``nl`` -- Dutch
- * ``pl`` -- Polish
- * ``pt_BR`` -- Brazilian Portuguese
- * ``ru`` -- Russian
- * ``sl`` -- Slovenian
- * ``tr`` -- Turkish
- * ``uk_UA`` -- Ukrainian
- * ``zh_CN`` -- Simplified Chinese
- * ``zh_TW`` -- Traditional Chinese
-
.. confval:: today
today_fmt
@@ -345,12 +307,12 @@ Project information
A boolean that decides whether module names are prepended to all
:term:`object` names (for object types where a "module" of some kind is
- defined), e.g. for :rst:dir:`function` directives. Default is ``True``.
+ defined), e.g. for :rst:dir:`py:function` directives. Default is ``True``.
.. confval:: show_authors
- A boolean that decides whether :rst:dir:`moduleauthor` and :rst:dir:`sectionauthor`
- directives produce any output in the built files.
+ A boolean that decides whether :rst:dir:`codeauthor` and
+ :rst:dir:`sectionauthor` directives produce any output in the built files.
.. confval:: modindex_common_prefix
@@ -372,11 +334,78 @@ Project information
.. 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.
+ the ends of lines and ```` markers 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
+ .. versionchanged:: 1.1
+ Now also removes ````.
+
+
+.. _intl-options:
+
+Options for internationalization
+--------------------------------
+
+These options influence Sphinx' *Native Language Support*. See the
+documentation on :ref:`intl` for details.
+
+.. confval:: language
+
+ The code for the language the docs are written in. Any text automatically
+ generated by Sphinx will be in that language. Also, Sphinx will try to
+ substitute individual paragraphs from your documents with the translation
+ sets obtained from :confval:`locale_dirs`. In the LaTeX builder, a suitable
+ language will be selected as an option for the *Babel* package. Default is
+ ``None``, which means that no translation will be done.
+
+ .. versionadded:: 0.5
+
+ Currently supported languages by Sphinx are:
+
+ * ``bn`` -- Bengali
+ * ``ca`` -- Catalan
+ * ``cs`` -- Czech
+ * ``da`` -- Danish
+ * ``de`` -- German
+ * ``en`` -- English
+ * ``es`` -- Spanish
+ * ``fa`` -- Iranian
+ * ``fi`` -- Finnish
+ * ``fr`` -- French
+ * ``hr`` -- Croatian
+ * ``it`` -- Italian
+ * ``ja`` -- Japanese
+ * ``lt`` -- Lithuanian
+ * ``nl`` -- Dutch
+ * ``pl`` -- Polish
+ * ``pt_BR`` -- Brazilian Portuguese
+ * ``ru`` -- Russian
+ * ``sl`` -- Slovenian
+ * ``sv`` -- Swedish
+ * ``tr`` -- Turkish
+ * ``uk_UA`` -- Ukrainian
+ * ``zh_CN`` -- Simplified Chinese
+ * ``zh_TW`` -- Traditional Chinese
+
+.. confval:: locale_dirs
+
+ .. versionadded:: 0.5
+
+ Directories in which to search for additional message catalogs (see
+ :confval:`language`), relative to the source directory. The directories on
+ this path are searched by the standard :mod:`gettext` module.
+
+ Internal messages are fetched from a text domain of ``sphinx``; so if you
+ add the directory :file:`./locale` to this settting, the message catalogs
+ (compiled from ``.po`` format using :program:`msgfmt`) must be in
+ :file:`./locale/{language}/LC_MESSAGES/sphinx.mo`. The text domain of
+ individual documents depends on their docname if they are top-level project
+ files and on their base directory otherwise.
+
+ The default is ``[]``.
.. _html-options:
@@ -434,6 +463,14 @@ that use Sphinx' HTMLWriter class.
.. versionadded:: 0.4
+.. confval:: html_context
+
+ A dictionary of values to pass into the template engine's context for all
+ pages. Single values can also be put in this dictionary using the
+ :option:`-A` command-line option of ``sphinx-build``.
+
+ .. versionadded:: 0.5
+
.. confval:: html_logo
If given, this must be the name of an image file that is the logo of the
@@ -480,13 +517,19 @@ that use Sphinx' HTMLWriter class.
.. confval:: html_add_permalinks
- If true, Sphinx will add "permalinks" for each heading and description
- environment as paragraph signs that become visible when the mouse hovers over
- them. Default: ``True``.
+ Sphinx will add "permalinks" for each heading and description environment as
+ paragraph signs that become visible when the mouse hovers over them.
+
+ This value determines the text for the permalink; it defaults to ``"¶"``.
+ Set it to ``None`` or the empty string to disable permalinks.
.. versionadded:: 0.6
Previously, this was always activated.
+ .. versionchanged:: 1.1
+ This can now be a string to select the actual text of the link.
+ Previously, only boolean values were accepted.
+
.. confval:: html_sidebars
Custom sidebar templates, must be a dictionary that maps document names to
@@ -552,19 +595,6 @@ that use Sphinx' HTMLWriter class.
This will render the template ``customdownload.html`` as the page
``download.html``.
- .. note::
-
- Earlier versions of Sphinx had a value called :confval:`html_index` which
- was a clumsy way of controlling the content of the "index" document. If
- you used this feature, migrate it by adding an ``'index'`` key to this
- setting, with your custom template as the value, and in your custom
- template, use ::
-
- {% extend "defindex.html" %}
- {% block tables %}
- ... old template content ...
- {% endblock %}
-
.. confval:: html_domain_indices
If true, generate domain-specific indices in addition to the general index.
@@ -682,6 +712,38 @@ that use Sphinx' HTMLWriter class.
.. versionadded:: 1.0
+.. confval:: html_search_language
+
+ Language to be used for generating the HTML full-text search index. This
+ defaults to the global language selected with :confval:`language`. If there
+ is no support for this language, ``"en"`` is used which selects the English
+ language.
+
+ Support is present for these languages:
+
+ * ``en`` -- English
+ * ``ja`` -- Japanese
+
+ .. versionadded:: 1.1
+
+.. confval:: html_search_options
+
+ A dictionary with options for the search language support, empty by default.
+ The meaning of these options depends on the language selected.
+
+ The English support has no options.
+
+ The Japanese support has these options:
+
+ * ``type`` -- ``'mecab'`` or ``'default'`` (selects either MeCab or
+ TinySegmenter word splitter algorithm)
+ * ``dic_enc`` -- the encoding for the MeCab algorithm
+ * ``dict`` -- the dictionary to use for the MeCab algorithm
+ * ``lib`` -- the library name for finding the MeCab library via ctypes if the
+ Python binding is not installed
+
+ .. versionadded:: 1.1
+
.. confval:: htmlhelp_basename
Output file base name for HTML help builder. Default is ``'pydoc'``.
@@ -767,6 +829,8 @@ the `Dublin Core metadata `_.
The default value is ``()``.
+ .. versionadded:: 1.1
+
.. confval:: epub_pre_files
Additional files that should be inserted before the text generated by
@@ -804,6 +868,7 @@ the `Dublin Core metadata `_.
a chapter, but can be confusing because it mixes entries of differnet
depth in one list. The default value is ``True``.
+
.. confval:: epub_fix_images
This flag determines if sphinx should try to fix image formats that are not
@@ -903,10 +968,18 @@ These options influence LaTeX output.
.. confval:: latex_show_urls
- If true, add URL addresses after links. This is very useful for printed
- copies of the manual. Default is ``False``.
+ Control whether to display URL addresses. This is very useful for printed
+ copies of the manual. The setting can have the following values:
+
+ * ``'no'`` -- do not display URLs (default)
+ * ``'footnote'`` -- display URLs in footnotes
+ * ``'inline'`` -- display URLs inline in parentheses
.. versionadded:: 1.0
+ .. versionchanged:: 1.1
+ This value is now a string; previously it was a boolean value, and a true
+ value selected the ``'inline'`` display. For backwards compatibility,
+ ``True`` is still accepted.
.. confval:: latex_elements
@@ -1019,6 +1092,37 @@ These options influence LaTeX output.
Use the ``'pointsize'`` key in the :confval:`latex_elements` value.
+.. _text-options:
+
+Options for text output
+-----------------------
+
+These options influence text output.
+
+.. confval:: text_newlines
+
+ Determines which end-of-line character(s) are used in text output.
+
+ * ``'unix'``: use Unix-style line endings (``\n``)
+ * ``'windows'``: use Windows-style line endings (``\r\n``)
+ * ``'native'``: use the line ending style of the platform the documentation
+ is built on
+
+ Default: ``'unix'``.
+
+ .. versionadded:: 1.1
+
+.. confval:: text_sectionchars
+
+ A string of 7 characters that should be used for underlining sections.
+ The first character is used for first-level headings, the second for
+ second-level headings and so on.
+
+ The default is ``'*=-~"+`'``.
+
+ .. versionadded:: 1.1
+
+
.. _man-options:
Options for manual page output
@@ -1041,14 +1145,121 @@ These options influence manual page output.
well as the name of the manual page (in the NAME section).
* *description*: description of the manual page. This is used in the NAME
section.
- * *authors*: A list of strings with authors, or a single string. Can be
- an empty string or list if you do not want to automatically generate
- an AUTHORS section in the manual page.
+ * *authors*: A list of strings with authors, or a single string. Can be an
+ empty string or list if you do not want to automatically generate an
+ AUTHORS section in the manual page.
* *section*: The manual page section. Used for the output file name as well
as in the manual page header.
.. versionadded:: 1.0
+.. confval:: man_show_urls
+
+ If true, add URL addresses after links. Default is ``False``.
+
+ .. versionadded:: 1.1
+
+
+.. _texinfo-options:
+
+Options for Texinfo output
+--------------------------
+
+These options influence Texinfo output.
+
+.. confval:: texinfo_documents
+
+ This value determines how to group the document tree into Texinfo source
+ files. It must be a list of tuples ``(startdocname, targetname, title,
+ author, dir_entry, description, category, toctree_only)``, where the items
+ are:
+
+ * *startdocname*: document name that is the "root" of the Texinfo file. All
+ documents referenced by it in TOC trees will be included in the Texinfo
+ file too. (If you want only one Texinfo file, use your
+ :confval:`master_doc` here.)
+ * *targetname*: file name (no extension) of the Texinfo file in the output
+ directory.
+ * *title*: Texinfo document title. Can be empty to use the title of the
+ *startdoc*.
+ * *author*: Author for the Texinfo document. Use ``\and`` to separate
+ multiple authors, as in: ``'John \and Sarah'``.
+ * *dir_entry*: The name that will appear in the top-level ``DIR`` menu file.
+ * *description*: Descriptive text to appear in the top-level ``DIR`` menu
+ file.
+ * *category*: Specifies the section which this entry will appear in the
+ top-level ``DIR`` menu file.
+ * *toctree_only*: Must be ``True`` or ``False``. If ``True``, the *startdoc*
+ document itself is not included in the output, only the documents
+ referenced by it via TOC trees. With this option, you can put extra stuff
+ in the master document that shows up in the HTML, but not the Texinfo
+ output.
+
+ .. versionadded:: 1.1
+
+
+.. confval:: texinfo_appendices
+
+ A list of document names to append as an appendix to all manuals.
+
+ .. versionadded:: 1.1
+
+
+.. confval:: texinfo_elements
+
+ A dictionary that contains Texinfo snippets that override those Sphinx
+ usually puts into the generated ``.texi`` files.
+
+ * Keys that you may want to override include:
+
+ ``'paragraphindent'``
+ Number of spaces to indent the first line of each paragraph, default
+ ``2``. Specify ``0`` for no indentation.
+
+ ``'exampleindent'``
+ Number of spaces to indent the lines for examples or literal blocks,
+ default ``4``. Specify ``0`` for no indentation.
+
+ ``'preamble'``
+ Text inserted as is near the beginning of the file.
+
+ * Keys that are set by other options and therefore should not be overridden
+ are:
+
+ ``'filename'``
+ ``'title'``
+ ``'direntry'``
+
+ .. versionadded:: 1.1
+
+
+Options for the linkcheck builder
+---------------------------------
+
+.. confval:: linkcheck_ignore
+
+ A list of regular expressions that match URIs that should not be checked
+ when doing a ``linkcheck`` build. Example::
+
+ linkcheck_ignore = [r'http://localhost:\d+/']
+
+ .. versionadded:: 1.1
+
+.. confval:: linkcheck_timeout
+
+ A timeout value, in seconds, for the linkcheck builder. **Only works in
+ Python 2.6 and higher.** The default is to use Python's global socket
+ timeout.
+
+ .. versionadded:: 1.1
+
+.. confval:: linkcheck_workers
+
+ The number of worker threads to use when checking links. Default is 5
+ threads.
+
+ .. versionadded:: 1.1
+
.. rubric:: Footnotes
diff --git a/doc/contents.rst b/doc/contents.rst
index 079f93f26..3bbc28350 100644
--- a/doc/contents.rst
+++ b/doc/contents.rst
@@ -14,9 +14,11 @@ Sphinx documentation contents
domains
builders
config
+ intl
theming
templating
extensions
+ websupport
faq
glossary
diff --git a/doc/domains.rst b/doc/domains.rst
index c64930a24..a1e7b98e3 100644
--- a/doc/domains.rst
+++ b/doc/domains.rst
@@ -52,10 +52,19 @@ flag ``:noindex:``. An example using a Python domain directive::
.. py:function:: spam(eggs)
ham(eggs)
- :noindex:
Spam or ham the foo.
+This describes the two Python functions ``spam`` and ``ham``. (Note that when
+signatures become too long, you can break them if you add a backslash to lines
+that are continued in the next line. Example::
+
+ .. py:function:: filterwarnings(action, message='', category=Warning, \
+ module='', lineno=0, append=False)
+ :noindex:
+
+(This example also shows how to use the ``:noindex:`` flag.)
+
The domains also provide roles that link back to these object descriptions. For
example, to link to one of the functions described in the example above, you
could say ::
@@ -138,11 +147,12 @@ declarations:
.. rst:directive:: .. py:currentmodule:: name
This directive tells Sphinx that the classes, functions etc. documented from
- here are in the given module (like :rst:dir:`py:module`), but it will not create
- index entries, an entry in the Global Module Index, or a link target for
- :rst:role:`mod`. This is helpful in situations where documentation for things in
- a module is spread over multiple files or sections -- one location has the
- :rst:dir:`py:module` directive, the others only :rst:dir:`py:currentmodule`.
+ here are in the given module (like :rst:dir:`py:module`), but it will not
+ create index entries, an entry in the Global Module Index, or a link target
+ for :rst:role:`py:mod`. This is helpful in situations where documentation
+ for things in a module is spread over multiple files or sections -- one
+ location has the :rst:dir:`py:module` directive, the others only
+ :rst:dir:`py:currentmodule`.
The following directives are provided for module and class contents:
@@ -221,6 +231,45 @@ The following directives are provided for module and class contents:
.. versionadded:: 0.6
+.. rst:directive:: .. py:decorator:: name
+ .. py:decorator:: name(signature)
+
+ Describes a decorator function. The signature should *not* represent the
+ signature of the actual function, but the usage as a decorator. For example,
+ given the functions
+
+ .. code-block:: python
+
+ def removename(func):
+ func.__name__ = ''
+ return func
+
+ def setnewname(name):
+ def decorator(func):
+ func.__name__ = name
+ return func
+ return decorator
+
+ the descriptions should look like this::
+
+ .. py:decorator:: removename
+
+ Remove name of the decorated function.
+
+ .. py:decorator:: setnewname(name)
+
+ Set name of the decorated function to *name*.
+
+ There is no ``py:deco`` role to link to a decorator that is marked up with
+ this directive; rather, use the :rst:role:`py:func` role.
+
+.. rst:directive:: .. py:decoratormethod:: name
+ .. py:decoratormethod:: name(signature)
+
+ Same as :rst:dir:`py:decorator`, but for decorators that are methods.
+
+ Refer to a decorator method using the :rst:role:`py:meth` role.
+
.. _signatures:
@@ -278,11 +327,6 @@ explained by an example::
:type limit: integer or None
:rtype: list of strings
-It is also possible to combine parameter type and description, if the type is a
-single word, like this::
-
- :param integer limit: maximum number of stack frames to show
-
This will render like this:
.. py:function:: format_exception(etype, value, tb[, limit=None])
@@ -297,6 +341,13 @@ This will render like this:
:type limit: integer or None
:rtype: list of strings
+It is also possible to combine parameter type and description, if the type is a
+single word, like this::
+
+ :param integer limit: maximum number of stack frames to show
+
+
+.. _python-roles:
Cross-referencing Python objects
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -363,6 +414,9 @@ dot, this order is reversed. For example, in the documentation of Python's
:mod:`codecs` module, ``:py:func:`open``` always refers to the built-in
function, while ``:py:func:`.open``` refers to :func:`codecs.open`.
+A similar heuristic is used to determine whether the name is an attribute of the
+currently documented class.
+
Also, if the name is prefixed with a dot, and no exact match is found, the
target is taken as a suffix and all object names with that suffix are
searched. For example, ``:py:meth:`.TarFile.close``` references the
@@ -370,8 +424,9 @@ searched. For example, ``:py:meth:`.TarFile.close``` references the
``tarfile``. Since this can get ambiguous, if there is more than one possible
match, you will get a warning from Sphinx.
-A similar heuristic is used to determine whether the name is an attribute of the
-currently documented class.
+Note that you can combine the ``~`` and ``.`` prefixes:
+``:py:meth:`~.TarFile.close``` will reference the ``tarfile.TarFile.close()``
+method, but the visible link caption will only be ``close()``.
.. _c-domain:
@@ -424,6 +479,8 @@ The C domain (name **c**) is suited for documentation of C API.
.. c:var:: PyObject* PyClass_Type
+.. _c-roles:
+
Cross-referencing C constructs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -508,6 +565,9 @@ The following directives are available:
Select the current C++ namespace for the following objects.
+
+.. _cpp-roles:
+
These roles link to the given object types:
.. rst:role:: cpp:class
@@ -675,6 +735,8 @@ The JavaScript domain (name **js**) provides the following directives:
Describes the attribute *name* of *object*.
+.. _js-roles:
+
These roles are provided to refer to the described objects:
.. rst:role:: js:func
@@ -726,6 +788,8 @@ The reStructuredText domain (name **rst**) provides the following directives:
Foo description.
+.. _rst-roles:
+
These roles are provided to refer to the described objects:
.. rst:role:: rst:dir
@@ -739,4 +803,4 @@ The sphinx-contrib_ repository contains more domains available as extensions;
currently a Ruby and an Erlang domain.
-.. _sphinx-contrib: http://bitbucket.org/birkenfeld/sphinx-contrib/
+.. _sphinx-contrib: https://bitbucket.org/birkenfeld/sphinx-contrib/
diff --git a/doc/ext/appapi.rst b/doc/ext/appapi.rst
index 402dd72f0..d43a90eb1 100644
--- a/doc/ext/appapi.rst
+++ b/doc/ext/appapi.rst
@@ -76,9 +76,9 @@ the following public API:
Node visitor functions for the Sphinx HTML, LaTeX, text and manpage writers
can be given as keyword arguments: the keyword must be one or more of
- ``'html'``, ``'latex'``, ``'text'``, ``'man'``, the value a 2-tuple of
- ``(visit, depart)`` methods. ``depart`` can be ``None`` if the ``visit``
- function raises :exc:`docutils.nodes.SkipNode`. Example:
+ ``'html'``, ``'latex'``, ``'text'``, ``'man'``, ``'texinfo'``, the value a
+ 2-tuple of ``(visit, depart)`` methods. ``depart`` can be ``None`` if the
+ ``visit`` function raises :exc:`docutils.nodes.SkipNode`. Example:
.. code-block:: python
@@ -163,7 +163,8 @@ the following public API:
.. versionadded:: 0.6
-.. method:: Sphinx.add_object_type(directivename, rolename, indextemplate='', parse_node=None, ref_nodeclass=None, objname='')
+.. method:: Sphinx.add_object_type(directivename, rolename, indextemplate='', parse_node=None, \
+ ref_nodeclass=None, objname='', doc_field_types=[])
This method is a very convenient way to add a new :term:`object` type that
can be cross-referenced. It will do this:
@@ -210,7 +211,7 @@ the following public API:
standard Sphinx roles (see :ref:`xref-syntax`).
This method is also available under the deprecated alias
- :meth:`add_description_unit`.
+ ``add_description_unit``.
.. method:: Sphinx.add_crossref_type(directivename, rolename, indextemplate='', ref_nodeclass=None, objname='')
@@ -246,7 +247,8 @@ the following public API:
Add *filename* to the list of JavaScript files that the default HTML template
will include. The filename must be relative to the HTML static path, see
- :confval:`the docs for the config value `.
+ :confval:`the docs for the config value `. A full URI with
+ scheme, like ``http://example.org/foo.js``, is also supported.
.. versionadded:: 0.5
@@ -272,6 +274,8 @@ the following public API:
This allows to auto-document new types of objects. See the source of the
autodoc module for examples on how to subclass :class:`Documenter`.
+ .. XXX add real docs for Documenter and subclassing
+
.. versionadded:: 0.6
.. method:: Sphinx.add_autodoc_attrgetter(type, getter)
@@ -283,6 +287,15 @@ the following public API:
.. versionadded:: 0.6
+.. method:: Sphinx.add_search_language(cls)
+
+ Add *cls*, which must be a subclass of :class:`sphinx.search.SearchLanguage`,
+ as a support language for building the HTML full-text search index. The
+ class must have a *lang* attribute that indicates the language it should be
+ used for. See :confval:`html_search_language`.
+
+ .. versionadded:: 1.1
+
.. method:: Sphinx.connect(event, callback)
Register *callback* to be called when *event* is emitted. For details on
@@ -340,6 +353,15 @@ registered event handlers.
Emitted when the builder object has been created. It is available as
``app.builder``.
+.. event:: env-get-outdated (app, env, added, changed, removed)
+
+ Emitted when the environment determines which source files have changed and
+ should be re-read. *added*, *changed* and *removed* are sets of docnames
+ that the environment has determined. You can return a list of docnames to
+ re-read in addition to these.
+
+ .. versionadded:: 1.1
+
.. event:: env-purge-doc (app, env, docname)
Emitted when all traces of a source file should be cleaned from the
diff --git a/doc/ext/autodoc.rst b/doc/ext/autodoc.rst
index bd725cfaa..ab520f70c 100644
--- a/doc/ext/autodoc.rst
+++ b/doc/ext/autodoc.rst
@@ -27,20 +27,21 @@ two locations for documentation, while at the same time avoiding
auto-generated-looking pure API documentation.
:mod:`autodoc` provides several directives that are versions of the usual
-:rst:dir:`module`, :rst:dir:`class` and so forth. On parsing time, they import the
-corresponding module and extract the docstring of the given objects, inserting
-them into the page source under a suitable :rst:dir:`module`, :rst:dir:`class` etc.
-directive.
+:rst:dir:`py:module`, :rst:dir:`py:class` and so forth. On parsing time, they
+import the corresponding module and extract the docstring of the given objects,
+inserting them into the page source under a suitable :rst:dir:`py:module`,
+:rst:dir:`py:class` etc. directive.
.. note::
- Just as :rst:dir:`class` respects the current :rst:dir:`module`, :rst:dir:`autoclass`
- will also do so, and likewise with :rst:dir:`method` and :rst:dir:`class`.
+ Just as :rst:dir:`py:class` respects the current :rst:dir:`py:module`,
+ :rst:dir:`autoclass` will also do so. Likewise, :rst:dir:`automethod` will
+ respect the current :rst:dir:`py:class`.
.. rst:directive:: automodule
- autoclass
- autoexception
+ autoclass
+ autoexception
Document a module, class or exception. All three directives will by default
only insert the docstring of the object itself::
@@ -83,14 +84,17 @@ directive.
will document all non-private member functions and properties (that is,
those whose name doesn't start with ``_``).
+ For modules, ``__all__`` will be respected when looking for members; the
+ order of the members will also be the order in ``__all__``.
+
You can also give an explicit list of members; only these will then be
documented::
.. autoclass:: Noodle
:members: eat, slurp
- * If you want to make the ``members`` option the default, see
- :confval:`autodoc_default_flags`.
+ * If you want to make the ``members`` option (or other flag options described
+ below) the default, see :confval:`autodoc_default_flags`.
* Members without docstrings will be left out, unless you give the
``undoc-members`` flag option::
@@ -99,9 +103,26 @@ directive.
:members:
:undoc-members:
+ * "Private" members (that is, those named like ``_private`` or ``__private``)
+ will be included if the ``private-members`` flag option is given.
+
+ .. versionadded:: 1.1
+
+ * Python "special" members (that is, those named like ``__special__``) will
+ be included if the ``special-members`` flag option is given::
+
+ .. autoclass:: my.Class
+ :members:
+ :private-members:
+ :special-members:
+
+ would document both "private" and "special" members of the class.
+
+ .. versionadded:: 1.1
+
* For classes and exceptions, members inherited from base classes will be
- left out, unless you give the ``inherited-members`` flag option, in
- addition to ``members``::
+ left out when documenting all members, unless you give the
+ ``inherited-members`` flag option, in addition to ``members``::
.. autoclass:: Noodle
:members:
@@ -127,28 +148,29 @@ directive.
.. versionadded:: 0.4
- * The :rst:dir:`automodule`, :rst:dir:`autoclass` and :rst:dir:`autoexception` directives
- also support a flag option called ``show-inheritance``. When given, a list
- of base classes will be inserted just below the class signature (when used
- with :rst:dir:`automodule`, this will be inserted for every class that is
- documented in the module).
+ * The :rst:dir:`automodule`, :rst:dir:`autoclass` and
+ :rst:dir:`autoexception` directives also support a flag option called
+ ``show-inheritance``. When given, a list of base classes will be inserted
+ just below the class signature (when used with :rst:dir:`automodule`, this
+ will be inserted for every class that is documented in the module).
.. versionadded:: 0.4
* All autodoc directives support the ``noindex`` flag option that has the
- same effect as for standard :rst:dir:`function` etc. directives: no index
- entries are generated for the documented object (and all autodocumented
- members).
+ same effect as for standard :rst:dir:`py:function` etc. directives: no
+ index entries are generated for the documented object (and all
+ autodocumented members).
.. versionadded:: 0.4
* :rst:dir:`automodule` also recognizes the ``synopsis``, ``platform`` and
- ``deprecated`` options that the standard :rst:dir:`module` directive supports.
+ ``deprecated`` options that the standard :rst:dir:`py:module` directive
+ supports.
.. versionadded:: 0.5
- * :rst:dir:`automodule` and :rst:dir:`autoclass` also has an ``member-order`` option
- that can be used to override the global value of
+ * :rst:dir:`automodule` and :rst:dir:`autoclass` also has an ``member-order``
+ option that can be used to override the global value of
:confval:`autodoc_member_order` for one directive.
.. versionadded:: 0.6
@@ -168,29 +190,45 @@ directive.
.. rst:directive:: autofunction
- autodata
- automethod
- autoattribute
+ autodata
+ automethod
+ autoattribute
These work exactly like :rst:dir:`autoclass` etc., but do not offer the options
used for automatic member documentation.
For module data members and class attributes, documentation can either be put
- into a special-formatted comment *before* the attribute definition, or in a
- docstring *after* the definition. This means that in the following class
- definition, both attributes can be autodocumented::
+ into a special-formatted comment, or in a docstring *after* the definition.
+ Comments need to be either on a line of their own *before* the definition, or
+ immediately after the assignment *on the same line*. The latter form is
+ restricted to one line only.
+
+ This means that in the following class definition, all attributes can be
+ autodocumented::
class Foo:
"""Docstring for class Foo."""
- #: Doc comment for attribute Foo.bar.
+ #: Doc comment for class attribute Foo.bar.
+ #: It can have multiple lines.
bar = 1
+ flox = 1.5 #: Doc comment for Foo.flox. One line only.
+
baz = 2
- """Docstring for attribute Foo.baz."""
+ """Docstring for class attribute Foo.baz."""
+
+ def __init__(self):
+ #: Doc comment for instance attribute qux.
+ self.qux = 3
+
+ self.spam = 4
+ """Docstring for instance attribute spam."""
.. versionchanged:: 0.6
:rst:dir:`autodata` and :rst:dir:`autoattribute` can now extract docstrings.
+ .. versionchanged:: 1.1
+ Comment docs are now allowed on the same line after an assignment.
.. note::
@@ -213,8 +251,8 @@ There are also new config values that you can set:
``"class"``
Only the class' docstring is inserted. This is the default. You can
- still document ``__init__`` as a separate method using :rst:dir:`automethod`
- or the ``members`` option to :rst:dir:`autoclass`.
+ still document ``__init__`` as a separate method using
+ :rst:dir:`automethod` or the ``members`` option to :rst:dir:`autoclass`.
``"both"``
Both the class' and the ``__init__`` method's docstring are concatenated
and inserted.
@@ -241,7 +279,8 @@ There are also new config values that you can set:
This value is a list of autodoc directive flags that should be automatically
applied to all autodoc directives. The supported flags are ``'members'``,
- ``'undoc-members'``, ``'inherited-members'`` and ``'show-inheritance'``.
+ ``'undoc-members'``, ``'private-members'``, ``'special-members'``,
+ ``'inherited-members'`` and ``'show-inheritance'``.
If you set one of these flags in this config value, you can use a negated
form, :samp:`'no-{flag}'`, in an autodoc directive, to disable it once.
@@ -255,6 +294,20 @@ There are also new config values that you can set:
.. versionadded:: 1.0
+.. confval:: autodoc_docstring_signature
+
+ Functions imported from C modules cannot be introspected, and therefore the
+ signature for such functions cannot be automatically determined. However, it
+ is an often-used convention to put the signature into the first line of the
+ function's docstring.
+
+ If this boolean value is set to ``True`` (which is the default), autodoc will
+ look at the first line of the docstring for functions and methods, and if it
+ looks like a signature, use the line as the signature and remove it from the
+ docstring content.
+
+ .. versionadded:: 1.1
+
Docstring preprocessing
-----------------------
diff --git a/doc/ext/coverage.rst b/doc/ext/coverage.rst
index 13294f8bc..839478fe1 100644
--- a/doc/ext/coverage.rst
+++ b/doc/ext/coverage.rst
@@ -14,6 +14,7 @@ This extension features one additional builder, the :class:`CoverageBuilder`.
.. todo:: Write this section.
+
Several new configuration values can be used to specify what the builder
should check:
@@ -28,3 +29,16 @@ should check:
.. confval:: coverage_c_regexes
.. confval:: coverage_ignore_c_items
+
+.. confval:: coverage_write_headline
+
+ Set to ``False`` to not write headlines.
+
+ .. versionadded:: 1.1
+
+.. confval:: coverage_skip_undoc_in_source
+
+ Skip objects that are not documented in the source with a docstring.
+ ``False`` by default.
+
+ .. versionadded:: 1.1
diff --git a/doc/ext/doctest.rst b/doc/ext/doctest.rst
index 20e747de1..554987ee4 100644
--- a/doc/ext/doctest.rst
+++ b/doc/ext/doctest.rst
@@ -45,6 +45,14 @@ names.
but executed before the doctests of the group(s) it belongs to.
+.. rst:directive:: .. testcleanup:: [group]
+
+ A cleanup code block. This code is not shown in the output for other
+ builders, but executed after the doctests of the group(s) it belongs to.
+
+ .. versionadded:: 1.1
+
+
.. rst:directive:: .. doctest:: [group]
A doctest-style code block. You can use standard :mod:`doctest` flags for
@@ -181,6 +189,14 @@ There are also these config values for customizing the doctest extension:
.. versionadded:: 0.6
+.. confval:: doctest_global_cleanup
+
+ Python code that is treated like it were put in a ``testcleanup`` directive
+ for *every* file that is tested, and for every group. You can use this to
+ e.g. remove any temporary files that the tests leave behind.
+
+ .. versionadded:: 1.1
+
.. confval:: doctest_test_doctest_blocks
If this is a nonempty string (the default is ``'default'``), standard reST
@@ -221,4 +237,4 @@ There are also these config values for customizing the doctest extension:
will be interpreted as one block ending and another one starting. Also,
removal of ```` and ``# doctest:`` options only works in
:rst:dir:`doctest` blocks, though you may set :confval:`trim_doctest_flags` to
- achieve the latter in all code blocks with Python console content.
+ achieve that in all code blocks with Python console content.
diff --git a/doc/ext/extlinks.rst b/doc/ext/extlinks.rst
index d4478c5b3..d8bcaa524 100644
--- a/doc/ext/extlinks.rst
+++ b/doc/ext/extlinks.rst
@@ -27,11 +27,11 @@ The extension adds one new config value:
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/%s',
+ extlinks = {'issue': ('https://bitbucket.org/birkenfeld/sphinx/issue/%s',
'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.
+ then inserts a link to https://bitbucket.org/birkenfeld/sphinx/issue/123.
As you can see, the target given in the role is substituted in the base URL
in the place of ``%s``.
diff --git a/doc/ext/graphviz.rst b/doc/ext/graphviz.rst
index 3741cec64..9b34b48fe 100644
--- a/doc/ext/graphviz.rst
+++ b/doc/ext/graphviz.rst
@@ -29,6 +29,17 @@ It adds these directives:
:confval:`graphviz_output_format`). In LaTeX output, the code will be
rendered to an embeddable PDF file.
+ You can also embed external dot files, by giving the file name as an
+ argument to :rst:dir:`graphviz` and no additional content::
+
+ .. graphviz:: external.dot
+
+ As for all file references in Sphinx, if the filename is absolute, it is
+ taken as relative to the source directory.
+
+ .. versionchanged:: 1.1
+ Added support for external files.
+
.. rst:directive:: graph
@@ -61,6 +72,16 @@ It adds these directives:
alternate text for HTML output. If not given, the alternate text defaults to
the graphviz code.
+.. versionadded:: 1.1
+ All three directives support an ``inline`` flag that controls paragraph
+ breaks in the output. When set, the graph is inserted into the current
+ paragraph. If the flag is not given, paragraph breaks are introduced before
+ and after the image (the default).
+
+.. versionadded:: 1.1
+ All three directives support a ``caption`` option that can be used to give a
+ caption to the diagram. Naturally, diagrams marked as "inline" cannot have a
+ caption.
There are also these new config values:
diff --git a/doc/ext/inheritance.rst b/doc/ext/inheritance.rst
index 76388a94c..5e0a76fcc 100644
--- a/doc/ext/inheritance.rst
+++ b/doc/ext/inheritance.rst
@@ -17,7 +17,7 @@ It adds this directive:
This directive has one or more arguments, each giving a module or class
name. Class names can be unqualified; in that case they are taken to exist
- in the currently described module (see :rst:dir:`module`).
+ in the currently described module (see :rst:dir:`py:module`).
For each given class, and each class in each given module, the base classes
are determined. Then, from all classes and their base classes, a graph is
@@ -30,6 +30,13 @@ It adds this directive:
``lib.``, you can give ``:parts: 1`` to remove that prefix from the displayed
node names.)
+ It also supports a ``private-bases`` flag option; if given, private base
+ classes (those whose name starts with ``_``) will be included.
+
+ .. versionchanged:: 1.1
+ Added ``private-bases`` option; previously, all bases were always
+ included.
+
New config values are:
diff --git a/doc/ext/intersphinx.rst b/doc/ext/intersphinx.rst
index bb2a5a8c4..7997472a7 100644
--- a/doc/ext/intersphinx.rst
+++ b/doc/ext/intersphinx.rst
@@ -84,7 +84,7 @@ linking:
To add links to modules and objects in the Python standard library
documentation, use::
- intersphinx_mapping = {'python': ('http://docs.python.org/', None)}
+ intersphinx_mapping = {'python': ('http://docs.python.org/3.2', None)}
This will download the corresponding :file:`objects.inv` file from the
Internet and generate links to the pages under the given URI. The downloaded
@@ -94,12 +94,12 @@ linking:
A second example, showing the meaning of a non-``None`` value of the second
tuple item::
- intersphinx_mapping = {'python': ('http://docs.python.org/',
+ intersphinx_mapping = {'python': ('http://docs.python.org/3.2',
'python-inv.txt')}
This will read the inventory from :file:`python-inv.txt` in the source
directory, but still generate links to the pages under
- ``http://docs.python.org/``. It is up to you to update the inventory file as
+ ``http://docs.python.org/3.2``. It is up to you to update the inventory file as
new objects are added to the Python documentation.
.. confval:: intersphinx_cache_limit
diff --git a/doc/ext/math.rst b/doc/ext/math.rst
index b9f6ab12b..1c7332d6d 100644
--- a/doc/ext/math.rst
+++ b/doc/ext/math.rst
@@ -17,15 +17,15 @@ if possible, reuse that support too.
.. note::
- :mod:`sphinx.ext.mathbase` is not meant to be added to the
- :confval:`extensions` config value, instead, use either
- :mod:`sphinx.ext.pngmath` or :mod:`sphinx.ext.jsmath` as described below.
+ :mod:`.mathbase` is not meant to be added to the :confval:`extensions` config
+ value, instead, use either :mod:`sphinx.ext.pngmath` or
+ :mod:`sphinx.ext.jsmath` as described below.
The input language for mathematics is LaTeX markup. This is the de-facto
standard for plain-text math notation and has the added advantage that no
further translation is necessary when building LaTeX output.
-:mod:`mathbase` defines these new markup elements:
+:mod:`.mathbase` defines these new markup elements:
.. rst:role:: math
@@ -170,20 +170,58 @@ There are various config values you can set to influence how the images are buil
Unfortunately, this only works when the `preview-latex package`_ is
installed. Therefore, the default for this option is ``False``.
+.. confval:: pngmath_add_tooltips
+
+ Default: true. If false, do not add the LaTeX code as an "alt" attribute for
+ math images.
+
+ .. versionadded:: 1.1
+
+
+:mod:`sphinx.ext.mathjax` -- Render math via JavaScript
+-------------------------------------------------------
+
+.. module:: sphinx.ext.mathjax
+ :synopsis: Render math using JavaScript via MathJax.
+
+.. versionadded:: 1.1
+
+This extension puts math as-is into the HTML files. The JavaScript package
+MathJax_ is then loaded and transforms the LaTeX markup to readable math live in
+the browser.
+
+Because MathJax (and the necessary fonts) is very large, it is not included in
+Sphinx. You must install it yourself, and give Sphinx its path in this config
+value:
+
+.. confval:: mathjax_path
+
+ The path to the JavaScript file to include in the HTML files in order to load
+ JSMath. There is no default.
+
+ The path can be absolute or relative; if it is relative, it is relative to
+ the ``_static`` directory of the built docs.
+
+ For example, if you put JSMath into the static path of the Sphinx docs, this
+ value would be ``MathJax/MathJax.js``. If you host more than one Sphinx
+ documentation set on one server, it is advisable to install MathJax in a
+ shared location.
+
+ You can also give a full ``http://`` URL. Kevin Dunn maintains a MathJax
+ installation on a public server, which he offers for use by development and
+ production servers::
+
+ mathjax_path = 'http://mathjax.connectmv.com/MathJax.js'
+
:mod:`sphinx.ext.jsmath` -- Render math via JavaScript
------------------------------------------------------
.. module:: sphinx.ext.jsmath
- :synopsis: Render math via JavaScript.
+ :synopsis: Render math using JavaScript via JSMath.
-This extension puts math as-is into the HTML files. The JavaScript package
-jsMath_ is then loaded and transforms the LaTeX markup to readable math live in
-the browser.
-
-Because jsMath (and the necessary fonts) is very large, it is not included in
-Sphinx. You must install it yourself, and give Sphinx its path in this config
-value:
+This extension works just as the MathJax extension does, but uses the older
+package jsMath_. It provides this config value:
.. confval:: jsmath_path
@@ -200,6 +238,7 @@ value:
.. _dvipng: http://savannah.nongnu.org/projects/dvipng/
+.. _MathJax: http://www.mathjax.org/
.. _jsMath: http://www.math.union.edu/~dpvc/jsmath/
.. _preview-latex package: http://www.gnu.org/software/auctex/preview-latex.html
-.. _AmSMath LaTeX package: http://www.ams.org/tex/amslatex.html
+.. _AmSMath LaTeX package: http://www.ams.org/publications/authors/tex/amslatex
diff --git a/doc/extensions.rst b/doc/extensions.rst
index 492247744..b93974486 100644
--- a/doc/extensions.rst
+++ b/doc/extensions.rst
@@ -59,14 +59,19 @@ These extensions are built in and can be activated by respective entries in the
Third-party extensions
----------------------
-There are several extensions that are not (yet) maintained in the Sphinx
-distribution. The `Wiki at BitBucket`_ maintains a list of those.
+You can find several extensions contributed by users in the `Sphinx Contrib`_
+repository. It is open for anyone who wants to maintain an extension
+publicly; just send a short message asking for write permissions.
-If you write an extension that you think others will find useful, please write
-to the project mailing list (`join here `_)
-and we'll find the proper way of including or hosting it for the public.
+There are also several extensions hosted elsewhere. The `Wiki at BitBucket`_
+maintains a list of those.
-.. _Wiki at BitBucket: http://www.bitbucket.org/birkenfeld/sphinx/wiki/Home
+If you write an extension that you think others will find useful or you think
+should be included as a part of Sphinx, please write to the project mailing
+list (`join here `_).
+
+.. _Wiki at BitBucket: https://www.bitbucket.org/birkenfeld/sphinx/wiki/Home
+.. _Sphinx Contrib: https://www.bitbucket.org/birkenfeld/sphinx-contrib
Where to put your own extensions?
diff --git a/doc/faq.rst b/doc/faq.rst
index 5869e3af8..334a3a4d4 100644
--- a/doc/faq.rst
+++ b/doc/faq.rst
@@ -52,7 +52,7 @@ Doxygen
SCons
Glenn Hutchings has written a SCons build script to build Sphinx
- documentation; it is hosted here: http://bitbucket.org/zondo/sphinx-scons
+ documentation; it is hosted here: https://bitbucket.org/zondo/sphinx-scons
PyPI
Jannis Leidel wrote a `setuptools command
@@ -60,10 +60,14 @@ PyPI
Sphinx documentation to the PyPI package documentation area at
http://packages.python.org/.
-github pages
- You can use `Michael Jones' sphinx-to-github tool
- `_ to prepare
- Sphinx HTML output.
+GitHub Pages
+ Directories starting with underscores are ignored by default which breaks
+ static files in Sphinx. GitHub's preprocessor can be `disabled
+ `_ to support
+ Sphinx HTML output properly.
+
+MediaWiki
+ See https://bitbucket.org/kevindunn/sphinx-wiki, a project by Kevin Dunn.
Google Analytics
You can use a custom ``layout.html`` template, like this:
@@ -148,3 +152,109 @@ some notes:
.. _Calibre: http://calibre-ebook.com/
.. _FBreader: http://www.fbreader.org/
.. _Bookworm: http://bookworm.oreilly.com/
+
+
+.. _texinfo-faq:
+
+Texinfo info
+------------
+
+The Texinfo builder is currently in an experimental stage but has successfully
+been used to build the documentation for both Sphinx and Python. The intended
+use of this builder is to generate Texinfo that is then processed into Info
+files.
+
+There are two main programs for reading Info files, ``info`` and GNU Emacs. The
+``info`` program has less features but is available in most Unix environments
+and can be quickly accessed from the terminal. Emacs provides better font and
+color display and supports extensive customization (of course).
+
+
+.. _texinfo-links:
+
+Displaying Links
+~~~~~~~~~~~~~~~~
+
+One noticeable problem you may encounter with the generated Info files is how
+references are displayed. If you read the source of an Info file, a reference
+to this section would look like::
+
+ * note Displaying Links: target-id
+
+In the stand-alone reader, ``info``, references are displayed just as they
+appear in the source. Emacs, on the other-hand, will by default replace
+``\*note:`` with ``see`` and hide the ``target-id``. For example:
+
+ :ref:`texinfo-links`
+
+The exact behavior of how Emacs displays references is dependent on the variable
+``Info-hide-note-references``. If set to the value of ``hide``, Emacs will hide
+both the ``\*note:`` part and the ``target-id``. This is generally the best way
+to view Sphinx-based documents since they often make frequent use of links and
+do not take this limitation into account. However, changing this variable
+affects how all Info documents are displayed and most due take this behavior
+into account.
+
+If you want Emacs to display Info files produced by Sphinx using the value
+``hide`` for ``Info-hide-note-references`` and the default value for all other
+Info files, try adding the following Emacs Lisp code to your start-up file,
+``~/.emacs.d/init.el``.
+
+::
+
+ (defadvice info-insert-file-contents (after
+ sphinx-info-insert-file-contents
+ activate)
+ "Hack to make `Info-hide-note-references' buffer-local and
+ automatically set to `hide' iff it can be determined that this file
+ was created from a Texinfo file generated by Docutils or Sphinx."
+ (set (make-local-variable 'Info-hide-note-references)
+ (default-value 'Info-hide-note-references))
+ (save-excursion
+ (save-restriction
+ (widen) (goto-char (point-min))
+ (when (re-search-forward
+ "^Generated by \\(Sphinx\\|Docutils\\)"
+ (save-excursion (search-forward "^_" nil t)) t)
+ (set (make-local-variable 'Info-hide-note-references)
+ 'hide)))))
+
+
+Notes
+~~~~~
+
+The following notes may be helpful if you want to create Texinfo files:
+
+- Each section corresponds to a different ``node`` in the Info file.
+
+- Some characters cannot be properly escaped in menu entries and xrefs. The
+ following characters are replaced by spaces in these contexts: ``@``, ``{``,
+ ``}``, ``.``, ``,``, and ``:``.
+
+- In the HTML and Tex output, the word ``see`` is automatically inserted before
+ all xrefs.
+
+- Links to external Info files can be created using the somewhat official URI
+ scheme ``info``. For example::
+
+ info:Texinfo#makeinfo_options
+
+ which produces:
+
+ info:Texinfo#makeinfo_options
+
+- Inline markup appears as follows in Info:
+
+ * strong -- \*strong\*
+ * emphasis -- _emphasis_
+ * literal -- \`literal'
+
+ It is possible to change this behavior using the Texinfo command
+ ``@definfoenclose``. For example, to make inline markup more closely resemble
+ reST, add the following to your :file:`conf.py`::
+
+ texinfo_elements = {'preamble': """\
+ @definfoenclose strong,**,**
+ @definfoenclose emph,*,*
+ @definfoenclose code,`@w{}`,`@w{}`
+ """}
diff --git a/doc/glossary.rst b/doc/glossary.rst
index 2a82e20f2..8bc393eb7 100644
--- a/doc/glossary.rst
+++ b/doc/glossary.rst
@@ -23,7 +23,9 @@ Glossary
A reStructuredText markup element that allows marking a block of content
with special meaning. Directives are supplied not only by docutils, but
Sphinx and custom extensions can add their own. The basic directive
- syntax looks like this::
+ syntax looks like this:
+
+ .. sourcecode:: rst
.. directivename:: argument ...
:option: value
diff --git a/doc/intl.rst b/doc/intl.rst
new file mode 100644
index 000000000..6a5471c4f
--- /dev/null
+++ b/doc/intl.rst
@@ -0,0 +1,69 @@
+.. _intl:
+
+Internationalization
+====================
+
+.. versionadded:: 1.1
+
+Complementary to translations provided for Sphinx-generated messages such as
+navigation bars, Sphinx provides mechanisms facilitating *document* translations
+in itself. See the :ref:`intl-options` for details on configuration.
+
+.. figure:: translation.png
+ :width: 100%
+
+ Workflow visualization of translations in Sphinx. (The stick-figure is taken
+ from an `XKCD comic `_.)
+
+**gettext** [1]_ is an established standard for internationalization and
+localization. It naïvely maps messages in a program to a translated string.
+Sphinx uses these facilities to translate whole documents.
+
+Initially project maintainers have to collect all translatable strings (also
+referred to as *messages*) to make them known to translators. Sphinx extracts
+these through invocation of ``sphinx-build -b gettext``.
+
+Every single element in the doctree will end up in a single message which
+results in lists being equally split into different chunks while large
+paragraphs will remain as coarsely-grained as they were in the original
+document. This grants seamless document updates while still providing a little
+bit of context for translators in free-text passages. It is the maintainer's
+task to split up paragraphs which are too large as there is no sane automated
+way to do that.
+
+After Sphinx successfully ran the
+:class:`~sphinx.builders.gettext.MessageCatalogBuilder` you will find a collection
+of ``.pot`` files in your output directory. These are **catalog templates**
+and contain messages in your original language *only*.
+
+They can be delivered to translators which will transform them to ``.po`` files
+--- so called **message catalogs** --- containing a mapping from the original
+messages to foreign-language strings.
+
+Gettext compiles them into a binary format known as **binary catalogs** through
+:program:`msgfmt` for efficiency reasons. If you make these files discoverable
+with :confval:`locale_dirs` for your :confval:`language`, Sphinx will pick them
+up automatically.
+
+An example: you have a document ``usage.rst`` in your Sphinx project. The
+gettext builder will put its messages into ``usage.pot``. Image you have
+Spanish translations [2]_ on your hands in ``usage.po`` --- for your builds to
+be translated you need to follow these instructions:
+
+* Compile your message catalog to a locale directory, say ``translated``, so it
+ ends up in ``./translated/es/LC_MESSAGES/usage.mo`` in your source directory
+ (where ``es`` is the language code for Spanish.) ::
+
+ msgfmt "usage.po" -o "translated/es/LC_MESSAGES/usage.mo"
+
+* Set :confval:`locale_dirs` to ``["translated/"]``.
+* Set :confval:`language` to ``es`` (also possible via :option:`-D`).
+* Run your desired build.
+
+
+.. rubric:: Footnotes
+
+.. [1] See the `GNU gettext utilites
+ `_
+ for details on that software suite.
+.. [2] Because nobody expects the Spanish Inquisition!
diff --git a/doc/intro.rst b/doc/intro.rst
index 1a39e266c..0e6e5247a 100644
--- a/doc/intro.rst
+++ b/doc/intro.rst
@@ -25,7 +25,7 @@ to reStructuredText/Sphinx from other documentation systems.
* Gerard Flanagan has written a script to convert pure HTML to reST; it can be
found at `BitBucket
- `_.
+ `_.
* For converting the old Python docs to Sphinx, a converter was written which
can be found at `the Python SVN repository
@@ -45,15 +45,19 @@ See the :ref:`pertinent section in the FAQ list `.
Prerequisites
-------------
-Sphinx needs at least **Python 2.4** to run, as well as the docutils_ and
-Jinja2_ libraries. Sphinx should work with docutils version 0.5 or some
-(not broken) SVN trunk snapshot. If you like to have source code highlighting
-support, you must also install the Pygments_ library.
+Sphinx needs at least **Python 2.4** or **Python 3.1** to run, as well as the
+docutils_ and Jinja2_ libraries. Sphinx should work with docutils version 0.5
+or some (not broken) SVN trunk snapshot. If you like to have source code
+highlighting support, you must also install the Pygments_ library.
+
+If you use **Python 2.4** you also need uuid_.
.. _reStructuredText: http://docutils.sf.net/rst.html
.. _docutils: http://docutils.sf.net/
-.. _Jinja2: http://jinja.pocoo.org/2/
+.. _Jinja2: http://jinja.pocoo.org/
.. _Pygments: http://pygments.org/
+.. The given homepage is only a directory listing so I'm using the pypi site.
+.. _uuid: http://pypi.python.org/pypi/uuid/
Usage
diff --git a/doc/invocation.rst b/doc/invocation.rst
index 6b8b9ee35..c8e9a61fc 100644
--- a/doc/invocation.rst
+++ b/doc/invocation.rst
@@ -40,9 +40,16 @@ The :program:`sphinx-build` script has several options:
**man**
Build manual pages in groff format for UNIX systems.
+ **texinfo**
+ Build Texinfo files that can be processed into Info files using
+ :program:`makeinfo`.
+
**text**
Build plain text files.
+ **gettext**
+ Build gettext-style message catalogs (``.pot`` files).
+
**doctest**
Run all doctests in the documentation, if the :mod:`~sphinx.ext.doctest`
extension is enabled.
diff --git a/doc/markup/index.rst b/doc/markup/index.rst
index 9492456d0..ca70b9581 100644
--- a/doc/markup/index.rst
+++ b/doc/markup/index.rst
@@ -3,8 +3,8 @@
Sphinx Markup Constructs
========================
-Sphinx adds a lot of new directives and interpreted text roles to standard reST
-markup. This section contains the reference material for these facilities.
+Sphinx adds a lot of new directives and interpreted text roles to `standard reST
+markup`_. This section contains the reference material for these facilities.
.. toctree::
@@ -15,3 +15,5 @@ markup. This section contains the reference material for these facilities.
misc
More markup is added by :ref:`domains`.
+
+.. _standard reST markup: http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html
diff --git a/doc/markup/inline.rst b/doc/markup/inline.rst
index bb1ed68ec..69dd832fb 100644
--- a/doc/markup/inline.rst
+++ b/doc/markup/inline.rst
@@ -44,6 +44,18 @@ more versatile:
tool-tip on mouse-hover) will always be the full target name.
+Cross-referencing objects
+-------------------------
+
+These roles are described with their respective domains:
+
+* :ref:`Python `
+* :ref:`C `
+* :ref:`C++ `
+* :ref:`JavaScript `
+* :ref:`ReST `
+
+
.. _ref-role:
Cross-referencing arbitrary locations
@@ -141,8 +153,50 @@ Referencing downloadable files
suitable link generated to it.
+Cross-referencing other items of interest
+-----------------------------------------
+
+The following roles do possibly create a cross-reference, but do not refer to
+objects:
+
+.. rst:role:: envvar
+
+ An environment variable. Index entries are generated. Also generates a link
+ to the matching :rst:dir:`envvar` directive, if it exists.
+
+.. rst:role:: token
+
+ The name of a grammar token (used to create links between
+ :rst:dir:`productionlist` directives).
+
+.. rst:role:: keyword
+
+ The name of a keyword in Python. This creates a link to a reference label
+ with that name, if it exists.
+
+.. rst:role:: option
+
+ A command-line option to an executable program. The leading hyphen(s) must
+ be included. This generates a link to a :rst:dir:`option` directive, if it
+ exists.
+
+
+The following role creates a cross-reference to the term in the glossary:
+
+.. rst:role:: term
+
+ Reference to a term in the glossary. The glossary is created using the
+ ``glossary`` directive containing a definition list with terms and
+ definitions. It does not have to be in the same file as the ``term`` markup,
+ for example the Python docs have one global glossary in the ``glossary.rst``
+ file.
+
+ If you use a term that's not explained in a glossary, you'll get a warning
+ during build.
+
+
Other semantic markup
----------------------
+~~~~~~~~~~~~~~~~~~~~~
The following roles don't do anything special except formatting the text
in a different style:
@@ -260,13 +314,14 @@ in a different style:
.. rst:role:: samp
A piece of literal text, such as code. Within the contents, you can use
- curly braces to indicate a "variable" part, as in :rst:dir:`file`. For
+ curly braces to indicate a "variable" part, as in :rst:role:`file`. For
example, in ``:samp:`print 1+{variable}```, the part ``variable`` would be
emphasized.
If you don't need the "variable part" indication, use the standard
````code```` instead.
+There is also an :rst:role:`index` role to generate index entries.
The following roles generate external links:
@@ -274,65 +329,25 @@ The following roles generate external links:
A reference to a Python Enhancement Proposal. This generates appropriate
index entries. The text "PEP *number*\ " is generated; in the HTML output,
- this text is a hyperlink to an online copy of the specified PEP.
+ this text is a hyperlink to an online copy of the specified PEP. You can
+ link to a specific section by saying ``:pep:`number#anchor```.
.. rst:role:: rfc
A reference to an Internet Request for Comments. This generates appropriate
index entries. The text "RFC *number*\ " is generated; in the HTML output,
- this text is a hyperlink to an online copy of the specified RFC.
+ this text is a hyperlink to an online copy of the specified RFC. You can
+ link to a specific section by saying ``:rfc:`number#anchor```.
Note that there are no special roles for including hyperlinks as you can use
the standard reST markup for that purpose.
-Cross-referencing other items of interest
------------------------------------------
-
-The following roles do possibly create a cross-reference, but do not refer to
-objects:
-
-.. rst:role:: envvar
-
- An environment variable. Index entries are generated. Also generates a link
- to the matching :rst:dir:`envvar` directive, if it exists.
-
-.. rst:role:: token
-
- The name of a grammar token (used to create links between
- :rst:dir:`productionlist` directives).
-
-.. rst:role:: keyword
-
- The name of a keyword in Python. This creates a link to a reference label
- with that name, if it exists.
-
-.. rst:role:: option
-
- A command-line option to an executable program. The leading hyphen(s) must
- be included. This generates a link to a :rst:dir:`option` directive, if it
- exists.
-
-
-The following role creates a cross-reference to the term in the glossary:
-
-.. rst:role:: term
-
- Reference to a term in the glossary. The glossary is created using the
- ``glossary`` directive containing a definition list with terms and
- definitions. It does not have to be in the same file as the ``term`` markup,
- for example the Python docs have one global glossary in the ``glossary.rst``
- file.
-
- If you use a term that's not explained in a glossary, you'll get a warning
- during build.
-
-
.. _default-substitutions:
Substitutions
--------------
+~~~~~~~~~~~~~
The documentation system provides three substitutions that are defined by default.
They are set in the build configuration file.
diff --git a/doc/markup/misc.rst b/doc/markup/misc.rst
index 6173589b3..f5eaac9ce 100644
--- a/doc/markup/misc.rst
+++ b/doc/markup/misc.rst
@@ -13,10 +13,12 @@ like this::
:fieldname: Field content
-A field list at the very top of a file is parsed by docutils as the "docinfo",
+A field list near the top of a file is parsed by docutils as the "docinfo"
which is normally used to record the author, date of publication and other
-metadata. *In Sphinx*, the docinfo is used as metadata, too, but not displayed
-in the output.
+metadata. *In Sphinx*, a field list preceding any other markup is moved from
+the docinfo to the Sphinx environment as document metadata and is not displayed
+in the output; a field list appearing after the document title will be part of
+the docinfo as normal and will be displayed in the output.
At the moment, these metadata fields are recognized:
@@ -62,6 +64,105 @@ Meta-information markup
:confval:`show_authors` configuration value is True.
+Index-generating markup
+-----------------------
+
+Sphinx automatically creates index entries from all object descriptions (like
+functions, classes or attributes) like discussed in :ref:`domains`.
+
+However, there is also explicit markup available, to make the index more
+comprehensive and enable index entries in documents where information is not
+mainly contained in information units, such as the language reference.
+
+.. rst:directive:: .. index::
+
+ This directive contains one or more index entries. Each entry consists of a
+ type and a value, separated by a colon.
+
+ For example::
+
+ .. index::
+ single: execution; context
+ module: __main__
+ module: sys
+ triple: module; search; path
+
+ The execution context
+ ---------------------
+
+ ...
+
+ This directive contains five entries, which will be converted to entries in
+ the generated index which link to the exact location of the index statement
+ (or, in case of offline media, the corresponding page number).
+
+ Since index directives generate cross-reference targets at their location in
+ the source, it makes sense to put them *before* the thing they refer to --
+ e.g. a heading, as in the example above.
+
+ The possible entry types are:
+
+ single
+ Creates a single index entry. Can be made a subentry by separating the
+ subentry text with a semicolon (this notation is also used below to
+ describe what entries are created).
+ pair
+ ``pair: loop; statement`` is a shortcut that creates two index entries,
+ namely ``loop; statement`` and ``statement; loop``.
+ triple
+ Likewise, ``triple: module; search; path`` is a shortcut that creates
+ three index entries, which are ``module; search path``, ``search; path,
+ module`` and ``path; module search``.
+ see
+ ``see: entry; other`` creates an index entry that refers from ``entry`` to
+ ``other``.
+ seealso
+ Like ``see``, but inserts "see also" instead of "see".
+ module, keyword, operator, object, exception, statement, builtin
+ These all create two index entries. For example, ``module: hashlib``
+ creates the entries ``module; hashlib`` and ``hashlib; module``. (These
+ are Python-specific and therefore deprecated.)
+
+ You can mark up "main" index entries by prefixing them with an exclamation
+ mark. The references to "main" entries are emphasized in the generated
+ index. For example, if two pages contain ::
+
+ .. index:: Python
+
+ and one page contains ::
+
+ .. index:: ! Python
+
+ then the backlink to the latter page is emphasized among the three backlinks.
+
+ For index directives containing only "single" entries, there is a shorthand
+ notation::
+
+ .. index:: BNF, grammar, syntax, notation
+
+ This creates four index entries.
+
+ .. versionchanged:: 1.1
+ Added ``see`` and ``seealso`` types, as well as marking main entries.
+
+.. rst:role:: index
+
+ While the :rst:dir:`index` directive is a block-level markup and links to the
+ beginning of the next paragraph, there is also a corresponding role that sets
+ the link target directly where it is used.
+
+ The content of the role can be a simple phrase, which is then kept in the
+ text and used as an index entry. It can also be a combination of text and
+ index entry, styled like with explicit targets of cross-references. In that
+ case, the "target" part can be a full entry as described for the directive
+ above. For example::
+
+ This is a normal reST :index:`paragraph` that contains several
+ :index:`index entries `.
+
+ .. versionadded:: 1.1
+
+
.. _tags:
Including content based on tags
@@ -76,7 +177,7 @@ Including content based on tags
Undefined tags are false, defined tags (via the ``-t`` command-line option or
within :file:`conf.py`) are true. Boolean expressions, also using
- parentheses (like ``html and (latex or draft)`` are supported.
+ parentheses (like ``html and (latex or draft)``) are supported.
The format of the current builder (``html``, ``latex`` or ``text``) is always
set as a tag.
@@ -124,9 +225,16 @@ following directive exists:
.. warning::
- Tables that contain literal blocks cannot be set with ``tabulary``. They are
- therefore set with the standard LaTeX ``tabular`` environment. Also, the
- verbatim environment used for literal blocks only works in ``p{width}``
- columns, which means that by default, Sphinx generates such column specs for
- such tables. Use the :rst:dir:`tabularcolumns` directive to get finer control
- over such tables.
+ Tables that contain list-like elements such as object descriptions,
+ blockquotes or any kind of lists cannot be set out of the box with
+ ``tabulary``. They are therefore set with the standard LaTeX ``tabular``
+ environment if you don't give a ``tabularcolumns`` directive. If you do, the
+ table will be set with ``tabulary``, but you must use the ``p{width}``
+ construct for the columns that contain these elements.
+
+ Literal blocks do not work with ``tabulary`` at all, so tables containing a
+ literal block are always set with ``tabular``. Also, the verbatim
+ environment used for literal blocks only works in ``p{width}`` columns, which
+ means that by default, Sphinx generates such column specs for such tables.
+ Use the :rst:dir:`tabularcolumns` directive to get finer control over such
+ tables.
diff --git a/doc/markup/para.rst b/doc/markup/para.rst
index be06f6365..ced18d818 100644
--- a/doc/markup/para.rst
+++ b/doc/markup/para.rst
@@ -42,15 +42,25 @@ units as well as normal text:
Example::
.. versionadded:: 2.5
- The `spam` parameter.
+ The *spam* parameter.
Note that there must be no blank line between the directive head and the
explanation; this is to make these blocks visually continuous in the markup.
.. rst:directive:: .. versionchanged:: version
- Similar to :rst:dir:`versionadded`, but describes when and what changed in the named
- feature in some way (new parameters, changed side effects, etc.).
+ Similar to :rst:dir:`versionadded`, but describes when and what changed in
+ the named feature in some way (new parameters, changed side effects, etc.).
+
+.. rst:directive:: .. deprecated:: version
+
+ Similar to :rst:dir:`versionchanged`, but describes when the feature was
+ deprecated. An explanation can also be given, for example to inform the
+ reader what should be used instead. Example::
+
+ .. deprecated:: 3.1
+ Use :func:`spam` instead.
+
--------------
@@ -102,6 +112,10 @@ units as well as normal text:
.. centered:: LICENSE AGREEMENT
+ .. deprecated:: 1.1
+ This presentation-only directive is a legacy from older versions. Use a
+ :rst:dir:`rst-class` directive instead and add an appropriate style.
+
.. rst:directive:: hlist
@@ -134,76 +148,14 @@ For local tables of contents, use the standard reST :dudir:`contents directive
`.
-Index-generating markup
------------------------
-
-Sphinx automatically creates index entries from all object descriptions (like
-functions, classes or attributes) like discussed in :ref:`domains`.
-
-However, there is also an explicit directive available, to make the index more
-comprehensive and enable index entries in documents where information is not
-mainly contained in information units, such as the language reference.
-
-.. rst:directive:: .. index::
-
- This directive contains one or more index entries. Each entry consists of a
- type and a value, separated by a colon.
-
- For example::
-
- .. index::
- single: execution; context
- module: __main__
- module: sys
- triple: module; search; path
-
- The execution context
- ---------------------
-
- ...
-
- This directive contains five entries, which will be converted to entries in
- the generated index which link to the exact location of the index statement
- (or, in case of offline media, the corresponding page number).
-
- Since index directives generate cross-reference targets at their location in
- the source, it makes sense to put them *before* the thing they refer to --
- e.g. a heading, as in the example above.
-
- The possible entry types are:
-
- single
- Creates a single index entry. Can be made a subentry by separating the
- subentry text with a semicolon (this notation is also used below to
- describe what entries are created).
- pair
- ``pair: loop; statement`` is a shortcut that creates two index entries,
- namely ``loop; statement`` and ``statement; loop``.
- triple
- Likewise, ``triple: module; search; path`` is a shortcut that creates
- three index entries, which are ``module; search path``, ``search; path,
- module`` and ``path; module search``.
- module, keyword, operator, object, exception, statement, builtin
- These all create two index entries. For example, ``module: hashlib``
- creates the entries ``module; hashlib`` and ``hashlib; module``. (These
- are Python-specific and therefore deprecated.)
-
- For index directives containing only "single" entries, there is a shorthand
- notation::
-
- .. index:: BNF, grammar, syntax, notation
-
- This creates four index entries.
-
-
Glossary
--------
.. rst:directive:: .. glossary::
- This directive must contain a reST definition list with terms and
- definitions. The definitions will then be referencable with the :rst:role:`term`
- role. Example::
+ This directive must contain a reST definition-list-like markup with terms and
+ definitions. The definitions will then be referencable with the
+ :rst:role:`term` role. Example::
.. glossary::
@@ -217,10 +169,25 @@ Glossary
The directory which, including its subdirectories, contains all
source files for one Sphinx project.
+ In contrast to regular definition lists, *multiple* terms per entry are
+ allowed, and inline markup is allowed in terms. You can link to all of the
+ terms. For example::
+
+ .. glossary::
+
+ term 1
+ term 2
+ Definition of both terms.
+
+ (When the glossary is sorted, the first term determines the sort order.)
+
.. versionadded:: 0.6
You can now give the glossary directive a ``:sorted:`` flag that will
automatically sort the entries alphabetically.
+ .. versionchanged:: 1.1
+ Now supports multiple terms and inline markup in terms.
+
Grammar production displays
---------------------------
diff --git a/doc/markup/toctree.rst b/doc/markup/toctree.rst
index 474427d72..0b6a46c17 100644
--- a/doc/markup/toctree.rst
+++ b/doc/markup/toctree.rst
@@ -41,6 +41,8 @@ tables of contents. The ``toctree`` directive is the central element.
document, the library index. From this information it generates "next
chapter", "previous chapter" and "parent chapter" links.
+ **Entries**
+
Document titles in the :rst:dir:`toctree` will be automatically read from the
title of the referenced document. If that isn't what you want, you can
specify an explicit title and target using a similar syntax to reST
@@ -59,8 +61,10 @@ tables of contents. The ``toctree`` directive is the central element.
You can also add external links, by giving an HTTP URL instead of a document
name.
+ **Section numbering**
+
If you want to have section numbers even in HTML output, give the toctree a
- ``numbered`` flag option. For example::
+ ``numbered`` option. For example::
.. toctree::
:numbered:
@@ -71,6 +75,11 @@ 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).
+ Numbering up to a specific depth is also possible, by giving the depth as a
+ numeric argument to ``numbered``.
+
+ **Additional options**
+
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::
@@ -133,6 +142,9 @@ tables of contents. The ``toctree`` directive is the central element.
.. versionchanged:: 1.0
Added "titlesonly" option.
+ .. versionchanged:: 1.1
+ Added numeric argument to "numbered".
+
Special names
-------------
@@ -151,7 +163,7 @@ The special document names (and pages generated for them) are:
:ref:`object descriptions `, and from :rst:dir:`index`
directives.
- The module index contains one entry per :rst:dir:`module` directive.
+ The Python module index contains one entry per :rst:dir:`py:module` directive.
The search page contains a form that uses the generated JSON search index and
JavaScript to full-text search the generated documents for search words; it
diff --git a/doc/rest.rst b/doc/rest.rst
index 2b6eee6b4..693075728 100644
--- a/doc/rest.rst
+++ b/doc/rest.rst
@@ -325,14 +325,15 @@ directives.) Looking at this example, ::
.. function:: foo(x)
foo(y, z)
- :bar: no
+ :module: some.module.name
Return a line of text input from the user.
``function`` is the directive name. It is given two arguments here, the
-remainder of the first line and the second line, as well as one option ``bar``
-(as you can see, options are given in the lines immediately following the
-arguments and indicated by the colons).
+remainder of the first line and the second line, as well as one option
+``module`` (as you can see, options are given in the lines immediately following
+the arguments and indicated by the colons). Options must be indented to the
+same level as the directive content.
The directive content follows after a blank line and is indented relative to the
directive start.
diff --git a/doc/templating.rst b/doc/templating.rst
index 6880663d3..193a90bd9 100644
--- a/doc/templating.rst
+++ b/doc/templating.rst
@@ -21,10 +21,10 @@ No. You have several other options:
configuration value accordingly.
* You can :ref:`write a custom builder ` that derives from
- :class:`~sphinx.builders.StandaloneHTMLBuilder` and calls your template engine
- of choice.
+ :class:`~sphinx.builders.html.StandaloneHTMLBuilder` and calls your template
+ engine of choice.
-* You can use the :class:`~sphinx.builders.PickleHTMLBuilder` that produces
+* You can use the :class:`~sphinx.builders.html.PickleHTMLBuilder` that produces
pickle files with the page contents, and postprocess them using a custom tool,
or use them in your Web application.
@@ -261,9 +261,9 @@ in the future.
.. data:: file_suffix
- The value of the builder's :attr:`out_suffix` attribute, i.e. the file name
- extension that the output files will get. For a standard HTML builder, this
- is usually ``.html``.
+ The value of the builder's :attr:`~.SerializingHTMLBuilder.out_suffix`
+ attribute, i.e. the file name extension that the output files will get. For
+ a standard HTML builder, this is usually ``.html``.
.. data:: has_source
diff --git a/doc/themes/fullsize/pyramid.png b/doc/themes/fullsize/pyramid.png
new file mode 100644
index 000000000..429a8b7e0
Binary files /dev/null and b/doc/themes/fullsize/pyramid.png differ
diff --git a/doc/themes/pyramid.png b/doc/themes/pyramid.png
new file mode 100644
index 000000000..b16095c99
Binary files /dev/null and b/doc/themes/pyramid.png differ
diff --git a/doc/theming.rst b/doc/theming.rst
index fc8ef236d..802b211f4 100644
--- a/doc/theming.rst
+++ b/doc/theming.rst
@@ -69,9 +69,9 @@ Builtin themes
| | |
| *traditional* | *nature* |
+--------------------+--------------------+
-| |haiku| | |
+| |haiku| | |pyramid| |
| | |
-| *haiku* | |
+| *haiku* | *pyramid* |
+--------------------+--------------------+
.. |default| image:: themes/default.png
@@ -81,6 +81,7 @@ Builtin themes
.. |traditional| image:: themes/traditional.png
.. |nature| image:: themes/nature.png
.. |haiku| image:: themes/haiku.png
+.. |pyramid| image:: themes/pyramid.png
Sphinx comes with a selection of themes to choose from.
@@ -88,12 +89,15 @@ These themes are:
* **basic** -- This is a basically unstyled layout used as the base for the
other themes, and usable as the base for custom themes as well. The HTML
- contains all important elements like sidebar and relation bar. There is one
- option (which is inherited by the other themes):
+ contains all important elements like sidebar and relation bar. There are
+ these options (which are inherited by the other themes):
- **nosidebar** (true or false): Don't include the sidebar. Defaults to
false.
+ - **sidebarwidth** (an integer): Width of the sidebar in pixels. (Do not
+ include ``px`` in the value.) Defaults to 230 pixels.
+
* **default** -- This is the default theme, which looks like `the Python
documentation `_. It can be customized via these
options:
@@ -119,6 +123,8 @@ These themes are:
- **footerbgcolor** (CSS color): Background color for the footer line.
- **footertextcolor** (CSS color): Text color for the footer line.
- **sidebarbgcolor** (CSS color): Background color for the sidebar.
+ - **sidebarbtncolor** (CSS color): Background color for the sidebar collapse
+ button (used when *collapsiblesidebar* is true).
- **sidebartextcolor** (CSS color): Text color for the sidebar.
- **sidebarlinkcolor** (CSS color): Link color for the sidebar.
- **relbarbgcolor** (CSS color): Background color for the relation bar.
@@ -139,11 +145,11 @@ These themes are:
- **headfont** (CSS font-family): Font for headings.
* **sphinxdoc** -- The theme used for this documentation. It features a sidebar
- on the right side. There are currently no options beyond *nosidebar*.
+ on the right side. There are currently no options beyond *nosidebar* and
+ *sidebarwidth*.
* **scrolls** -- A more lightweight theme, based on `the Jinja documentation
- `_. The following color options are
- available:
+ `_. The following color options are available:
- **headerbordercolor**
- **subheadlinecolor**
@@ -174,7 +180,11 @@ These themes are:
is ``justify``.
* **nature** -- A greenish theme. There are currently no options beyond
- *nosidebar*.
+ *nosidebar* and *sidebarwidth*.
+
+* **pyramid** -- A theme from the Pyramid web framework project, designed by
+ Blaise Laflamme. There are currently no options beyond *nosidebar* and
+ *sidebarwidth*.
* **haiku** -- A theme without sidebar inspired by the `Haiku OS user guide
`_. The following
@@ -188,7 +198,7 @@ These themes are:
**hoverlinkcolor** (CSS colors): Colors for various body elements.
* **traditional** -- A theme resembling the old Python documentation. There are
- currently no options beyond *nosidebar*.
+ currently no options beyond *nosidebar* and *sidebarwidth*.
* **epub** -- A theme for the epub builder. There are currently no options.
This theme tries to save visual space which is a sparse resource on ebook
@@ -204,7 +214,7 @@ name), containing the following:
* A :file:`theme.conf` file, see below.
* HTML templates, if needed.
* A ``static/`` directory containing any static files that will be copied to the
- output statid directory on build. These can be images, styles, script files.
+ output static directory on build. These can be images, styles, script files.
The :file:`theme.conf` file is in INI format [1]_ (readable by the standard
Python :mod:`ConfigParser` module) and has the following structure:
diff --git a/doc/translation.png b/doc/translation.png
new file mode 100644
index 000000000..aa368b67e
Binary files /dev/null and b/doc/translation.png differ
diff --git a/doc/web/api.rst b/doc/web/api.rst
new file mode 100644
index 000000000..070cd3a21
--- /dev/null
+++ b/doc/web/api.rst
@@ -0,0 +1,65 @@
+.. _websupportapi:
+
+.. currentmodule:: sphinx.websupport
+
+The WebSupport Class
+====================
+
+.. class:: WebSupport
+
+ The main API class for the web support package. All interactions with the
+ web support package should occur through this class.
+
+ The class takes the following keyword arguments:
+
+ srcdir
+ The directory containing reStructuredText source files.
+
+ builddir
+ The directory that build data and static files should be placed in. This
+ should be used when creating a :class:`WebSupport` object that will be
+ used to build data.
+
+ datadir
+ The directory that the web support data is in. This should be used when
+ creating a :class:`WebSupport` object that will be used to retrieve data.
+
+ search
+ This may contain either a string (e.g. 'xapian') referencing a built-in
+ search adapter to use, or an instance of a subclass of
+ :class:`~.search.BaseSearch`.
+
+ storage
+ This may contain either a string representing a database uri, or an
+ instance of a subclass of :class:`~.storage.StorageBackend`. If this is
+ not provided, a new sqlite database will be created.
+
+ moderation_callback
+ A callable to be called when a new comment is added that is not
+ displayed. It must accept one argument: a dictionary representing the
+ comment that was added.
+
+ staticdir
+ If static files are served from a location besides ``'/static'``, this
+ should be a string with the name of that location
+ (e.g. ``'/static_files'``).
+
+ docroot
+ If the documentation is not served from the base path of a URL, this
+ should be a string specifying that path (e.g. ``'docs'``).
+
+
+Methods
+~~~~~~~
+
+.. automethod:: sphinx.websupport.WebSupport.build
+
+.. automethod:: sphinx.websupport.WebSupport.get_document
+
+.. automethod:: sphinx.websupport.WebSupport.get_data
+
+.. automethod:: sphinx.websupport.WebSupport.add_comment
+
+.. automethod:: sphinx.websupport.WebSupport.process_vote
+
+.. automethod:: sphinx.websupport.WebSupport.get_search_results
diff --git a/doc/web/quickstart.rst b/doc/web/quickstart.rst
new file mode 100644
index 000000000..1bcd217ed
--- /dev/null
+++ b/doc/web/quickstart.rst
@@ -0,0 +1,254 @@
+.. _websupportquickstart:
+
+Web Support Quick Start
+=======================
+
+Building Documentation Data
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To make use of the web support package in your application you'll need to build
+the data it uses. This data includes pickle files representing documents,
+search indices, and node data that is used to track where comments and other
+things are in a document. To do this you will need to create an instance of the
+:class:`~.WebSupport` class and call its :meth:`~.WebSupport.build` method::
+
+ from sphinx.websupport import WebSupport
+
+ support = WebSupport(srcdir='/path/to/rst/sources/',
+ builddir='/path/to/build/outdir',
+ search='xapian')
+
+ support.build()
+
+This will read reStructuredText sources from `srcdir` and place the necessary
+data in `builddir`. The `builddir` will contain two sub-directories: one named
+"data" that contains all the data needed to display documents, search through
+documents, and add comments to documents. The other directory will be called
+"static" and contains static files that should be served from "/static".
+
+.. note::
+
+ If you wish to serve static files from a path other than "/static", you can
+ do so by providing the *staticdir* keyword argument when creating the
+ :class:`~.WebSupport` object.
+
+
+Integrating Sphinx Documents Into Your Webapp
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Now that the data is built, it's time to do something useful with it. Start off
+by creating a :class:`~.WebSupport` object for your application::
+
+ from sphinx.websupport import WebSupport
+
+ support = WebSupport(datadir='/path/to/the/data',
+ search='xapian')
+
+You'll only need one of these for each set of documentation you will be working
+with. You can then call it's :meth:`~.WebSupport.get_document` method to access
+individual documents::
+
+ contents = support.get_document('contents')
+
+This will return a dictionary containing the following items:
+
+* **body**: The main body of the document as HTML
+* **sidebar**: The sidebar of the document as HTML
+* **relbar**: A div containing links to related documents
+* **title**: The title of the document
+* **css**: Links to css files used by Sphinx
+* **js**: Javascript containing comment options
+
+This dict can then be used as context for templates. The goal is to be easy to
+integrate with your existing templating system. An example using `Jinja2
+ `_ is:
+
+.. sourcecode:: html+jinja
+
+ {%- extends "layout.html" %}
+
+ {%- block title %}
+ {{ document.title }}
+ {%- endblock %}
+
+ {% block css %}
+ {{ super() }}
+ {{ document.css|safe }}
+
+ {% endblock %}
+
+ {%- block js %}
+ {{ super() }}
+ {{ document.js|safe }}
+ {%- endblock %}
+
+ {%- block relbar %}
+ {{ document.relbar|safe }}
+ {%- endblock %}
+
+ {%- block body %}
+ {{ document.body|safe }}
+ {%- endblock %}
+
+ {%- block sidebar %}
+ {{ document.sidebar|safe }}
+ {%- endblock %}
+
+
+Authentication
+--------------
+
+To use certain features such as voting, it must be possible to authenticate
+users. The details of the authentication are left to your application. Once a
+user has been authenticated you can pass the user's details to certain
+:class:`~.WebSupport` methods using the *username* and *moderator* keyword
+arguments. The web support package will store the username with comments and
+votes. The only caveat is that if you allow users to change their username you
+must update the websupport package's data::
+
+ support.update_username(old_username, new_username)
+
+*username* should be a unique string which identifies a user, and *moderator*
+should be a boolean representing whether the user has moderation privilieges.
+The default value for *moderator* is *False*.
+
+An example `Flask `_ function that checks whether a
+user is logged in and then retrieves a document is::
+
+ from sphinx.websupport.errors import *
+
+ @app.route('/')
+ def doc(docname):
+ username = g.user.name if g.user else ''
+ moderator = g.user.moderator if g.user else False
+ try:
+ document = support.get_document(docname, username, moderator)
+ except DocumentNotFoundError:
+ abort(404)
+ return render_template('doc.html', document=document)
+
+The first thing to notice is that the *docname* is just the request path. This
+makes accessing the correct document easy from a single view. If the user is
+authenticated, then the username and moderation status are passed along with the
+docname to :meth:`~.WebSupport.get_document`. The web support package will then
+add this data to the ``COMMENT_OPTIONS`` that are used in the template.
+
+.. note::
+
+ This only works works if your documentation is served from your
+ document root. If it is served from another directory, you will
+ need to prefix the url route with that directory, and give the `docroot`
+ keyword argument when creating the web support object::
+
+ support = WebSupport(..., docroot='docs')
+
+ @app.route('/docs/')
+
+
+Performing Searches
+~~~~~~~~~~~~~~~~~~~
+
+To use the search form built-in to the Sphinx sidebar, create a function to
+handle requests to the url 'search' relative to the documentation root. The
+user's search query will be in the GET parameters, with the key `q`. Then use
+the :meth:`~sphinx.websupport.WebSupport.get_search_results` method to retrieve
+search results. In `Flask `_ that would be like this::
+
+ @app.route('/search')
+ def search():
+ q = request.args.get('q')
+ document = support.get_search_results(q)
+ return render_template('doc.html', document=document)
+
+Note that we used the same template to render our search results as we did to
+render our documents. That's because :meth:`~.WebSupport.get_search_results`
+returns a context dict in the same format that :meth:`~.WebSupport.get_document`
+does.
+
+
+Comments & Proposals
+~~~~~~~~~~~~~~~~~~~~
+
+Now that this is done it's time to define the functions that handle the AJAX
+calls from the script. You will need three functions. The first function is
+used to add a new comment, and will call the web support method
+:meth:`~.WebSupport.add_comment`::
+
+ @app.route('/docs/add_comment', methods=['POST'])
+ def add_comment():
+ parent_id = request.form.get('parent', '')
+ node_id = request.form.get('node', '')
+ text = request.form.get('text', '')
+ proposal = request.form.get('proposal', '')
+ username = g.user.name if g.user is not None else 'Anonymous'
+ comment = support.add_comment(text, node_id='node_id',
+ parent_id='parent_id',
+ username=username, proposal=proposal)
+ return jsonify(comment=comment)
+
+You'll notice that both a `parent_id` and `node_id` are sent with the
+request. If the comment is being attached directly to a node, `parent_id`
+will be empty. If the comment is a child of another comment, then `node_id`
+will be empty. Then next function handles the retrieval of comments for a
+specific node, and is aptly named
+:meth:`~sphinx.websupport.WebSupport.get_data`::
+
+ @app.route('/docs/get_comments')
+ def get_comments():
+ username = g.user.name if g.user else None
+ moderator = g.user.moderator if g.user else False
+ node_id = request.args.get('node', '')
+ data = support.get_data(node_id, username, moderator)
+ return jsonify(**data)
+
+The final function that is needed will call :meth:`~.WebSupport.process_vote`,
+and will handle user votes on comments::
+
+ @app.route('/docs/process_vote', methods=['POST'])
+ def process_vote():
+ if g.user is None:
+ abort(401)
+ comment_id = request.form.get('comment_id')
+ value = request.form.get('value')
+ if value is None or comment_id is None:
+ abort(400)
+ support.process_vote(comment_id, g.user.id, value)
+ return "success"
+
+
+Comment Moderation
+~~~~~~~~~~~~~~~~~~
+
+By default, all comments added through :meth:`~.WebSupport.add_comment` are
+automatically displayed. If you wish to have some form of moderation, you can
+pass the `displayed` keyword argument::
+
+ comment = support.add_comment(text, node_id='node_id',
+ parent_id='parent_id',
+ username=username, proposal=proposal,
+ displayed=False)
+
+You can then create a new view to handle the moderation of comments. It
+will be called when a moderator decides a comment should be accepted and
+displayed::
+
+ @app.route('/docs/accept_comment', methods=['POST'])
+ def accept_comment():
+ moderator = g.user.moderator if g.user else False
+ comment_id = request.form.get('id')
+ support.accept_comment(comment_id, moderator=moderator)
+ return 'OK'
+
+Rejecting comments happens via comment deletion.
+
+To perform a custom action (such as emailing a moderator) when a new comment is
+added but not displayed, you can pass callable to the :class:`~.WebSupport`
+class when instantiating your support object::
+
+ def moderation_callback(comment):
+ """Do something..."""
+
+ support = WebSupport(..., moderation_callback=moderation_callback)
+
+The moderation callback must take one argument, which will be the same comment
+dict that is returned by :meth:`add_comment`.
diff --git a/doc/web/searchadapters.rst b/doc/web/searchadapters.rst
new file mode 100644
index 000000000..7d8634f71
--- /dev/null
+++ b/doc/web/searchadapters.rst
@@ -0,0 +1,45 @@
+.. _searchadapters:
+
+.. currentmodule:: sphinx.websupport.search
+
+Search Adapters
+===============
+
+To create a custom search adapter you will need to subclass the
+:class:`BaseSearch` class. Then create an instance of the new class and pass
+that as the `search` keyword argument when you create the :class:`~.WebSupport`
+object::
+
+ support = WebSupport(srcdir=srcdir,
+ builddir=builddir,
+ search=MySearch())
+
+For more information about creating a custom search adapter, please see the
+documentation of the :class:`BaseSearch` class below.
+
+.. class:: BaseSearch
+
+ Defines an interface for search adapters.
+
+
+BaseSearch Methods
+~~~~~~~~~~~~~~~~~~
+
+ The following methods are defined in the BaseSearch class. Some methods do
+ not need to be overridden, but some (:meth:`~BaseSearch.add_document` and
+ :meth:`~BaseSearch.handle_query`) must be overridden in your subclass. For a
+ working example, look at the built-in adapter for whoosh.
+
+.. automethod:: BaseSearch.init_indexing
+
+.. automethod:: BaseSearch.finish_indexing
+
+.. automethod:: BaseSearch.feed
+
+.. automethod:: BaseSearch.add_document
+
+.. automethod:: BaseSearch.query
+
+.. automethod:: BaseSearch.handle_query
+
+.. automethod:: BaseSearch.extract_context
diff --git a/doc/web/storagebackends.rst b/doc/web/storagebackends.rst
new file mode 100644
index 000000000..d191b43e5
--- /dev/null
+++ b/doc/web/storagebackends.rst
@@ -0,0 +1,44 @@
+.. _storagebackends:
+
+.. currentmodule:: sphinx.websupport.storage
+
+Storage Backends
+================
+
+To create a custom storage backend you will need to subclass the
+:class:`StorageBackend` class. Then create an instance of the new class and
+pass that as the `storage` keyword argument when you create the
+:class:`~.WebSupport` object::
+
+ support = WebSupport(srcdir=srcdir,
+ builddir=builddir,
+ storage=MyStorage())
+
+For more information about creating a custom storage backend, please see the
+documentation of the :class:`StorageBackend` class below.
+
+.. class:: StorageBackend
+
+ Defines an interface for storage backends.
+
+
+StorageBackend Methods
+~~~~~~~~~~~~~~~~~~~~~~
+
+.. automethod:: StorageBackend.pre_build
+
+.. automethod:: StorageBackend.add_node
+
+.. automethod:: StorageBackend.post_build
+
+.. automethod:: StorageBackend.add_comment
+
+.. automethod:: StorageBackend.delete_comment
+
+.. automethod:: StorageBackend.get_data
+
+.. automethod:: StorageBackend.process_vote
+
+.. automethod:: StorageBackend.update_username
+
+.. automethod:: StorageBackend.accept_comment
diff --git a/doc/websupport.rst b/doc/websupport.rst
new file mode 100644
index 000000000..3ccae2467
--- /dev/null
+++ b/doc/websupport.rst
@@ -0,0 +1,16 @@
+.. _websupport:
+
+Sphinx Web Support
+==================
+
+.. versionadded:: 1.1
+
+Sphinx provides a Python API to easily integrate Sphinx documentation into your
+web application. To learn more read the :ref:`websupportquickstart`.
+
+.. toctree::
+
+ web/quickstart
+ web/api
+ web/searchadapters
+ web/storagebackends
diff --git a/ez_setup.py b/ez_setup.py
deleted file mode 100644
index d24e845e5..000000000
--- a/ez_setup.py
+++ /dev/null
@@ -1,276 +0,0 @@
-#!python
-"""Bootstrap setuptools installation
-
-If you want to use setuptools in your package's setup.py, just include this
-file in the same directory with it, and add this to the top of your setup.py::
-
- from ez_setup import use_setuptools
- use_setuptools()
-
-If you want to require a specific version of setuptools, set a download
-mirror, or use an alternate download directory, you can do so by supplying
-the appropriate options to ``use_setuptools()``.
-
-This file can also be run as a script to install or upgrade setuptools.
-"""
-import sys
-DEFAULT_VERSION = "0.6c9"
-DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
-
-md5_data = {
- 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
- 'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
- 'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
- 'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a',
- 'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618',
- 'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac',
- 'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5',
- 'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4',
- 'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c',
- 'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b',
- 'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27',
- 'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277',
- 'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa',
- 'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e',
- 'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e',
- 'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f',
- 'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
- 'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
- 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
- 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
- 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
- 'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
- 'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
- 'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
- 'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
- 'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
- 'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
- 'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902',
- 'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de',
- 'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b',
- 'setuptools-0.6c9-py2.3.egg': 'a83c4020414807b496e4cfbe08507c03',
- 'setuptools-0.6c9-py2.4.egg': '260a2be2e5388d66bdaee06abec6342a',
- 'setuptools-0.6c9-py2.5.egg': 'fe67c3e5a17b12c0e7c541b7ea43a8e6',
- 'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
-}
-
-import sys, os
-try: from hashlib import md5
-except ImportError: from md5 import md5
-
-def _validate_md5(egg_name, data):
- if egg_name in md5_data:
- digest = md5(data).hexdigest()
- if digest != md5_data[egg_name]:
- print >>sys.stderr, (
- "md5 validation of %s failed! (Possible download problem?)"
- % egg_name
- )
- sys.exit(2)
- return data
-
-def use_setuptools(
- version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
- download_delay=15
-):
- """Automatically find/download setuptools and make it available on sys.path
-
- `version` should be a valid setuptools version number that is available
- as an egg for download under the `download_base` URL (which should end with
- a '/'). `to_dir` is the directory where setuptools will be downloaded, if
- it is not already available. If `download_delay` is specified, it should
- be the number of seconds that will be paused before initiating a download,
- should one be required. If an older version of setuptools is installed,
- this routine will print a message to ``sys.stderr`` and raise SystemExit in
- an attempt to abort the calling script.
- """
- was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
- def do_download():
- egg = download_setuptools(version, download_base, to_dir, download_delay)
- sys.path.insert(0, egg)
- import setuptools; setuptools.bootstrap_install_from = egg
- try:
- import pkg_resources
- except ImportError:
- return do_download()
- try:
- pkg_resources.require("setuptools>="+version); return
- except pkg_resources.VersionConflict, e:
- if was_imported:
- print >>sys.stderr, (
- "The required version of setuptools (>=%s) is not available, and\n"
- "can't be installed while this script is running. Please install\n"
- " a more recent version first, using 'easy_install -U setuptools'."
- "\n\n(Currently using %r)"
- ) % (version, e.args[0])
- sys.exit(2)
- else:
- del pkg_resources, sys.modules['pkg_resources'] # reload ok
- return do_download()
- except pkg_resources.DistributionNotFound:
- return do_download()
-
-def download_setuptools(
- version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
- delay = 15
-):
- """Download setuptools from a specified location and return its filename
-
- `version` should be a valid setuptools version number that is available
- as an egg for download under the `download_base` URL (which should end
- with a '/'). `to_dir` is the directory where the egg will be downloaded.
- `delay` is the number of seconds to pause before an actual download attempt.
- """
- import urllib2, shutil
- egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
- url = download_base + egg_name
- saveto = os.path.join(to_dir, egg_name)
- src = dst = None
- if not os.path.exists(saveto): # Avoid repeated downloads
- try:
- from distutils import log
- if delay:
- log.warn("""
----------------------------------------------------------------------------
-This script requires setuptools version %s to run (even to display
-help). I will attempt to download it for you (from
-%s), but
-you may need to enable firewall access for this script first.
-I will start the download in %d seconds.
-
-(Note: if this machine does not have network access, please obtain the file
-
- %s
-
-and place it in this directory before rerunning this script.)
----------------------------------------------------------------------------""",
- version, download_base, delay, url
- ); from time import sleep; sleep(delay)
- log.warn("Downloading %s", url)
- src = urllib2.urlopen(url)
- # Read/write all in one block, so we don't create a corrupt file
- # if the download is interrupted.
- data = _validate_md5(egg_name, src.read())
- dst = open(saveto,"wb"); dst.write(data)
- finally:
- if src: src.close()
- if dst: dst.close()
- return os.path.realpath(saveto)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def main(argv, version=DEFAULT_VERSION):
- """Install or upgrade setuptools and EasyInstall"""
- try:
- import setuptools
- except ImportError:
- egg = None
- try:
- egg = download_setuptools(version, delay=0)
- sys.path.insert(0,egg)
- from setuptools.command.easy_install import main
- return main(list(argv)+[egg]) # we're done here
- finally:
- if egg and os.path.exists(egg):
- os.unlink(egg)
- else:
- if setuptools.__version__ == '0.0.1':
- print >>sys.stderr, (
- "You have an obsolete version of setuptools installed. Please\n"
- "remove it from your system entirely before rerunning this script."
- )
- sys.exit(2)
-
- req = "setuptools>="+version
- import pkg_resources
- try:
- pkg_resources.require(req)
- except pkg_resources.VersionConflict:
- try:
- from setuptools.command.easy_install import main
- except ImportError:
- from easy_install import main
- main(list(argv)+[download_setuptools(delay=0)])
- sys.exit(0) # try to force an exit
- else:
- if argv:
- from setuptools.command.easy_install import main
- main(argv)
- else:
- print "Setuptools version",version,"or greater has been installed."
- print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
-
-def update_md5(filenames):
- """Update our built-in md5 registry"""
-
- import re
-
- for name in filenames:
- base = os.path.basename(name)
- f = open(name,'rb')
- md5_data[base] = md5(f.read()).hexdigest()
- f.close()
-
- data = [" %r: %r,\n" % it for it in md5_data.items()]
- data.sort()
- repl = "".join(data)
-
- import inspect
- srcfile = inspect.getsourcefile(sys.modules[__name__])
- f = open(srcfile, 'rb'); src = f.read(); f.close()
-
- match = re.search("\nmd5_data = {\n([^}]+)}", src)
- if not match:
- print >>sys.stderr, "Internal error!"
- sys.exit(2)
-
- src = src[:match.start(1)] + repl + src[match.end(1):]
- f = open(srcfile,'w')
- f.write(src)
- f.close()
-
-
-if __name__=='__main__':
- if len(sys.argv)>2 and sys.argv[1]=='--md5update':
- update_md5(sys.argv[2:])
- else:
- main(sys.argv[1:])
-
-
-
-
-
-
diff --git a/setup.py b/setup.py
index 183fcceb1..c73facaa6 100644
--- a/setup.py
+++ b/setup.py
@@ -2,8 +2,8 @@
try:
from setuptools import setup, find_packages
except ImportError:
- import ez_setup
- ez_setup.use_setuptools()
+ import distribute_setup
+ distribute_setup.use_setuptools()
from setuptools import setup, find_packages
import os
@@ -47,7 +47,7 @@ A development egg can be found `here
requires = ['Pygments>=0.8', 'Jinja2>=2.2', 'docutils>=0.5']
if sys.version_info < (2, 4):
- print 'ERROR: Sphinx requires at least Python 2.4 to run.'
+ print('ERROR: Sphinx requires at least Python 2.4 to run.')
sys.exit(1)
if sys.version_info < (2, 5):
@@ -63,6 +63,9 @@ if sys.version_info < (2, 5):
else:
del requires[-1]
+ # The uuid module is new in the stdlib in 2.5
+ requires.append('uuid>=1.30')
+
# Provide a "compile_catalog" command that also creates the translated
# JavaScript files if Babel is available.
@@ -190,6 +193,7 @@ setup(
'console_scripts': [
'sphinx-build = sphinx:main',
'sphinx-quickstart = sphinx.quickstart:main',
+ 'sphinx-apidoc = sphinx.apidoc:main',
'sphinx-autogen = sphinx.ext.autosummary.generate:main',
],
'distutils.commands': [
@@ -198,4 +202,6 @@ setup(
},
install_requires=requires,
cmdclass=cmdclass,
+ use_2to3=True,
+ use_2to3_fixers=['custom_fixers'],
)
diff --git a/sphinx-apidoc.py b/sphinx-apidoc.py
new file mode 100755
index 000000000..9cafb497d
--- /dev/null
+++ b/sphinx-apidoc.py
@@ -0,0 +1,15 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+ Sphinx - Python documentation toolchain
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+import sys
+
+if __name__ == '__main__':
+ from sphinx.apidoc import main
+ sys.exit(main(sys.argv))
diff --git a/sphinx-autogen.py b/sphinx-autogen.py
index 621784196..b1e467e77 100755
--- a/sphinx-autogen.py
+++ b/sphinx-autogen.py
@@ -4,8 +4,8 @@
Sphinx - Python documentation toolchain
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- :copyright: 2007-2010 by Georg Brandl.
- :license: BSD.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
"""
import sys
diff --git a/sphinx-build.py b/sphinx-build.py
index 30f3f6e6b..70822d732 100755
--- a/sphinx-build.py
+++ b/sphinx-build.py
@@ -4,7 +4,7 @@
Sphinx - Python documentation toolchain
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
diff --git a/sphinx-quickstart.py b/sphinx-quickstart.py
index 99c0f0b37..5d7c15443 100755
--- a/sphinx-quickstart.py
+++ b/sphinx-quickstart.py
@@ -4,7 +4,7 @@
Sphinx - Python documentation toolchain
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
diff --git a/sphinx/__init__.py b/sphinx/__init__.py
index 31c61a86a..468b3406a 100644
--- a/sphinx/__init__.py
+++ b/sphinx/__init__.py
@@ -5,14 +5,17 @@
The Sphinx documentation toolchain.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
+# Keep this file executable as-is in Python 3!
+# (Otherwise getting the version out of it from setup.py is impossible.)
+
import sys
from os import path
-__version__ = '1.1pre'
+__version__ = '1.1pre'
__released__ = '1.1 (hg)' # used when Sphinx builds its own docs
package_dir = path.abspath(path.dirname(__file__))
@@ -34,14 +37,16 @@ if '+' in __version__ or 'pre' in __version__:
def main(argv=sys.argv):
+ """Sphinx build "main" command-line entry."""
if sys.version_info[:3] < (2, 4, 0):
- print >>sys.stderr, \
- 'Error: Sphinx requires at least Python 2.4 to run.'
+ sys.stderr.write('Error: Sphinx requires at least '
+ 'Python 2.4 to run.\n')
return 1
try:
from sphinx import cmdline
- except ImportError, err:
+ except ImportError:
+ err = sys.exc_info()[1]
errstr = str(err)
if errstr.lower().startswith('no module named'):
whichmod = errstr[16:]
@@ -54,14 +59,14 @@ def main(argv=sys.argv):
whichmod = 'roman module (which is distributed with Docutils)'
hint = ('This can happen if you upgraded docutils using\n'
'easy_install without uninstalling the old version'
- 'first.')
+ 'first.\n')
else:
whichmod += ' module'
- print >>sys.stderr, ('Error: The %s cannot be found. '
- 'Did you install Sphinx and its dependencies '
- 'correctly?' % whichmod)
+ sys.stderr.write('Error: The %s cannot be found. '
+ 'Did you install Sphinx and its dependencies '
+ 'correctly?\n' % whichmod)
if hint:
- print >> sys.stderr, hint
+ sys.stderr.write(hint)
return 1
raise
return cmdline.main(argv)
diff --git a/sphinx/addnodes.py b/sphinx/addnodes.py
index 0a2f0f7f8..94f1d615f 100644
--- a/sphinx/addnodes.py
+++ b/sphinx/addnodes.py
@@ -5,109 +5,177 @@
Additional docutils nodes.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
from docutils import nodes
-# index markup
-class index(nodes.Invisible, nodes.Inline, nodes.TextElement): pass
+
+class toctree(nodes.General, nodes.Element):
+ """Node for inserting a "TOC tree"."""
+
# domain-specific object descriptions (class, function etc.)
-# parent node for signature and content
-class desc(nodes.Admonition, nodes.Element): pass
+class desc(nodes.Admonition, nodes.Element):
+ """Node for object descriptions.
-# additional name parts (module name, class name)
-class desc_addname(nodes.Part, nodes.Inline, nodes.TextElement): pass
+ This node is similar to a "definition list" with one definition. It
+ contains one or more ``desc_signature`` and a ``desc_content``.
+ """
+
+class desc_signature(nodes.Part, nodes.Inline, nodes.TextElement):
+ """Node for object signatures.
+
+ The "term" part of the custom Sphinx definition list.
+ """
+
+
+# nodes to use within a desc_signature
+
+class desc_addname(nodes.Part, nodes.Inline, nodes.TextElement):
+ """Node for additional name parts (module name, class name)."""
# compatibility alias
desc_classname = desc_addname
-# return type (C); object type
-class desc_type(nodes.Part, nodes.Inline, nodes.TextElement): pass
-# -> annotation (Python)
+
+class desc_type(nodes.Part, nodes.Inline, nodes.TextElement):
+ """Node for return types or object type names."""
+
class desc_returns(desc_type):
+ """Node for a "returns" annotation (a la -> in Python)."""
def astext(self):
return ' -> ' + nodes.TextElement.astext(self)
-# main name of object
-class desc_name(nodes.Part, nodes.Inline, nodes.TextElement): pass
-# argument list
-class desc_signature(nodes.Part, nodes.Inline, nodes.TextElement): pass
+
+class desc_name(nodes.Part, nodes.Inline, nodes.TextElement):
+ """Node for the main object name."""
+
class desc_parameterlist(nodes.Part, nodes.Inline, nodes.TextElement):
+ """Node for a general parameter list."""
child_text_separator = ', '
-class desc_parameter(nodes.Part, nodes.Inline, nodes.TextElement): pass
+
+class desc_parameter(nodes.Part, nodes.Inline, nodes.TextElement):
+ """Node for a single parameter."""
+
class desc_optional(nodes.Part, nodes.Inline, nodes.TextElement):
+ """Node for marking optional parts of the parameter list."""
child_text_separator = ', '
def astext(self):
return '[' + nodes.TextElement.astext(self) + ']'
-# annotation (not Python 3-style annotations)
-class desc_annotation(nodes.Part, nodes.Inline, nodes.TextElement): pass
-# node for content
-class desc_content(nodes.General, nodes.Element): pass
+class desc_annotation(nodes.Part, nodes.Inline, nodes.TextElement):
+ """Node for signature annotations (not Python 3-style annotations)."""
-# \versionadded, \versionchanged, \deprecated
-class versionmodified(nodes.Admonition, nodes.TextElement): pass
+class desc_content(nodes.General, nodes.Element):
+ """Node for object description content.
-# seealso
-class seealso(nodes.Admonition, nodes.Element): pass
+ This is the "definition" part of the custom Sphinx definition list.
+ """
-# productionlist
-class productionlist(nodes.Admonition, nodes.Element): pass
-class production(nodes.Part, nodes.Inline, nodes.TextElement): pass
-# toc tree
-class toctree(nodes.General, nodes.Element): pass
+# new admonition-like constructs
-# centered
-class centered(nodes.Part, nodes.Element): pass
+class versionmodified(nodes.Admonition, nodes.TextElement):
+ """Node for version change entries.
-# pending xref
-class pending_xref(nodes.Inline, nodes.Element): pass
+ Currently used for "versionadded", "versionchanged" and "deprecated"
+ directives.
+ """
-# compact paragraph -- never makes a
-class compact_paragraph(nodes.paragraph): pass
+class seealso(nodes.Admonition, nodes.Element):
+ """Custom "see also" admonition."""
-# reference to a file to download
-class download_reference(nodes.reference): pass
+class productionlist(nodes.Admonition, nodes.Element):
+ """Node for grammar production lists.
-# for the ACKS list
-class acks(nodes.Element): pass
+ Contains ``production`` nodes.
+ """
-# for horizontal lists
-class hlist(nodes.Element): pass
-class hlistcol(nodes.Element): pass
+class production(nodes.Part, nodes.Inline, nodes.TextElement):
+ """Node for a single grammar production rule."""
-# sets the highlighting language for literal blocks
-class highlightlang(nodes.Element): pass
-# like emphasis, but doesn't apply further text processors, e.g. smartypants
-class literal_emphasis(nodes.emphasis): pass
+# other directive-level nodes
-# for abbreviations (with explanations)
-class abbreviation(nodes.Inline, nodes.TextElement): pass
+class index(nodes.Invisible, nodes.Inline, nodes.TextElement):
+ """Node for index entries.
-# glossary
-class glossary(nodes.Element): pass
+ This node is created by the ``index`` directive and has one attribute,
+ ``entries``. Its value is a list of 4-tuples of ``(entrytype, entryname,
+ target, ignored)``.
-# start of a file, used in the LaTeX builder only
-class start_of_file(nodes.Element): pass
+ *entrytype* is one of "single", "pair", "double", "triple".
+ """
-# tabular column specification, used for the LaTeX writer
-class tabular_col_spec(nodes.Element): pass
+class centered(nodes.Part, nodes.Element):
+ """Deprecated."""
-# only (in/exclusion based on tags)
-class only(nodes.Element): pass
+class acks(nodes.Element):
+ """Special node for "acks" lists."""
-# meta directive -- same as docutils' standard meta node, but pickleable
-class meta(nodes.Special, nodes.PreBibliographic, nodes.Element): pass
+class hlist(nodes.Element):
+ """Node for "horizontal lists", i.e. lists that should be compressed to
+ take up less vertical space.
+ """
-# make them known to docutils. this is needed, because the HTML writer
-# will choke at some point if these are not added
-nodes._add_node_class_names("""index desc desc_content desc_signature
- desc_type desc_returns desc_addname desc_name desc_parameterlist
- desc_parameter desc_optional download_reference hlist hlistcol
- centered versionmodified seealso productionlist production toctree
- pending_xref compact_paragraph highlightlang literal_emphasis
- abbreviation glossary acks module start_of_file tabular_col_spec
- meta""".split())
+class hlistcol(nodes.Element):
+ """Node for one column in a horizontal list."""
+
+class compact_paragraph(nodes.paragraph):
+ """Node for a compact paragraph (which never makes a
node)."""
+
+class glossary(nodes.Element):
+ """Node to insert a glossary."""
+
+class only(nodes.Element):
+ """Node for "only" directives (conditional inclusion based on tags)."""
+
+
+# meta-information nodes
+
+class start_of_file(nodes.Element):
+ """Node to mark start of a new file, used in the LaTeX builder only."""
+
+class highlightlang(nodes.Element):
+ """Inserted to set the highlight language and line number options for
+ subsequent code blocks.
+ """
+
+class tabular_col_spec(nodes.Element):
+ """Node for specifying tabular columns, used for LaTeX output."""
+
+class meta(nodes.Special, nodes.PreBibliographic, nodes.Element):
+ """Node for meta directive -- same as docutils' standard meta node,
+ but pickleable.
+ """
+
+
+# inline nodes
+
+class pending_xref(nodes.Inline, nodes.Element):
+ """Node for cross-references that cannot be resolved without complete
+ information about all documents.
+
+ These nodes are resolved before writing output, in
+ BuildEnvironment.resolve_references.
+ """
+
+class download_reference(nodes.reference):
+ """Node for download references, similar to pending_xref."""
+
+class literal_emphasis(nodes.emphasis):
+ """Node that behaves like `emphasis`, but further text processors are not
+ applied (e.g. smartypants for HTML output).
+ """
+
+class abbreviation(nodes.Inline, nodes.TextElement):
+ """Node for abbreviations with explanations."""
+
+class termsep(nodes.Structural, nodes.Element):
+ """Separates two terms within a node."""
+
+
+# make the new nodes known to docutils; needed because the HTML writer will
+# choke at some point if these are not added
+nodes._add_node_class_names(k for k in globals().keys()
+ if k != 'nodes' and k[0] != '_')
diff --git a/sphinx/apidoc.py b/sphinx/apidoc.py
new file mode 100644
index 000000000..86ed04d06
--- /dev/null
+++ b/sphinx/apidoc.py
@@ -0,0 +1,263 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.apidoc
+ ~~~~~~~~~~~~~
+
+ Parses a directory tree looking for Python modules and packages and creates
+ ReST files appropriately to create code documentation with Sphinx. It also
+ creates a modules index (named modules.).
+
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+import os
+import sys
+import optparse
+from os import path
+
+# automodule options
+OPTIONS = [
+ 'members',
+ 'undoc-members',
+ # 'inherited-members', # disabled because there's a bug in sphinx
+ 'show-inheritance',
+]
+
+INITPY = '__init__.py'
+
+def makename(package, module):
+ """Join package and module with a dot."""
+ # Both package and module can be None/empty.
+ if package:
+ name = package
+ if module:
+ name += '.' + module
+ else:
+ name = module
+ return name
+
+def write_file(name, text, opts):
+ """Write the output file for module/package ."""
+ fname = path.join(opts.destdir, "%s.%s" % (name, opts.suffix))
+ if opts.dryrun:
+ print 'Would create file %s.' % fname
+ return
+ if not opts.force and path.isfile(fname):
+ print 'File %s already exists, skipping.' % fname
+ else:
+ print 'Creating file %s.' % fname
+ f = open(fname, 'w')
+ try:
+ f.write(text)
+ finally:
+ f.close()
+
+def format_heading(level, text):
+ """Create a heading of [1, 2 or 3 supported]."""
+ underlining = ['=', '-', '~', ][level-1] * len(text)
+ return '%s\n%s\n\n' % (text, underlining)
+
+def format_directive(module, package=None):
+ """Create the automodule directive and add the options."""
+ directive = '.. automodule:: %s\n' % makename(package, module)
+ for option in OPTIONS:
+ directive += ' :%s:\n' % option
+ return directive
+
+def create_module_file(package, module, opts):
+ """Build the text of the file and write the file."""
+ text = format_heading(1, '%s Module' % module)
+ #text += format_heading(2, ':mod:`%s` Module' % module)
+ text += format_directive(module, package)
+ write_file(makename(package, module), text, opts)
+
+def create_package_file(root, master_package, subroot, py_files, opts, subs):
+ """Build the text of the file and write the file."""
+ package = path.split(root)[-1]
+ text = format_heading(1, '%s Package' % package)
+ # add each module in the package
+ for py_file in py_files:
+ if shall_skip(path.join(root, py_file)):
+ continue
+ is_package = py_file == INITPY
+ py_file = path.splitext(py_file)[0]
+ py_path = makename(subroot, py_file)
+ if is_package:
+ heading = ':mod:`%s` Package' % package
+ else:
+ heading = ':mod:`%s` Module' % py_file
+ text += format_heading(2, heading)
+ text += format_directive(is_package and subroot or py_path,
+ master_package)
+ text += '\n'
+
+ # build a list of directories that are packages (contain an INITPY file)
+ subs = [sub for sub in subs if path.isfile(path.join(root, sub, INITPY))]
+ # if there are some package directories, add a TOC for theses subpackages
+ if subs:
+ text += format_heading(2, 'Subpackages')
+ text += '.. toctree::\n\n'
+ for sub in subs:
+ text += ' %s.%s\n' % (makename(master_package, subroot), sub)
+ text += '\n'
+
+ write_file(makename(master_package, subroot), text, opts)
+
+def create_modules_toc_file(master_package, modules, opts, name='modules'):
+ """
+ Create the module's index.
+ """
+ text = format_heading(1, '%s Modules' % opts.header)
+ text += '.. toctree::\n'
+ text += ' :maxdepth: %s\n\n' % opts.maxdepth
+
+ modules.sort()
+ prev_module = ''
+ for module in modules:
+ # look if the module is a subpackage and, if yes, ignore it
+ if module.startswith(prev_module + '.'):
+ continue
+ prev_module = module
+ text += ' %s\n' % module
+
+ write_file(name, text, opts)
+
+def shall_skip(module):
+ """
+ Check if we want to skip this module.
+ """
+ # skip it, if there is nothing (or just \n or \r\n) in the file
+ return path.getsize(module) < 3
+
+def recurse_tree(rootpath, excludes, opts):
+ """
+ Look for every file in the directory tree and create the corresponding
+ ReST files.
+ """
+ # check if the base directory is a package and get is name
+ if INITPY in os.listdir(rootpath):
+ package_name = path.abspath(rootpath).split(path.sep)[-1]
+ else:
+ package_name = None
+
+ toc = []
+ tree = os.walk(rootpath, False)
+ for root, subs, files in tree:
+ # keep only the Python script files
+ py_files = sorted([f for f in files if path.splitext(f)[1] == '.py'])
+ if INITPY in py_files:
+ py_files.remove(INITPY)
+ py_files.insert(0, INITPY)
+ # remove hidden ('.') and private ('_') directories
+ subs = sorted([sub for sub in subs if sub[0] not in ['.', '_']])
+ # check if there are valid files to process
+ # TODO: could add check for windows hidden files
+ if "/." in root or "/_" in root \
+ or not py_files \
+ or is_excluded(root, excludes):
+ continue
+ if INITPY in py_files:
+ # we are in package ...
+ if (# ... with subpackage(s)
+ subs
+ or
+ # ... with some module(s)
+ len(py_files) > 1
+ or
+ # ... with a not-to-be-skipped INITPY file
+ not shall_skip(path.join(root, INITPY))
+ ):
+ subroot = root[len(rootpath):].lstrip(path.sep).\
+ replace(path.sep, '.')
+ create_package_file(root, package_name, subroot,
+ py_files, opts, subs)
+ toc.append(makename(package_name, subroot))
+ elif root == rootpath:
+ # if we are at the root level, we don't require it to be a package
+ for py_file in py_files:
+ if not shall_skip(path.join(rootpath, py_file)):
+ module = path.splitext(py_file)[0]
+ create_module_file(package_name, module, opts)
+ toc.append(makename(package_name, module))
+
+ # create the module's index
+ if not opts.notoc:
+ create_modules_toc_file(package_name, toc, opts)
+
+def normalize_excludes(rootpath, excludes):
+ """
+ Normalize the excluded directory list:
+ * must be either an absolute path or start with rootpath,
+ * otherwise it is joined with rootpath
+ * with trailing slash
+ """
+ sep = path.sep
+ f_excludes = []
+ for exclude in excludes:
+ if not path.isabs(exclude) and not exclude.startswith(rootpath):
+ exclude = path.join(rootpath, exclude)
+ if not exclude.endswith(sep):
+ exclude += sep
+ f_excludes.append(exclude)
+ return f_excludes
+
+def is_excluded(root, excludes):
+ """
+ Check if the directory is in the exclude list.
+
+ Note: by having trailing slashes, we avoid common prefix issues, like
+ e.g. an exlude "foo" also accidentally excluding "foobar".
+ """
+ sep = path.sep
+ if not root.endswith(sep):
+ root += sep
+ for exclude in excludes:
+ if root.startswith(exclude):
+ return True
+ return False
+
+def main(argv=sys.argv):
+ """
+ Parse and check the command line arguments.
+ """
+ parser = optparse.OptionParser(
+ usage="""\
+usage: %prog [options] -o [exclude_paths, ...]
+
+Look recursively in for Python modules and packages and create
+a reST file with automodule directives per package in the .
+
+Note: By default this script will not overwrite already created files.""")
+
+ parser.add_option('-o', '--output-dir', action='store', dest='destdir',
+ help='Directory to place all output', default='')
+ parser.add_option('-d', '--maxdepth', action='store', dest='maxdepth',
+ help='Maximum depth of submodules to show in the TOC '
+ '(default: 4)', type='int', default=4)
+ parser.add_option('-f', '--force', action='store_true', dest='force',
+ help='Overwrite all the files')
+ parser.add_option('-n', '--dry-run', action='store_true', dest='dryrun',
+ help='Run the script without creating the files')
+ parser.add_option('-T', '--no-toc', action='store_true', dest='notoc',
+ help='Don\'t create the table of contents file')
+ parser.add_option('-H', '--doc-header', action='store', dest='header',
+ help='Documentation Header (default: Project)',
+ default='Project')
+ parser.add_option('-s', '--suffix', action='store', dest='suffix',
+ help='file suffix (default: rst)', default='rst')
+
+ (opts, args) = parser.parse_args(argv[1:])
+
+ if not args:
+ parser.error('A package path is required.')
+ if not opts.destdir:
+ parser.error('An output directory is required.')
+ rootpath, excludes = args[0], args[1:]
+ if not path.isdir(rootpath):
+ print >>sys.stderr, '%s is not a directory.' % rootpath
+ sys.exit(1)
+ if not path.isdir(opts.destdir):
+ print '%s is not a valid output directory.' % opts.destdir
+ sys.exit(1)
+ excludes = normalize_excludes(rootpath, excludes)
+ recurse_tree(rootpath, excludes, opts)
diff --git a/sphinx/application.py b/sphinx/application.py
index 97778d3fb..840fc46b9 100644
--- a/sphinx/application.py
+++ b/sphinx/application.py
@@ -7,7 +7,7 @@
Gracefully adapted from the TextPress system by Armin.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -37,12 +37,10 @@ from sphinx.util.osutil import ENOENT
from sphinx.util.console import bold
-# Directive is either new-style or old-style
-clstypes = (type, types.ClassType)
-
# List of all known core events. Maps name to arguments description.
events = {
'builder-inited': '',
+ 'env-get-outdated': 'env, added, changed, removed',
'env-purge-doc': 'env, docname',
'source-read': 'docname, source text',
'doctree-read': 'the doctree before being pickled',
@@ -136,9 +134,8 @@ class Sphinx(object):
self._init_builder(buildername)
def _init_i18n(self):
- """
- Load translated strings from the configured localedirs if
- enabled in the configuration.
+ """Load translated strings from the configured localedirs if enabled in
+ the configuration.
"""
if self.config.language is not None:
self.info(bold('loading translations [%s]... ' %
@@ -213,6 +210,12 @@ class Sphinx(object):
self.builder.cleanup()
def warn(self, message, location=None, prefix='WARNING: '):
+ if isinstance(location, tuple):
+ docname, lineno = location
+ if docname:
+ location = '%s:%s' % (self.env.doc2path(docname), lineno or '')
+ else:
+ location = None
warntext = location and '%s: %s%s\n' % (location, prefix, message) or \
'%s%s\n' % (prefix, message)
if self.warningiserror:
@@ -362,6 +365,9 @@ class Sphinx(object):
elif key == 'man':
from sphinx.writers.manpage import ManualPageTranslator \
as translator
+ elif key == 'texinfo':
+ from sphinx.writers.texinfo import TexinfoTranslator \
+ as translator
else:
# ignore invalid keys for compatibility
continue
@@ -426,13 +432,15 @@ class Sphinx(object):
setattr(self.domains[domain], 'get_%s_index' % name, func)
def add_object_type(self, directivename, rolename, indextemplate='',
- parse_node=None, ref_nodeclass=None, objname=''):
+ parse_node=None, ref_nodeclass=None, objname='',
+ doc_field_types=[]):
StandardDomain.object_types[directivename] = \
ObjType(objname or directivename, rolename)
# create a subclass of GenericObject as the new directive
new_directive = type(directivename, (GenericObject, object),
{'indextemplate': indextemplate,
- 'parse_node': staticmethod(parse_node)})
+ 'parse_node': staticmethod(parse_node),
+ 'doc_field_types': doc_field_types})
StandardDomain.directives[directivename] = new_directive
# XXX support more options?
StandardDomain.roles[rolename] = XRefRole(innernodeclass=ref_nodeclass)
@@ -456,8 +464,11 @@ class Sphinx(object):
def add_javascript(self, filename):
from sphinx.builders.html import StandaloneHTMLBuilder
- StandaloneHTMLBuilder.script_files.append(
- posixpath.join('_static', filename))
+ if '://' in filename:
+ StandaloneHTMLBuilder.script_files.append(filename)
+ else:
+ StandaloneHTMLBuilder.script_files.append(
+ posixpath.join('_static', filename))
def add_stylesheet(self, filename):
from sphinx.builders.html import StandaloneHTMLBuilder
@@ -479,6 +490,11 @@ class Sphinx(object):
from sphinx.ext import autodoc
autodoc.AutoDirective._special_attrgetters[type] = getter
+ def add_search_language(self, cls):
+ from sphinx.search import languages, SearchLanguage
+ assert isinstance(cls, SearchLanguage)
+ languages[cls.lang] = cls
+
class TemplateBridge(object):
"""
@@ -487,8 +503,7 @@ class TemplateBridge(object):
"""
def init(self, builder, theme=None, dirs=None):
- """
- Called by the builder to initialize the template system.
+ """Called by the builder to initialize the template system.
*builder* is the builder object; you'll probably want to look at the
value of ``builder.config.templates_path``.
@@ -499,23 +514,20 @@ class TemplateBridge(object):
raise NotImplementedError('must be implemented in subclasses')
def newest_template_mtime(self):
- """
- Called by the builder to determine if output files are outdated
+ """Called by the builder to determine if output files are outdated
because of template changes. Return the mtime of the newest template
file that was changed. The default implementation returns ``0``.
"""
return 0
def render(self, template, context):
- """
- Called by the builder to render a template given as a filename with a
- specified context (a Python dictionary).
+ """Called by the builder to render a template given as a filename with
+ a specified context (a Python dictionary).
"""
raise NotImplementedError('must be implemented in subclasses')
def render_string(self, template, context):
- """
- Called by the builder to render a template given as a string with a
+ """Called by the builder to render a template given as a string with a
specified context (a Python dictionary).
"""
raise NotImplementedError('must be implemented in subclasses')
diff --git a/sphinx/builders/__init__.py b/sphinx/builders/__init__.py
index e345d570f..5240a1c73 100644
--- a/sphinx/builders/__init__.py
+++ b/sphinx/builders/__init__.py
@@ -5,7 +5,7 @@
Builder superclass for all builders.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -31,9 +31,12 @@ class Builder(object):
name = ''
# builder's output format, or '' if no document output is produced
format = ''
+ # doctree versioning method
+ versioning_method = 'none'
def __init__(self, app):
self.env = app.env
+ self.env.set_versioning_method(self.versioning_method)
self.srcdir = app.srcdir
self.confdir = app.confdir
self.outdir = app.outdir
@@ -55,16 +58,13 @@ class Builder(object):
# helper methods
def init(self):
- """
- Load necessary templates and perform initialization. The default
+ """Load necessary templates and perform initialization. The default
implementation does nothing.
"""
pass
def create_template_bridge(self):
- """
- Return the template bridge configured.
- """
+ """Return the template bridge configured."""
if self.config.template_bridge:
self.templates = self.app.import_object(
self.config.template_bridge, 'template_bridge setting')()
@@ -73,23 +73,23 @@ class Builder(object):
self.templates = BuiltinTemplateLoader()
def get_target_uri(self, docname, typ=None):
- """
- Return the target URI for a document name (*typ* can be used to qualify
- the link characteristic for individual builders).
+ """Return the target URI for a document name.
+
+ *typ* can be used to qualify the link characteristic for individual
+ builders.
"""
raise NotImplementedError
def get_relative_uri(self, from_, to, typ=None):
- """
- Return a relative URI between two source filenames. May raise
- environment.NoUri if there's no way to return a sensible URI.
+ """Return a relative URI between two source filenames.
+
+ May raise environment.NoUri if there's no way to return a sensible URI.
"""
return relative_uri(self.get_target_uri(from_),
self.get_target_uri(to, typ))
def get_outdated_docs(self):
- """
- Return an iterable of output files that are outdated, or a string
+ """Return an iterable of output files that are outdated, or a string
describing what an update build will build.
If the builder does not output individual files corresponding to
@@ -129,9 +129,7 @@ class Builder(object):
supported_image_types = []
def post_process_images(self, doctree):
- """
- Pick the best candidate for all image URIs.
- """
+ """Pick the best candidate for all image URIs."""
for node in doctree.traverse(nodes.image):
if '?' in node['candidates']:
# don't rewrite nonlocal image URIs
@@ -198,9 +196,9 @@ class Builder(object):
'out of date' % len(to_build))
def build(self, docnames, summary=None, method='update'):
- """
- Main build method. First updates the environment, and then
- calls :meth:`write`.
+ """Main build method.
+
+ First updates the environment, and then calls :meth:`write`.
"""
if summary:
self.info(bold('building [%s]: ' % self.name), nonl=1)
@@ -277,7 +275,8 @@ class Builder(object):
# add all toctree-containing files that may have changed
for docname in list(docnames):
for tocdocname in self.env.files_to_rebuild.get(docname, []):
- docnames.add(tocdocname)
+ if tocdocname in self.env.found_docs:
+ docnames.add(tocdocname)
docnames.add(self.config.master_doc)
self.info(bold('preparing documents... '), nonl=True)
@@ -302,15 +301,18 @@ class Builder(object):
raise NotImplementedError
def finish(self):
- """
- Finish the building process. The default implementation does nothing.
+ """Finish the building process.
+
+ The default implementation does nothing.
"""
pass
def cleanup(self):
+ """Cleanup any resources.
+
+ The default implementation does nothing.
"""
- Cleanup any resources. The default implementation does nothing.
- """
+ pass
BUILTIN_BUILDERS = {
@@ -327,6 +329,9 @@ BUILTIN_BUILDERS = {
'latex': ('latex', 'LaTeXBuilder'),
'text': ('text', 'TextBuilder'),
'man': ('manpage', 'ManualPageBuilder'),
+ 'texinfo': ('texinfo', 'TexinfoBuilder'),
'changes': ('changes', 'ChangesBuilder'),
'linkcheck': ('linkcheck', 'CheckExternalLinksBuilder'),
+ 'websupport': ('websupport', 'WebSupportBuilder'),
+ 'gettext': ('gettext', 'MessageCatalogBuilder'),
}
diff --git a/sphinx/builders/changes.py b/sphinx/builders/changes.py
index 980ed7606..3e351e6cb 100644
--- a/sphinx/builders/changes.py
+++ b/sphinx/builders/changes.py
@@ -5,7 +5,7 @@
Changelog builder.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -30,7 +30,8 @@ class ChangesBuilder(Builder):
def init(self):
self.create_template_bridge()
- Theme.init_themes(self)
+ Theme.init_themes(self.confdir, self.config.html_theme_path,
+ warn=self.warn)
self.theme = Theme('default')
self.templates.init(self, self.theme)
diff --git a/sphinx/builders/devhelp.py b/sphinx/builders/devhelp.py
index a5a0f280a..a1b419453 100644
--- a/sphinx/builders/devhelp.py
+++ b/sphinx/builders/devhelp.py
@@ -7,7 +7,7 @@
.. _Devhelp: http://live.gnome.org/devhelp
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -42,7 +42,6 @@ except ImportError:
class DevhelpBuilder(StandaloneHTMLBuilder):
"""
Builder that also outputs GNOME Devhelp file.
-
"""
name = 'devhelp'
diff --git a/sphinx/builders/epub.py b/sphinx/builders/epub.py
index fbe88c3b2..3ee4de5f1 100644
--- a/sphinx/builders/epub.py
+++ b/sphinx/builders/epub.py
@@ -6,14 +6,15 @@
Build epub files.
Originally derived from qthelp.py.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import os
import re
-import codecs
+import sys
import time
+import codecs
import zipfile
from os import path
@@ -147,7 +148,8 @@ _refuri_re = re.compile("([^#:]*#)(.*)")
# The epub publisher
class EpubBuilder(StandaloneHTMLBuilder):
- """Builder that outputs epub files.
+ """
+ Builder that outputs epub files.
It creates the metainfo files container.opf, toc.ncx, mimetype, and
META-INF/container.xml. Afterwards, all necessary files are zipped to an
@@ -186,7 +188,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
name = name.replace('<', '<')
name = name.replace('>', '>')
name = name.replace('"', '"')
- name = name.replace('\'', ''')
+ name = name.replace('\'', ''')
return name
def get_refnodes(self, doctree, result):
@@ -244,12 +246,12 @@ class EpubBuilder(StandaloneHTMLBuilder):
})
def fix_fragment(self, prefix, fragment):
- """Return a href/id attribute with colons replaced by hyphens.
- """
+ """Return a href/id attribute with colons replaced by hyphens."""
return prefix + fragment.replace(':', '-')
def fix_ids(self, tree):
"""Replace colons with hyphens in href and id attributes.
+
Some readers crash because they interpret the part as a
transport protocol specification.
"""
@@ -268,8 +270,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
node.attributes['ids'] = newids
def add_visible_links(self, tree):
- """Append visible link targets after external links.
- """
+ """Append visible link targets after external links."""
for node in tree.traverse(nodes.reference):
uri = node.get('refuri', '')
if (uri.startswith('http:') or uri.startswith('https:') or
@@ -283,6 +284,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
def write_doc(self, docname, doctree):
"""Write one document file.
+
This method is overwritten in order to fix fragment identifiers
and to add visible external links.
"""
@@ -291,22 +293,22 @@ class EpubBuilder(StandaloneHTMLBuilder):
return StandaloneHTMLBuilder.write_doc(self, docname, doctree)
def fix_genindex(self, tree):
- """Fix href attributes for genindex pages.
- """
+ """Fix href attributes for genindex pages."""
# XXX: modifies tree inline
# Logic modeled from themes/basic/genindex.html
for key, columns in tree:
for entryname, (links, subitems) in columns:
- for (i, link) in enumerate(links):
+ for (i, (ismain, link)) in enumerate(links):
m = _refuri_re.match(link)
if m:
- links[i] = self.fix_fragment(m.group(1), m.group(2))
+ links[i] = (ismain,
+ self.fix_fragment(m.group(1), m.group(2)))
for subentryname, subentrylinks in subitems:
- for (i, link) in enumerate(subentrylinks):
+ for (i, (ismain, link)) in enumerate(subentrylinks):
m = _refuri_re.match(link)
if m:
- subentrylinks[i] = \
- self.fix_fragment(m.group(1), m.group(2))
+ subentrylinks[i] = (ismain,
+ self.fix_fragment(m.group(1), m.group(2)))
def copy_image_files_pil(self):
"""Copy images using the PIL.
@@ -362,8 +364,9 @@ class EpubBuilder(StandaloneHTMLBuilder):
def handle_page(self, pagename, addctx, templatename='page.html',
outfilename=None, event_arg=None):
"""Create a rendered page.
- This method is overwritten for genindex pages in order to fix
- href link attributes.
+
+ This method is overwritten for genindex pages in order to fix href link
+ attributes.
"""
if pagename.startswith('genindex'):
self.fix_genindex(addctx['genindexentries'])
@@ -465,6 +468,14 @@ class EpubBuilder(StandaloneHTMLBuilder):
spine.append(_spine_template % {
'idref': self.esc(self.make_id(item['refuri']))
})
+ for info in self.domain_indices:
+ spine.append(_spine_template % {
+ 'idref': self.esc(self.make_id(info[0] + self.out_suffix))
+ })
+ if self.config.html_use_index:
+ spine.append(_spine_template % {
+ 'idref': self.esc(self.make_id('genindex' + self.out_suffix))
+ })
# add the optional cover
content_tmpl = _content_template
@@ -513,6 +524,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
def insert_subnav(self, node, subnav):
"""Insert nested navpoints for given node.
+
The node and subnav are already rendered to text.
"""
nlist = node.rsplit('\n', 1)
@@ -522,8 +534,8 @@ class EpubBuilder(StandaloneHTMLBuilder):
def build_navpoints(self, nodes):
"""Create the toc navigation structure.
- Subelements of a node are nested inside the navpoint.
- For nested nodes the parent node is reinserted in the subnav.
+ Subelements of a node are nested inside the navpoint. For nested nodes
+ the parent node is reinserted in the subnav.
"""
navstack = []
navlist = []
@@ -563,8 +575,8 @@ class EpubBuilder(StandaloneHTMLBuilder):
return '\n'.join(navlist)
def toc_metadata(self, level, navpoints):
- """Create a dictionary with all metadata for the toc.ncx
- file properly escaped.
+ """Create a dictionary with all metadata for the toc.ncx file
+ properly escaped.
"""
metadata = {}
metadata['uid'] = self.config.epub_uid
@@ -589,8 +601,8 @@ class EpubBuilder(StandaloneHTMLBuilder):
def build_epub(self, outdir, outname):
"""Write the epub file.
- It is a zip file with the mimetype file stored uncompressed
- as the first entry.
+ It is a zip file with the mimetype file stored uncompressed as the first
+ entry.
"""
self.info('writing %s file...' % outname)
projectfiles = ['META-INF/container.xml', 'content.opf', 'toc.ncx'] \
@@ -600,7 +612,8 @@ class EpubBuilder(StandaloneHTMLBuilder):
epub.write(path.join(outdir, 'mimetype'), 'mimetype', \
zipfile.ZIP_STORED)
for file in projectfiles:
- if isinstance(file, unicode):
- file = file.encode('utf-8')
- epub.write(path.join(outdir, file), file, zipfile.ZIP_DEFLATED)
+ fp = path.join(outdir, file)
+ if isinstance(fp, unicode):
+ fp = fp.encode(sys.getfilesystemencoding())
+ epub.write(fp, file, zipfile.ZIP_DEFLATED)
epub.close()
diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py
new file mode 100644
index 000000000..1ff92360f
--- /dev/null
+++ b/sphinx/builders/gettext.py
@@ -0,0 +1,103 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.builders.gettext
+ ~~~~~~~~~~~~~~~~~~~~~~~
+
+ The MessageCatalogBuilder class.
+
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from os import path
+from codecs import open
+from datetime import datetime
+from collections import defaultdict
+
+from docutils import nodes
+
+from sphinx.builders import Builder
+from sphinx.util.nodes import extract_messages
+from sphinx.util.osutil import SEP, copyfile
+from sphinx.util.console import darkgreen
+
+POHEADER = ur"""
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) %(copyright)s
+# This file is distributed under the same license as the %(project)s package.
+# FIRST AUTHOR , YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: %(version)s\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: %(ctime)s\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: LANGUAGE \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+"""[1:]
+
+
+class I18nBuilder(Builder):
+ """
+ General i18n builder.
+ """
+ name = 'i18n'
+ versioning_method = 'text'
+
+ def init(self):
+ Builder.init(self)
+ self.catalogs = defaultdict(dict)
+
+ def get_target_uri(self, docname, typ=None):
+ return ''
+
+ def get_outdated_docs(self):
+ return self.env.found_docs
+
+ def prepare_writing(self, docnames):
+ return
+
+ def write_doc(self, docname, doctree):
+ catalog = self.catalogs[docname.split(SEP, 1)[0]]
+
+ for node, msg in extract_messages(doctree):
+ catalog.setdefault(node.uid, msg)
+
+
+class MessageCatalogBuilder(I18nBuilder):
+ """
+ Builds gettext-style message catalogs (.pot files).
+ """
+ name = 'gettext'
+
+ def finish(self):
+ I18nBuilder.finish(self)
+ data = dict(
+ version = self.config.version,
+ copyright = self.config.copyright,
+ project = self.config.project,
+ # XXX should supply tz
+ ctime = datetime.now().strftime('%Y-%m-%d %H:%M%z'),
+ )
+ for section, messages in self.status_iterator(
+ self.catalogs.iteritems(), "writing message catalogs... ",
+ lambda (section, _):darkgreen(section), len(self.catalogs)):
+
+ pofn = path.join(self.outdir, section + '.pot')
+ pofile = open(pofn, 'w', encoding='utf-8')
+ try:
+ pofile.write(POHEADER % data)
+ for uid, message in messages.iteritems():
+ # message contains *one* line of text ready for translation
+ message = message.replace(u'\\', ur'\\'). \
+ replace(u'"', ur'\"')
+ pomsg = u'#%s\nmsgid "%s"\nmsgstr ""\n\n' % (uid, message)
+ pofile.write(pomsg)
+ finally:
+ pofile.close()
diff --git a/sphinx/builders/html.py b/sphinx/builders/html.py
index bbfe67e22..b6f9d1338 100644
--- a/sphinx/builders/html.py
+++ b/sphinx/builders/html.py
@@ -5,7 +5,7 @@
Several HTML builders.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -35,7 +35,7 @@ from sphinx.util.osutil import SEP, os_path, relative_uri, ensuredir, \
movefile, ustrftime, copyfile
from sphinx.util.nodes import inline_all_toctrees
from sphinx.util.matching import patmatch, compile_matchers
-from sphinx.util.pycompat import any
+from sphinx.util.pycompat import any, b
from sphinx.errors import SphinxError
from sphinx.locale import _
from sphinx.search import js_index
@@ -63,6 +63,7 @@ class StandaloneHTMLBuilder(Builder):
out_suffix = '.html'
link_suffix = '.html' # defaults to matching out_suffix
indexer_format = js_index
+ indexer_dumps_unicode = True
supported_image_types = ['image/svg+xml', 'image/png',
'image/gif', 'image/jpeg']
searchindex_filename = 'searchindex.js'
@@ -87,6 +88,8 @@ class StandaloneHTMLBuilder(Builder):
self.tags_hash = ''
# section numbers for headings in the currently visited document
self.secnumbers = {}
+ # currently written docname
+ self.current_docname = None
self.init_templates()
self.init_highlighter()
@@ -100,21 +103,28 @@ class StandaloneHTMLBuilder(Builder):
self.link_suffix = self.out_suffix
if self.config.language is not None:
- jsfile_list = [path.join(package_dir, 'locale',
- self.config.language, 'LC_MESSAGES', 'sphinx.js'),
- path.join(sys.prefix, 'share/sphinx/locale',
- self.config.language, 'sphinx.js')]
+ if self._get_translations_js():
+ self.script_files.append('_static/translations.js')
- for jsfile in jsfile_list:
- if path.isfile(jsfile):
- self.script_files.append('_static/translations.js')
- break
+ def _get_translations_js(self):
+ candidates = [path.join(package_dir, 'locale', self.config.language,
+ 'LC_MESSAGES', 'sphinx.js'),
+ path.join(sys.prefix, 'share/sphinx/locale',
+ self.config.language, 'sphinx.js')] + \
+ [path.join(dir, self.config.language,
+ 'LC_MESSAGES', 'sphinx.js')
+ for dir in self.config.locale_dirs]
+ for jsfile in candidates:
+ if path.isfile(jsfile):
+ return jsfile
+ return None
def get_theme_config(self):
return self.config.html_theme, self.config.html_theme_options
def init_templates(self):
- Theme.init_themes(self)
+ Theme.init_themes(self.confdir, self.config.html_theme_path,
+ warn=self.warn)
themename, themeoptions = self.get_theme_config()
self.theme = Theme(themename)
self.theme_options = themeoptions.copy()
@@ -146,8 +156,9 @@ class StandaloneHTMLBuilder(Builder):
cfgdict = dict((name, self.config[name])
for (name, desc) in self.config.values.iteritems()
if desc[1] == 'html')
- self.config_hash = md5(str(cfgdict)).hexdigest()
- self.tags_hash = md5(str(sorted(self.tags))).hexdigest()
+ self.config_hash = md5(unicode(cfgdict).encode('utf-8')).hexdigest()
+ self.tags_hash = md5(unicode(sorted(self.tags)).encode('utf-8')) \
+ .hexdigest()
old_config_hash = old_tags_hash = ''
try:
fp = open(path.join(self.outdir, '.buildinfo'))
@@ -199,7 +210,7 @@ class StandaloneHTMLBuilder(Builder):
"""Utility: Render a lone doctree node."""
if node is None:
return {'fragment': ''}
- doc = new_document('')
+ doc = new_document(b(''))
doc.append(node)
if self._publisher is None:
@@ -221,10 +232,15 @@ class StandaloneHTMLBuilder(Builder):
return pub.writer.parts
def prepare_writing(self, docnames):
- from sphinx.search import IndexBuilder
-
- self.indexer = IndexBuilder(self.env)
+ # create the search indexer
+ from sphinx.search import IndexBuilder, languages
+ lang = self.config.html_search_language or self.config.language
+ if not lang or lang not in languages:
+ lang = 'en'
+ self.indexer = IndexBuilder(self.env, lang,
+ self.config.html_search_options)
self.load_indexer(docnames)
+
self.docwriter = HTMLWriter(self)
self.docsettings = OptionParser(
defaults=self.env.settings,
@@ -371,7 +387,8 @@ class StandaloneHTMLBuilder(Builder):
meta = self.env.metadata.get(docname)
# local TOC and global TOC tree
- toc = self.render_partial(self.env.get_toc_for(docname))['fragment']
+ self_toc = self.env.get_toc_for(docname, self)
+ toc = self.render_partial(self_toc)['fragment']
return dict(
parents = parents,
@@ -396,6 +413,7 @@ class StandaloneHTMLBuilder(Builder):
self.imgpath = relative_uri(self.get_target_uri(docname), '_images')
self.post_process_images(doctree)
self.dlpath = relative_uri(self.get_target_uri(docname), '_downloads')
+ self.current_docname = docname
self.docwriter.write(doctree, destination)
self.docwriter.assemble_parts()
body = self.docwriter.parts['fragment']
@@ -523,22 +541,22 @@ class StandaloneHTMLBuilder(Builder):
f.close()
# then, copy translations JavaScript file
if self.config.language is not None:
- jsfile_list = [path.join(package_dir, 'locale',
- self.config.language, 'LC_MESSAGES', 'sphinx.js'),
- path.join(sys.prefix, 'share/sphinx/locale',
- self.config.language, 'sphinx.js')]
- for jsfile in jsfile_list:
- if path.isfile(jsfile):
- copyfile(jsfile, path.join(self.outdir, '_static',
- 'translations.js'))
- break
+ jsfile = self._get_translations_js()
+ if jsfile:
+ copyfile(jsfile, path.join(self.outdir, '_static',
+ 'translations.js'))
+
+ # add context items for search function used in searchtools.js_t
+ ctx = self.globalcontext.copy()
+ ctx.update(self.indexer.context_for_searchtool())
+
# then, copy over theme-supplied static files
if self.theme:
themeentries = [path.join(themepath, 'static')
for themepath in self.theme.get_dirchain()[::-1]]
for entry in themeentries:
copy_static_entry(entry, path.join(self.outdir, '_static'),
- self, self.globalcontext)
+ self, ctx)
# then, copy over all user-supplied static files
staticentries = [path.join(self.confdir, spath)
for spath in self.config.html_static_path]
@@ -551,7 +569,7 @@ class StandaloneHTMLBuilder(Builder):
self.warn('html_static_path entry %r does not exist' % entry)
continue
copy_static_entry(entry, path.join(self.outdir, '_static'), self,
- self.globalcontext, exclude_matchers=matchers)
+ ctx, exclude_matchers=matchers)
# copy logo and favicon files if not already in static path
if self.config.html_logo:
logobase = path.basename(self.config.html_logo)
@@ -585,8 +603,7 @@ class StandaloneHTMLBuilder(Builder):
self.theme.cleanup()
def post_process_images(self, doctree):
- """
- Pick the best candidate for an image and link down-scaled images to
+ """Pick the best candidate for an image and link down-scaled images to
their high res version.
"""
Builder.post_process_images(self, doctree)
@@ -610,7 +627,11 @@ class StandaloneHTMLBuilder(Builder):
def load_indexer(self, docnames):
keep = set(self.env.all_docs) - set(docnames)
try:
- f = open(path.join(self.outdir, self.searchindex_filename), 'rb')
+ searchindexfn = path.join(self.outdir, self.searchindex_filename)
+ if self.indexer_dumps_unicode:
+ f = codecs.open(searchindexfn, 'r', encoding='utf-8')
+ else:
+ f = open(searchindexfn, 'rb')
try:
self.indexer.load(f, self.indexer_format)
finally:
@@ -678,13 +699,19 @@ class StandaloneHTMLBuilder(Builder):
def pathto(otheruri, resource=False,
baseuri=self.get_target_uri(pagename)):
- if not resource:
+ if resource and '://' in otheruri:
+ # allow non-local resources given by scheme
+ return otheruri
+ elif not resource:
otheruri = self.get_target_uri(otheruri)
uri = relative_uri(baseuri, otheruri) or '#'
return uri
ctx['pathto'] = pathto
ctx['hasdoc'] = lambda name: name in self.env.all_docs
- ctx['encoding'] = encoding = self.config.html_output_encoding
+ if self.name != 'htmlhelp':
+ ctx['encoding'] = encoding = self.config.html_output_encoding
+ else:
+ ctx['encoding'] = encoding = self.encoding
ctx['toctree'] = lambda **kw: self._get_local_toctree(pagename, **kw)
self.add_sidebars(pagename, ctx)
ctx.update(addctx)
@@ -705,7 +732,7 @@ class StandaloneHTMLBuilder(Builder):
# outfilename's path is in general different from self.outdir
ensuredir(path.dirname(outfilename))
try:
- f = codecs.open(outfilename, 'w', encoding)
+ f = codecs.open(outfilename, 'w', encoding, 'xmlcharrefreplace')
try:
f.write(output)
finally:
@@ -727,10 +754,12 @@ class StandaloneHTMLBuilder(Builder):
self.info(bold('dumping object inventory... '), nonl=True)
f = open(path.join(self.outdir, INVENTORY_FILENAME), 'wb')
try:
- f.write('# Sphinx inventory version 2\n')
- f.write('# Project: %s\n' % self.config.project.encode('utf-8'))
- f.write('# Version: %s\n' % self.config.version.encode('utf-8'))
- f.write('# The remainder of this file is compressed using zlib.\n')
+ f.write((u'# Sphinx inventory version 2\n'
+ u'# Project: %s\n'
+ u'# Version: %s\n'
+ u'# The remainder of this file is compressed using zlib.\n'
+ % (self.config.project, self.config.version)
+ ).encode('utf-8'))
compressor = zlib.compressobj(9)
for domainname, domain in self.env.domains.iteritems():
for name, dispname, type, docname, anchor, prio in \
@@ -742,11 +771,9 @@ class StandaloneHTMLBuilder(Builder):
if dispname == name:
dispname = u'-'
f.write(compressor.compress(
- '%s %s:%s %s %s %s\n' % (name.encode('utf-8'),
- domainname.encode('utf-8'),
- type.encode('utf-8'), prio,
- uri.encode('utf-8'),
- dispname.encode('utf-8'))))
+ (u'%s %s:%s %s %s %s\n' % (name, domainname, type,
+ prio, uri, dispname)
+ ).encode('utf-8')))
f.write(compressor.flush())
finally:
f.close()
@@ -758,7 +785,10 @@ class StandaloneHTMLBuilder(Builder):
searchindexfn = path.join(self.outdir, self.searchindex_filename)
# first write to a temporary file, so that if dumping fails,
# the existing index won't be overwritten
- f = open(searchindexfn + '.tmp', 'wb')
+ if self.indexer_dumps_unicode:
+ f = codecs.open(searchindexfn + '.tmp', 'w', encoding='utf-8')
+ else:
+ f = open(searchindexfn + '.tmp', 'wb')
try:
self.indexer.dump(f, self.indexer_format)
finally:
@@ -847,8 +877,14 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder):
def get_doc_context(self, docname, body, metatags):
# no relation links...
toc = self.env.get_toctree_for(self.config.master_doc, self, False)
- self.fix_refuris(toc)
- toc = self.render_partial(toc)['fragment']
+ # if there is no toctree, toc is None
+ if toc:
+ self.fix_refuris(toc)
+ toc = self.render_partial(toc)['fragment']
+ display_toc = True
+ else:
+ toc = ''
+ display_toc = False
return dict(
parents = [],
prev = None,
@@ -861,7 +897,7 @@ class SingleFileHTMLBuilder(StandaloneHTMLBuilder):
rellinks = [],
sourcename = '',
toc = toc,
- display_toc = True,
+ display_toc = display_toc,
)
def write(self, *ignored):
@@ -909,6 +945,9 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder):
#: implements a `dump`, `load`, `dumps` and `loads` functions
#: (pickle, simplejson etc.)
implementation = None
+ implementation_dumps_unicode = False
+ #: additional arguments for dump()
+ additional_dump_args = ()
#: the filename for the global context file
globalcontext_filename = None
@@ -931,6 +970,16 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder):
return docname[:-5] # up to sep
return docname + SEP
+ def dump_context(self, context, filename):
+ if self.implementation_dumps_unicode:
+ f = codecs.open(filename, 'w', encoding='utf-8')
+ else:
+ f = open(filename, 'wb')
+ try:
+ self.implementation.dump(context, f, *self.additional_dump_args)
+ finally:
+ f.close()
+
def handle_page(self, pagename, ctx, templatename='page.html',
outfilename=None, event_arg=None):
ctx['current_page_name'] = pagename
@@ -944,11 +993,7 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder):
ctx, event_arg)
ensuredir(path.dirname(outfilename))
- f = open(outfilename, 'wb')
- try:
- self.implementation.dump(ctx, f, 2)
- finally:
- f.close()
+ self.dump_context(ctx, outfilename)
# if there is a source file, copy the source file for the
# "show source" link
@@ -961,11 +1006,7 @@ class SerializingHTMLBuilder(StandaloneHTMLBuilder):
def handle_finish(self):
# dump the global context
outfilename = path.join(self.outdir, self.globalcontext_filename)
- f = open(outfilename, 'wb')
- try:
- self.implementation.dump(self.globalcontext, f, 2)
- finally:
- f.close()
+ self.dump_context(self.globalcontext, outfilename)
# super here to dump the search index
StandaloneHTMLBuilder.handle_finish(self)
@@ -985,7 +1026,10 @@ class PickleHTMLBuilder(SerializingHTMLBuilder):
A Builder that dumps the generated HTML into pickle files.
"""
implementation = pickle
+ implementation_dumps_unicode = False
+ additional_dump_args = (pickle.HIGHEST_PROTOCOL,)
indexer_format = pickle
+ indexer_dumps_unicode = False
name = 'pickle'
out_suffix = '.fpickle'
globalcontext_filename = 'globalcontext.pickle'
@@ -1000,7 +1044,9 @@ class JSONHTMLBuilder(SerializingHTMLBuilder):
A builder that dumps the generated HTML into JSON files.
"""
implementation = jsonimpl
+ implementation_dumps_unicode = True
indexer_format = jsonimpl
+ indexer_dumps_unicode = True
name = 'json'
out_suffix = '.fjson'
globalcontext_filename = 'globalcontext.json'
diff --git a/sphinx/builders/htmlhelp.py b/sphinx/builders/htmlhelp.py
index 538f4c848..9227a6e62 100644
--- a/sphinx/builders/htmlhelp.py
+++ b/sphinx/builders/htmlhelp.py
@@ -6,7 +6,7 @@
Build HTML help support files.
Parts adapted from Python's Doc/tools/prechm.py.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -200,7 +200,7 @@ class HTMLHelpBuilder(StandaloneHTMLBuilder):
outdir += os.sep
olen = len(outdir)
for root, dirs, files in os.walk(outdir):
- staticdir = (root == path.join(outdir, '_static'))
+ staticdir = root.startswith(path.join(outdir, '_static'))
for fn in files:
if (staticdir and not fn.endswith('.js')) or \
fn.endswith('.html'):
@@ -258,7 +258,8 @@ class HTMLHelpBuilder(StandaloneHTMLBuilder):
def write_index(title, refs, subitems):
def write_param(name, value):
item = ' \n' % (name, value)
- f.write(item.encode('ascii', 'xmlcharrefreplace'))
+ f.write(item.encode(self.encoding, 'xmlcharrefreplace')
+ .decode(self.encoding))
title = cgi.escape(title)
f.write(' \n')
write_param('Keyword', title)
diff --git a/sphinx/builders/latex.py b/sphinx/builders/latex.py
index b2a3c4e74..3369338c2 100644
--- a/sphinx/builders/latex.py
+++ b/sphinx/builders/latex.py
@@ -5,7 +5,7 @@
LaTeX builder.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -46,10 +46,6 @@ class LaTeXBuilder(Builder):
return 'all documents' # for now
def get_target_uri(self, docname, typ=None):
- if typ == 'token':
- # token references are always inside production lists and must be
- # replaced by \token{} in LaTeX
- return '@token'
if docname not in self.docnames:
raise NoUri
else:
diff --git a/sphinx/builders/linkcheck.py b/sphinx/builders/linkcheck.py
index 4a0bab633..ad15b55de 100644
--- a/sphinx/builders/linkcheck.py
+++ b/sphinx/builders/linkcheck.py
@@ -5,13 +5,17 @@
The CheckExternalLinksBuilder class.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
+import re
+import sys
+import Queue
import socket
+import threading
from os import path
-from urllib2 import build_opener, HTTPError
+from urllib2 import build_opener, Request
from docutils import nodes
@@ -23,6 +27,12 @@ opener = build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
+class HeadRequest(Request):
+ """Subclass of urllib2.Request that sends a HEAD request."""
+ def get_method(self):
+ return 'HEAD'
+
+
class CheckExternalLinksBuilder(Builder):
"""
Checks for broken external links.
@@ -30,6 +40,7 @@ class CheckExternalLinksBuilder(Builder):
name = 'linkcheck'
def init(self):
+ self.to_ignore = map(re.compile, self.app.config.linkcheck_ignore)
self.good = set()
self.broken = {}
self.redirected = {}
@@ -38,6 +49,83 @@ class CheckExternalLinksBuilder(Builder):
# create output file
open(path.join(self.outdir, 'output.txt'), 'w').close()
+ # create queues and worker threads
+ self.wqueue = Queue.Queue()
+ self.rqueue = Queue.Queue()
+ self.workers = []
+ for i in range(self.app.config.linkcheck_workers):
+ thread = threading.Thread(target=self.check_thread)
+ thread.setDaemon(True)
+ thread.start()
+ self.workers.append(thread)
+
+ def check_thread(self):
+ kwargs = {}
+ if sys.version_info > (2, 5) and self.app.config.linkcheck_timeout:
+ kwargs['timeout'] = self.app.config.linkcheck_timeout
+
+ def check():
+ # check for various conditions without bothering the network
+ if len(uri) == 0 or uri[0:7] == 'mailto:' or uri[0:4] == 'ftp:':
+ return 'unchecked', ''
+ elif not (uri[0:5] == 'http:' or uri[0:6] == 'https:'):
+ return 'local', ''
+ elif uri in self.good:
+ return 'working', ''
+ elif uri in self.broken:
+ return 'broken', self.broken[uri]
+ elif uri in self.redirected:
+ return 'redirected', self.redirected[uri]
+ for rex in self.to_ignore:
+ if rex.match(uri):
+ return 'ignored', ''
+
+ # need to actually check the URI
+ try:
+ f = opener.open(HeadRequest(uri), **kwargs)
+ f.close()
+ except Exception, err:
+ self.broken[uri] = str(err)
+ return 'broken', str(err)
+ if f.url.rstrip('/') == uri.rstrip('/'):
+ self.good.add(uri)
+ return 'working', 'new'
+ else:
+ self.redirected[uri] = f.url
+ return 'redirected', f.url
+
+ while True:
+ uri, docname, lineno = self.wqueue.get()
+ if uri is None:
+ break
+ status, info = check()
+ self.rqueue.put((uri, docname, lineno, status, info))
+
+ def process_result(self, result):
+ uri, docname, lineno, status, info = result
+ if status == 'unchecked':
+ return
+ if status == 'working' and info != 'new':
+ return
+ if lineno:
+ self.info('(line %3d) ' % lineno, nonl=1)
+ if status == 'ignored':
+ self.info(uri + ' - ' + darkgray('ignored'))
+ elif status == 'local':
+ self.info(uri + ' - ' + darkgray('local'))
+ self.write_entry('local', docname, lineno, uri)
+ elif status == 'working':
+ self.info(uri + ' - ' + darkgreen('working'))
+ elif status == 'broken':
+ self.info(uri + ' - ' + red('broken: ') + info)
+ self.write_entry('broken', docname, lineno, uri + ': ' + info)
+ if self.app.quiet:
+ self.warn('broken link: %s' % uri,
+ '%s:%s' % (self.env.doc2path(docname), lineno))
+ elif status == 'redirected':
+ self.info(uri + ' - ' + purple('redirected') + ' to ' + info)
+ self.write_entry('redirected', docname, lineno, uri + ' to ' + info)
+
def get_target_uri(self, docname, typ=None):
return ''
@@ -49,61 +137,25 @@ class CheckExternalLinksBuilder(Builder):
def write_doc(self, docname, doctree):
self.info()
+ n = 0
for node in doctree.traverse(nodes.reference):
- try:
- self.check(node, docname)
- except KeyError:
+ if 'refuri' not in node:
continue
-
- def check(self, node, docname):
- uri = node['refuri']
-
- if '#' in uri:
- uri = uri.split('#')[0]
-
- if uri in self.good:
- return
-
- lineno = None
- while lineno is None:
- node = node.parent
- if node is None:
- break
- lineno = node.line
-
- if len(uri) == 0 or uri[0:7] == 'mailto:' or uri[0:4] == 'ftp:':
- return
-
- if lineno:
- self.info('(line %3d) ' % lineno, nonl=1)
- if uri[0:5] == 'http:' or uri[0:6] == 'https:':
- self.info(uri, nonl=1)
-
- if uri in self.broken:
- (r, s) = self.broken[uri]
- elif uri in self.redirected:
- (r, s) = self.redirected[uri]
- else:
- (r, s) = self.resolve(uri)
-
- if r == 0:
- self.info(' - ' + darkgreen('working'))
- self.good.add(uri)
- elif r == 2:
- self.info(' - ' + red('broken: ') + s)
- self.write_entry('broken', docname, lineno, uri + ': ' + s)
- self.broken[uri] = (r, s)
- if self.app.quiet:
- self.warn('broken link: %s' % uri,
- '%s:%s' % (self.env.doc2path(docname), lineno))
- else:
- self.info(' - ' + purple('redirected') + ' to ' + s)
- self.write_entry('redirected', docname,
- lineno, uri + ' to ' + s)
- self.redirected[uri] = (r, s)
- else:
- self.info(uri + ' - ' + darkgray('local'))
- self.write_entry('local', docname, lineno, uri)
+ uri = node['refuri']
+ if '#' in uri:
+ uri = uri.split('#')[0]
+ lineno = None
+ while lineno is None:
+ node = node.parent
+ if node is None:
+ break
+ lineno = node.line
+ self.wqueue.put((uri, docname, lineno), False)
+ n += 1
+ done = 0
+ while done < n:
+ self.process_result(self.rqueue.get())
+ done += 1
if self.broken:
self.app.statuscode = 1
@@ -114,21 +166,6 @@ class CheckExternalLinksBuilder(Builder):
line, what, uri))
output.close()
- def resolve(self, uri):
- try:
- f = opener.open(uri)
- f.close()
- except HTTPError, err:
- #if err.code == 403 and uri.startswith('http://en.wikipedia.org/'):
- # # Wikipedia blocks requests from urllib User-Agent
- # return (0, 0)
- return (2, str(err))
- except Exception, err:
- return (2, str(err))
- if f.url.rstrip('/') == uri.rstrip('/'):
- return (0, 0)
- else:
- return (1, f.url)
-
def finish(self):
- return
+ for worker in self.workers:
+ self.wqueue.put((None, None, None), False)
diff --git a/sphinx/builders/manpage.py b/sphinx/builders/manpage.py
index 756e4732f..93b56a01c 100644
--- a/sphinx/builders/manpage.py
+++ b/sphinx/builders/manpage.py
@@ -5,7 +5,7 @@
Manual pages builder.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
diff --git a/sphinx/builders/qthelp.py b/sphinx/builders/qthelp.py
index ffc52334c..5598aad2c 100644
--- a/sphinx/builders/qthelp.py
+++ b/sphinx/builders/qthelp.py
@@ -5,7 +5,7 @@
Build input files for the Qt collection generator.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -23,7 +23,7 @@ from sphinx.builders.html import StandaloneHTMLBuilder
_idpattern = re.compile(
- r'(?P.+) (\((?P[\w\.]+)( (?P\w+))?\))$')
+ r'(?P.+) (\((class in )?(?P[\w\.]+)( (?P\w+))?\))$')
# Qt Help Collection Project (.qhcp).
@@ -130,12 +130,20 @@ class QtHelpBuilder(StandaloneHTMLBuilder):
for indexname, indexcls, content, collapse in self.domain_indices:
item = section_template % {'title': indexcls.localname,
'ref': '%s.html' % indexname}
- sections.append(' '*4*4 + item)
- sections = '\n'.join(sections)
+ sections.append((' ' * 4 * 4 + item).encode('utf-8'))
+ # sections may be unicode strings or byte strings, we have to make sure
+ # they are all byte strings before joining them
+ new_sections = []
+ for section in sections:
+ if isinstance(section, unicode):
+ new_sections.append(section.encode('utf-8'))
+ else:
+ new_sections.append(section)
+ sections = u'\n'.encode('utf-8').join(new_sections)
# keywords
keywords = []
- index = self.env.create_index(self)
+ index = self.env.create_index(self, group_entries=False)
for (key, group) in index:
for title, (refs, subitems) in group:
keywords.extend(self.build_keywords(title, refs, subitems))
@@ -165,6 +173,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder):
nspace = 'org.sphinx.%s.%s' % (outname, self.config.version)
nspace = re.sub('[^a-zA-Z0-9.]', '', nspace)
nspace = re.sub(r'\.+', '.', nspace).strip('.')
+ nspace = nspace.lower()
# write the project file
f = codecs.open(path.join(outdir, outname+'.qhp'), 'w', 'utf-8')
@@ -230,7 +239,7 @@ class QtHelpBuilder(StandaloneHTMLBuilder):
link = node['refuri']
title = escape(node.astext()).replace('"','"')
item = section_template % {'title': title, 'ref': link}
- item = ' '*4*indentlevel + item.encode('ascii', 'xmlcharrefreplace')
+ item = u' ' * 4 * indentlevel + item
parts.append(item.encode('ascii', 'xmlcharrefreplace'))
elif isinstance(node, nodes.bullet_list):
for subnode in node:
diff --git a/sphinx/builders/texinfo.py b/sphinx/builders/texinfo.py
new file mode 100644
index 000000000..52e32362a
--- /dev/null
+++ b/sphinx/builders/texinfo.py
@@ -0,0 +1,239 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.builders.texinfo
+ ~~~~~~~~~~~~~~~~~~~~~~~
+
+ Texinfo builder.
+
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from os import path
+
+from docutils import nodes
+from docutils.io import FileOutput
+from docutils.utils import new_document
+from docutils.frontend import OptionParser
+
+from sphinx import addnodes
+from sphinx.locale import _
+from sphinx.builders import Builder
+from sphinx.environment import NoUri
+from sphinx.util.nodes import inline_all_toctrees
+from sphinx.util.osutil import SEP, copyfile
+from sphinx.util.console import bold, darkgreen
+from sphinx.writers.texinfo import TexinfoWriter
+
+
+TEXINFO_MAKEFILE = '''\
+# Makefile for Sphinx Texinfo output
+
+infodir ?= /usr/share/info
+
+MAKEINFO = makeinfo --no-split
+MAKEINFO_html = makeinfo --no-split --html
+MAKEINFO_plaintext = makeinfo --no-split --plaintext
+TEXI2PDF = texi2pdf --batch --expand
+INSTALL_INFO = install-info
+
+ALLDOCS = $(basename $(wildcard *.texi))
+
+all: info
+info: $(addsuffix .info,$(ALLDOCS))
+plaintext: $(addsuffix .txt,$(ALLDOCS))
+html: $(addsuffix .html,$(ALLDOCS))
+pdf: $(addsuffix .pdf,$(ALLDOCS))
+
+install-info: info
+\tfor f in *.info; do \\
+\t cp -t $(infodir) "$$f" && \\
+\t $(INSTALL_INFO) --info-dir=$(infodir) "$$f" ; \\
+\tdone
+
+uninstall-info: info
+\tfor f in *.info; do \\
+\t rm -f "$(infodir)/$$f" ; \\
+\t $(INSTALL_INFO) --delete --info-dir=$(infodir) "$$f" ; \\
+\tdone
+
+%.info: %.texi
+\t$(MAKEINFO) -o '$@' '$<'
+
+%.txt: %.texi
+\t$(MAKEINFO_plaintext) -o '$@' '$<'
+
+%.html: %.texi
+\t$(MAKEINFO_html) -o '$@' '$<'
+
+%.pdf: %.texi
+\t-$(TEXI2PDF) '$<'
+\t-$(TEXI2PDF) '$<'
+\t-$(TEXI2PDF) '$<'
+
+clean:
+\t-rm -f *.info *.pdf *.txt *.html
+\t-rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ky *.pg
+\t-rm -f *.vr *.tp *.fn *.fns *.def *.defs *.cp *.cps *.ge *.ges *.mo
+
+.PHONY: all info plaintext html pdf install-info uninstall-info clean
+'''
+
+
+class TexinfoBuilder(Builder):
+ """
+ Builds Texinfo output to create Info documentation.
+ """
+ name = 'texinfo'
+ format = 'texinfo'
+ supported_image_types = ['application/pdf', 'image/png',
+ 'image/gif', 'image/jpeg']
+
+ def init(self):
+ self.docnames = []
+ self.document_data = []
+
+ def get_outdated_docs(self):
+ return 'all documents' # for now
+
+ def get_target_uri(self, docname, typ=None):
+ if docname not in self.docnames:
+ raise NoUri
+ else:
+ return '%' + docname
+
+ def get_relative_uri(self, from_, to, typ=None):
+ # ignore source path
+ return self.get_target_uri(to, typ)
+
+ def init_document_data(self):
+ preliminary_document_data = map(list, self.config.texinfo_documents)
+ if not preliminary_document_data:
+ self.warn('no "texinfo_documents" config value found; no documents '
+ 'will be written')
+ return
+ # assign subdirs to titles
+ self.titles = []
+ for entry in preliminary_document_data:
+ docname = entry[0]
+ if docname not in self.env.all_docs:
+ self.warn('"texinfo_documents" config value references unknown '
+ 'document %s' % docname)
+ continue
+ self.document_data.append(entry)
+ if docname.endswith(SEP+'index'):
+ docname = docname[:-5]
+ self.titles.append((docname, entry[2]))
+
+ def write(self, *ignored):
+ self.init_document_data()
+ for entry in self.document_data:
+ docname, targetname, title, author = entry[:4]
+ targetname += '.texi'
+ direntry = description = category = ''
+ if len(entry) > 6:
+ direntry, description, category = entry[4:7]
+ toctree_only = False
+ if len(entry) > 7:
+ toctree_only = entry[7]
+ destination = FileOutput(
+ destination_path=path.join(self.outdir, targetname),
+ encoding='utf-8')
+ self.info("processing " + targetname + "... ", nonl=1)
+ doctree = self.assemble_doctree(docname, toctree_only,
+ appendices=(self.config.texinfo_appendices or []))
+ self.info("writing... ", nonl=1)
+
+ # Add an Index section
+ if self.config.texinfo_domain_indices:
+ doctree.append(
+ nodes.section('',
+ nodes.title(_("Index"),
+ nodes.Text(_('Index'),
+ _('Index'))),
+ nodes.raw('@printindex ge\n',
+ nodes.Text('@printindex ge\n',
+ '@printindex ge\n'),
+ format="texinfo")))
+ self.post_process_images(doctree)
+ docwriter = TexinfoWriter(self)
+ settings = OptionParser(
+ defaults=self.env.settings,
+ components=(docwriter,)).get_default_values()
+ settings.author = author
+ settings.title = title
+ settings.texinfo_filename = targetname[:-5] + '.info'
+ settings.texinfo_elements = self.config.texinfo_elements
+ settings.texinfo_dir_entry = direntry or ''
+ settings.texinfo_dir_category = category or ''
+ settings.texinfo_dir_description = description or ''
+ settings.docname = docname
+ doctree.settings = settings
+ docwriter.write(doctree, destination)
+ self.info("done")
+
+ def assemble_doctree(self, indexfile, toctree_only, appendices):
+ self.docnames = set([indexfile] + appendices)
+ self.info(darkgreen(indexfile) + " ", nonl=1)
+ tree = self.env.get_doctree(indexfile)
+ tree['docname'] = indexfile
+ if toctree_only:
+ # extract toctree nodes from the tree and put them in a
+ # fresh document
+ new_tree = new_document('')
+ new_sect = nodes.section()
+ new_sect += nodes.title(u'',
+ u'')
+ new_tree += new_sect
+ for node in tree.traverse(addnodes.toctree):
+ new_sect += node
+ tree = new_tree
+ largetree = inline_all_toctrees(self, self.docnames, indexfile, tree,
+ darkgreen)
+ largetree['docname'] = indexfile
+ for docname in appendices:
+ appendix = self.env.get_doctree(docname)
+ appendix['docname'] = docname
+ largetree.append(appendix)
+ self.info()
+ self.info("resolving references...")
+ self.env.resolve_references(largetree, indexfile, self)
+ # TODO: add support for external :ref:s
+ for pendingnode in largetree.traverse(addnodes.pending_xref):
+ docname = pendingnode['refdocname']
+ sectname = pendingnode['refsectname']
+ newnodes = [nodes.emphasis(sectname, sectname)]
+ for subdir, title in self.titles:
+ if docname.startswith(subdir):
+ newnodes.append(nodes.Text(_(' (in '), _(' (in ')))
+ newnodes.append(nodes.emphasis(title, title))
+ newnodes.append(nodes.Text(')', ')'))
+ break
+ else:
+ pass
+ pendingnode.replace_self(newnodes)
+ return largetree
+
+ def finish(self):
+ # copy image files
+ if self.images:
+ self.info(bold('copying images...'), nonl=1)
+ for src, dest in self.images.iteritems():
+ self.info(' '+src, nonl=1)
+ copyfile(path.join(self.srcdir, src),
+ path.join(self.outdir, dest))
+ self.info()
+
+ self.info(bold('copying Texinfo support files... '), nonl=True)
+ # copy Makefile
+ fn = path.join(self.outdir, 'Makefile')
+ self.info(fn, nonl=1)
+ try:
+ mkfile = open(fn, 'w')
+ try:
+ mkfile.write(TEXINFO_MAKEFILE)
+ finally:
+ mkfile.close()
+ except (IOError, OSError), err:
+ self.warn("error writing file %s: %s" % (fn, err))
+ self.info(' done')
diff --git a/sphinx/builders/text.py b/sphinx/builders/text.py
index 092a1d97a..40fd3d791 100644
--- a/sphinx/builders/text.py
+++ b/sphinx/builders/text.py
@@ -5,7 +5,7 @@
Plain-text Sphinx builder.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
diff --git a/sphinx/builders/websupport.py b/sphinx/builders/websupport.py
new file mode 100644
index 000000000..b77573095
--- /dev/null
+++ b/sphinx/builders/websupport.py
@@ -0,0 +1,155 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.builders.websupport
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ Builder for the web support package.
+
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from os import path
+import posixpath
+import shutil
+
+from docutils.io import StringOutput
+
+from sphinx.jinja2glue import BuiltinTemplateLoader
+from sphinx.util.osutil import os_path, relative_uri, ensuredir, copyfile
+from sphinx.builders.html import PickleHTMLBuilder
+from sphinx.writers.websupport import WebSupportTranslator
+
+
+class WebSupportBuilder(PickleHTMLBuilder):
+ """
+ Builds documents for the web support package.
+ """
+ name = 'websupport'
+ versioning_method = 'commentable'
+
+ def init(self):
+ PickleHTMLBuilder.init(self)
+ # templates are needed for this builder, but the serializing
+ # builder does not initialize them
+ self.init_templates()
+ if not isinstance(self.templates, BuiltinTemplateLoader):
+ raise RuntimeError('websupport builder must be used with '
+ 'the builtin templates')
+ # add our custom JS
+ self.script_files.append('_static/websupport.js')
+
+ def set_webinfo(self, staticdir, virtual_staticdir, search, storage):
+ self.staticdir = staticdir
+ self.virtual_staticdir = virtual_staticdir
+ self.search = search
+ self.storage = storage
+
+ def init_translator_class(self):
+ self.translator_class = WebSupportTranslator
+
+ def prepare_writing(self, docnames):
+ PickleHTMLBuilder.prepare_writing(self, docnames)
+ self.globalcontext['no_search_suffix'] = True
+
+ def write_doc(self, docname, doctree):
+ destination = StringOutput(encoding='utf-8')
+ doctree.settings = self.docsettings
+
+ self.cur_docname = docname
+ self.secnumbers = self.env.toc_secnumbers.get(docname, {})
+ self.imgpath = '/' + posixpath.join(self.virtual_staticdir, '_images')
+ self.post_process_images(doctree)
+ self.dlpath = '/' + posixpath.join(self.virtual_staticdir, '_downloads')
+ self.docwriter.write(doctree, destination)
+ self.docwriter.assemble_parts()
+ body = self.docwriter.parts['fragment']
+ metatags = self.docwriter.clean_meta
+
+ ctx = self.get_doc_context(docname, body, metatags)
+ self.index_page(docname, doctree, ctx.get('title', ''))
+ self.handle_page(docname, ctx, event_arg=doctree)
+
+ def load_indexer(self, docnames):
+ self.indexer = self.search
+ self.indexer.init_indexing(changed=docnames)
+
+ def _render_page(self, pagename, addctx, templatename, event_arg=None):
+ # This is mostly copied from StandaloneHTMLBuilder. However, instead
+ # of rendering the template and saving the html, create a context
+ # dict and pickle it.
+ ctx = self.globalcontext.copy()
+ ctx['pagename'] = pagename
+
+ def pathto(otheruri, resource=False,
+ baseuri=self.get_target_uri(pagename)):
+ if resource and '://' in otheruri:
+ return otheruri
+ elif not resource:
+ otheruri = self.get_target_uri(otheruri)
+ return relative_uri(baseuri, otheruri) or '#'
+ else:
+ return '/' + posixpath.join(self.virtual_staticdir, otheruri)
+ ctx['pathto'] = pathto
+ ctx['hasdoc'] = lambda name: name in self.env.all_docs
+ ctx['encoding'] = self.config.html_output_encoding
+ ctx['toctree'] = lambda **kw: self._get_local_toctree(pagename, **kw)
+ self.add_sidebars(pagename, ctx)
+ ctx.update(addctx)
+
+ self.app.emit('html-page-context', pagename, templatename,
+ ctx, event_arg)
+
+ # create a dict that will be pickled and used by webapps
+ doc_ctx = {
+ 'body': ctx.get('body', ''),
+ 'title': ctx.get('title', ''),
+ }
+ # partially render the html template to get at interesting macros
+ template = self.templates.environment.get_template(templatename)
+ template_module = template.make_module(ctx)
+ for item in ['sidebar', 'relbar', 'script', 'css']:
+ if hasattr(template_module, item):
+ doc_ctx[item] = getattr(template_module, item)()
+
+ return ctx, doc_ctx
+
+ def handle_page(self, pagename, addctx, templatename='page.html',
+ outfilename=None, event_arg=None):
+ ctx, doc_ctx = self._render_page(pagename, addctx,
+ templatename, event_arg)
+
+ if not outfilename:
+ outfilename = path.join(self.outdir, 'pickles',
+ os_path(pagename) + self.out_suffix)
+ ensuredir(path.dirname(outfilename))
+ self.dump_context(doc_ctx, outfilename)
+
+ # if there is a source file, copy the source file for the
+ # "show source" link
+ if ctx.get('sourcename'):
+ source_name = path.join(self.staticdir,
+ '_sources', os_path(ctx['sourcename']))
+ ensuredir(path.dirname(source_name))
+ copyfile(self.env.doc2path(pagename), source_name)
+
+ def handle_finish(self):
+ # get global values for css and script files
+ _, doc_ctx = self._render_page('tmp', {}, 'page.html')
+ self.globalcontext['css'] = doc_ctx['css']
+ self.globalcontext['script'] = doc_ctx['script']
+
+ PickleHTMLBuilder.handle_finish(self)
+
+ # move static stuff over to separate directory
+ directories = ['_images', '_static']
+ for directory in directories:
+ src = path.join(self.outdir, directory)
+ dst = path.join(self.staticdir, directory)
+ if path.isdir(src):
+ if path.isdir(dst):
+ shutil.rmtree(dst)
+ shutil.move(src, dst)
+
+ def dump_search_index(self):
+ self.indexer.finish_indexing()
diff --git a/sphinx/cmdline.py b/sphinx/cmdline.py
index e3e944656..af780167a 100644
--- a/sphinx/cmdline.py
+++ b/sphinx/cmdline.py
@@ -5,7 +5,7 @@
sphinx-build command-line handling.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -90,6 +90,13 @@ def main(argv):
if err:
return 1
+ # likely encoding used for command-line arguments
+ try:
+ locale = __import__('locale') # due to submodule of the same name
+ likely_encoding = locale.getpreferredencoding()
+ except Exception:
+ likely_encoding = None
+
buildername = None
force_all = freshenv = warningiserror = use_pdb = False
status = sys.stdout
@@ -129,7 +136,11 @@ def main(argv):
try:
val = int(val)
except ValueError:
- pass
+ if likely_encoding:
+ try:
+ val = val.decode(likely_encoding)
+ except UnicodeError:
+ pass
confoverrides[key] = val
elif opt == '-A':
try:
@@ -141,7 +152,11 @@ def main(argv):
try:
val = int(val)
except ValueError:
- pass
+ if likely_encoding:
+ try:
+ val = val.decode(likely_encoding)
+ except UnicodeError:
+ pass
confoverrides['html_context.%s' % key] = val
elif opt == '-n':
confoverrides['nitpicky'] = True
diff --git a/sphinx/config.py b/sphinx/config.py
index 93250f9b0..d4aacb225 100644
--- a/sphinx/config.py
+++ b/sphinx/config.py
@@ -5,22 +5,29 @@
Build configuration file handling.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import os
import re
+import sys
from os import path
from sphinx.errors import ConfigError
from sphinx.util.osutil import make_filename
+from sphinx.util.pycompat import bytes, b, convert_with_2to3
-nonascii_re = re.compile(r'[\x80-\xff]')
+nonascii_re = re.compile(b(r'[\x80-\xff]'))
+CONFIG_SYNTAX_ERROR = "There is a syntax error in your configuration file: %s"
+if sys.version_info >= (3, 0):
+ CONFIG_SYNTAX_ERROR += "\nDid you change the syntax from 2.x to 3.x?"
class Config(object):
- """Configuration file abstraction."""
+ """
+ Configuration file abstraction.
+ """
# the values are: (default, what needs to be rebuilt if changed)
@@ -64,12 +71,13 @@ class Config(object):
primary_domain = ('py', 'env'),
needs_sphinx = (None, None),
nitpicky = (False, 'env'),
+ nitpick_ignore = ([], 'env'),
# HTML options
html_theme = ('default', 'html'),
html_theme_path = ([], 'html'),
html_theme_options = ({}, 'html'),
- html_title = (lambda self: '%s v%s documentation' %
+ html_title = (lambda self: '%s %s documentation' %
(self.project, self.release),
'html'),
html_short_title = (lambda self: self.html_title, 'html'),
@@ -85,7 +93,7 @@ class Config(object):
html_additional_pages = ({}, 'html'),
html_use_modindex = (True, 'html'), # deprecated
html_domain_indices = (True, 'html'),
- html_add_permalinks = (True, 'html'),
+ html_add_permalinks = (u'\u00B6', 'html'),
html_use_index = (True, 'html'),
html_split_index = (False, 'html'),
html_copy_source = (True, 'html'),
@@ -99,6 +107,8 @@ class Config(object):
html_output_encoding = ('utf-8', 'html'),
html_compact_lists = (True, 'html'),
html_secnumber_suffix = ('. ', 'html'),
+ html_search_language = (None, 'html'),
+ html_search_options = ({}, 'html'),
# HTML help only options
htmlhelp_basename = (lambda self: make_filename(self.project), None),
@@ -136,7 +146,7 @@ class Config(object):
latex_use_parts = (False, None),
latex_use_modindex = (True, None), # deprecated
latex_domain_indices = (True, None),
- latex_show_urls = (False, None),
+ latex_show_urls = ('no', None),
latex_show_pagerefs = (False, None),
# paper_size and font_size are still separate values
# so that you can give them easily on the command line
@@ -149,11 +159,23 @@ class Config(object):
latex_preamble = ('', None),
# text options
- text_sectionchars = ('*=-~"+`', 'text'),
- text_windows_newlines = (False, 'text'),
+ text_sectionchars = ('*=-~"+`', 'env'),
+ text_newlines = ('unix', 'env'),
# manpage options
man_pages = ([], None),
+ man_show_urls = (False, None),
+
+ # Texinfo options
+ texinfo_documents = ([], None),
+ texinfo_appendices = ([], None),
+ texinfo_elements = ({}, None),
+ texinfo_domain_indices = (True, None),
+
+ # linkcheck options
+ linkcheck_ignore = ([], None),
+ linkcheck_timeout = (None, None),
+ linkcheck_workers = (5, None),
)
def __init__(self, dirname, filename, overrides, tags):
@@ -166,12 +188,30 @@ class Config(object):
config['tags'] = tags
olddir = os.getcwd()
try:
+ # we promise to have the config dir as current dir while the
+ # config file is executed
+ os.chdir(dirname)
+ # get config source
+ f = open(config_file, 'rb')
try:
- os.chdir(dirname)
- execfile(config['__file__'], config)
+ source = f.read()
+ finally:
+ f.close()
+ try:
+ # compile to a code object, handle syntax errors
+ try:
+ code = compile(source, config_file, 'exec')
+ except SyntaxError:
+ if convert_with_2to3:
+ # maybe the file uses 2.x syntax; try to refactor to
+ # 3.x syntax using 2to3
+ source = convert_with_2to3(config_file)
+ code = compile(source, config_file, 'exec')
+ else:
+ raise
+ exec code in config
except SyntaxError, err:
- raise ConfigError('There is a syntax error in your '
- 'configuration file: ' + str(err))
+ raise ConfigError(CONFIG_SYNTAX_ERROR % err)
finally:
os.chdir(olddir)
@@ -185,10 +225,11 @@ class Config(object):
# check all string values for non-ASCII characters in bytestrings,
# since that can result in UnicodeErrors all over the place
for name, value in self._raw_config.iteritems():
- if isinstance(value, str) and nonascii_re.search(value):
+ if isinstance(value, bytes) and nonascii_re.search(value):
warn('the config value %r is set to a string with non-ASCII '
'characters; this can lead to Unicode errors occurring. '
- 'Please use Unicode strings, e.g. u"Content".' % name)
+ 'Please use Unicode strings, e.g. %r.' % (name, u'Content')
+ )
def init_values(self):
config = self._raw_config
diff --git a/sphinx/directives/__init__.py b/sphinx/directives/__init__.py
index 6c03b8e5f..6e0300abc 100644
--- a/sphinx/directives/__init__.py
+++ b/sphinx/directives/__init__.py
@@ -5,7 +5,7 @@
Handlers for additional ReST directives.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -32,7 +32,8 @@ except AttributeError:
# RE to strip backslash escapes
-strip_backslash_re = re.compile(r'\\(?=[^\\])')
+nl_escape_re = re.compile(r'\\\n')
+strip_backslash_re = re.compile(r'\\(.)')
class ObjectDescription(Directive):
@@ -57,10 +58,12 @@ class ObjectDescription(Directive):
"""
Retrieve the signatures to document from the directive arguments. By
default, signatures are given as arguments, one per line.
+
+ Backslash-escaping of newlines is supported.
"""
+ lines = nl_escape_re.sub('', self.arguments[0]).split('\n')
# remove backslashes to support (dummy) escapes; helps Vim highlighting
- return [strip_backslash_re.sub('', sig.strip())
- for sig in self.arguments[0].split('\n')]
+ return [strip_backslash_re.sub(r'\1', line.strip()) for line in lines]
def handle_signature(self, sig, signode):
"""
@@ -159,7 +162,6 @@ class ObjectDescription(Directive):
self.env.temp_data['object'] = self.names[0]
self.before_content()
self.state.nested_parse(self.content, self.content_offset, contentnode)
- #self.handle_doc_fields(contentnode)
DocFieldTransformer(self).transform_all(contentnode)
self.env.temp_data['object'] = None
self.after_content()
diff --git a/sphinx/directives/code.py b/sphinx/directives/code.py
index 0647daf09..99fb3502a 100644
--- a/sphinx/directives/code.py
+++ b/sphinx/directives/code.py
@@ -3,14 +3,12 @@
sphinx.directives.code
~~~~~~~~~~~~~~~~~~~~~~
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
-import os
import sys
import codecs
-from os import path
from docutils import nodes
from docutils.parsers.rst import Directive, directives
@@ -64,6 +62,7 @@ class CodeBlock(Directive):
literal = nodes.literal_block(code, code)
literal['language'] = self.arguments[0]
literal['linenos'] = 'linenos' in self.options
+ literal.line = self.lineno
return [literal]
@@ -93,23 +92,11 @@ class LiteralInclude(Directive):
def run(self):
document = self.state.document
- filename = self.arguments[0]
if not document.settings.file_insertion_enabled:
return [document.reporter.warning('File insertion disabled',
line=self.lineno)]
env = document.settings.env
- if filename.startswith('/') or filename.startswith(os.sep):
- rel_fn = filename[1:]
- else:
- docdir = path.dirname(env.doc2path(env.docname, base=None))
- rel_fn = path.join(docdir, filename)
- try:
- fn = path.join(env.srcdir, rel_fn)
- except UnicodeDecodeError:
- # the source directory is a bytestring with non-ASCII characters;
- # let's try to encode the rel_fn in the file system encoding
- rel_fn = rel_fn.encode(sys.getfilesystemencoding())
- fn = path.join(env.srcdir, rel_fn)
+ rel_filename, filename = env.relfn2path(self.arguments[0])
if 'pyobject' in self.options and 'lines' in self.options:
return [document.reporter.warning(
@@ -119,7 +106,7 @@ class LiteralInclude(Directive):
encoding = self.options.get('encoding', env.config.source_encoding)
codec_info = codecs.lookup(encoding)
try:
- f = codecs.StreamReaderWriter(open(fn, 'U'),
+ f = codecs.StreamReaderWriter(open(filename, 'rb'),
codec_info[2], codec_info[3], 'strict')
lines = f.readlines()
f.close()
@@ -136,7 +123,7 @@ class LiteralInclude(Directive):
objectname = self.options.get('pyobject')
if objectname is not None:
from sphinx.pycode import ModuleAnalyzer
- analyzer = ModuleAnalyzer.for_file(fn, '')
+ analyzer = ModuleAnalyzer.for_file(filename, '')
tags = analyzer.find_tags()
if objectname not in tags:
return [document.reporter.warning(
@@ -178,13 +165,14 @@ class LiteralInclude(Directive):
text = ''.join(lines)
if self.options.get('tab-width'):
text = text.expandtabs(self.options['tab-width'])
- retnode = nodes.literal_block(text, text, source=fn)
+ retnode = nodes.literal_block(text, text, source=filename)
retnode.line = 1
+ retnode.attributes['line_number'] = self.lineno
if self.options.get('language', ''):
retnode['language'] = self.options['language']
if 'linenos' in self.options:
retnode['linenos'] = True
- document.settings.env.note_dependency(rel_fn)
+ env.note_dependency(rel_filename)
return [retnode]
diff --git a/sphinx/directives/other.py b/sphinx/directives/other.py
index 332c40849..246d64036 100644
--- a/sphinx/directives/other.py
+++ b/sphinx/directives/other.py
@@ -3,7 +3,7 @@
sphinx.directives.other
~~~~~~~~~~~~~~~~~~~~~~~
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -11,21 +11,28 @@ import os
from docutils import nodes
from docutils.parsers.rst import Directive, directives
+from docutils.parsers.rst.directives.misc import Class
+from docutils.parsers.rst.directives.misc import Include as BaseInclude
from sphinx import addnodes
-from sphinx.locale import pairindextypes, _
+from sphinx.locale import _
from sphinx.util import url_re, docname_join
-from sphinx.util.nodes import explicit_title_re
+from sphinx.util.nodes import explicit_title_re, process_index_entry
from sphinx.util.compat import make_admonition
from sphinx.util.matching import patfilter
+def int_or_nothing(argument):
+ if not argument:
+ return 999
+ return int(argument)
+
+
class TocTree(Directive):
"""
Directive to notify Sphinx about the hierarchical structure of the docs,
and to include a table-of-contents like tree in the current document.
"""
-
has_content = True
required_arguments = 0
optional_arguments = 0
@@ -34,7 +41,7 @@ class TocTree(Directive):
'maxdepth': int,
'glob': directives.flag,
'hidden': directives.flag,
- 'numbered': directives.flag,
+ 'numbered': int_or_nothing,
'titlesonly': directives.flag,
}
@@ -73,8 +80,9 @@ class TocTree(Directive):
entries.append((title, ref))
elif docname not in env.found_docs:
ret.append(self.state.document.reporter.warning(
- 'toctree references unknown document %r' % docname,
- line=self.lineno))
+ 'toctree contains reference to nonexisting '
+ 'document %r' % docname, line=self.lineno))
+ env.note_reread()
else:
entries.append((title, docname))
includefiles.append(docname)
@@ -98,7 +106,7 @@ class TocTree(Directive):
subnode['maxdepth'] = self.options.get('maxdepth', -1)
subnode['glob'] = glob
subnode['hidden'] = 'hidden' in self.options
- subnode['numbered'] = 'numbered' in self.options
+ subnode['numbered'] = self.options.get('numbered', 0)
subnode['titlesonly'] = 'titlesonly' in self.options
wrappernode = nodes.compound(classes=['toctree-wrapper'])
wrappernode.append(subnode)
@@ -111,7 +119,6 @@ class Author(Directive):
Directive to give the name of the author of the current document
or section. Shown in the output only if the show_authors option is on.
"""
-
has_content = False
required_arguments = 1
optional_arguments = 0
@@ -144,17 +151,12 @@ class Index(Directive):
"""
Directive to add entries to the index.
"""
-
has_content = False
required_arguments = 1
optional_arguments = 0
final_argument_whitespace = True
option_spec = {}
- indextypes = [
- 'single', 'pair', 'double', 'triple',
- ]
-
def run(self):
arguments = self.arguments[0].split('\n')
env = self.state.document.settings.env
@@ -163,29 +165,9 @@ class Index(Directive):
self.state.document.note_explicit_target(targetnode)
indexnode = addnodes.index()
indexnode['entries'] = ne = []
+ indexnode['inline'] = False
for entry in arguments:
- entry = entry.strip()
- for type in pairindextypes:
- if entry.startswith(type+':'):
- value = entry[len(type)+1:].strip()
- value = pairindextypes[type] + '; ' + value
- ne.append(('pair', value, targetid, value))
- break
- else:
- for type in self.indextypes:
- if entry.startswith(type+':'):
- value = entry[len(type)+1:].strip()
- if type == 'double':
- type = 'pair'
- ne.append((type, value, targetid, value))
- break
- # shorthand notation for single entries
- else:
- for value in entry.split(','):
- value = value.strip()
- if not value:
- continue
- ne.append(('single', value, targetid, value))
+ ne.extend(process_index_entry(entry, targetid))
return [indexnode, targetnode]
@@ -193,7 +175,6 @@ class VersionChange(Directive):
"""
Directive to describe a change/addition/deprecation in a specific version.
"""
-
has_content = True
required_arguments = 1
optional_arguments = 1
@@ -223,7 +204,6 @@ class SeeAlso(Directive):
"""
An admonition mentioning things to look at as reference.
"""
-
has_content = True
required_arguments = 0
optional_arguments = 1
@@ -249,7 +229,6 @@ class TabularColumns(Directive):
"""
Directive to give an explicit tabulary column definition to LaTeX.
"""
-
has_content = False
required_arguments = 1
optional_arguments = 0
@@ -259,6 +238,7 @@ class TabularColumns(Directive):
def run(self):
node = addnodes.tabular_col_spec()
node['spec'] = self.arguments[0]
+ node.line = self.lineno
return [node]
@@ -266,7 +246,6 @@ class Centered(Directive):
"""
Directive to create a centered line of bold text.
"""
-
has_content = False
required_arguments = 1
optional_arguments = 0
@@ -283,12 +262,10 @@ class Centered(Directive):
return [subnode] + messages
-
class Acks(Directive):
"""
Directive for a list of names.
"""
-
has_content = True
required_arguments = 0
optional_arguments = 0
@@ -310,7 +287,6 @@ class HList(Directive):
"""
Directive for a list that gets compacted horizontally.
"""
-
has_content = True
required_arguments = 0
optional_arguments = 0
@@ -347,7 +323,6 @@ class Only(Directive):
"""
Directive to only include text if the given tag(s) are enabled.
"""
-
has_content = True
required_arguments = 1
optional_arguments = 0
@@ -364,19 +339,16 @@ class Only(Directive):
return [node]
-from docutils.parsers.rst.directives.misc import Include as BaseInclude
-
class Include(BaseInclude):
"""
Like the standard "Include" directive, but interprets absolute paths
- correctly.
+ "correctly", i.e. relative to source directory.
"""
def run(self):
- if self.arguments[0].startswith('/') or \
- self.arguments[0].startswith(os.sep):
- env = self.state.document.settings.env
- self.arguments[0] = os.path.join(env.srcdir, self.arguments[0][1:])
+ env = self.state.document.settings.env
+ rel_filename, filename = env.relfn2path(self.arguments[0])
+ self.arguments[0] = filename
return BaseInclude.run(self)
@@ -397,7 +369,6 @@ directives.register_directive('only', Only)
directives.register_directive('include', Include)
# register the standard rst class directive under a different name
-from docutils.parsers.rst.directives.misc import Class
# only for backwards compatibility now
directives.register_directive('cssclass', Class)
# new standard name when default-domain with "class" is in effect
diff --git a/sphinx/domains/__init__.py b/sphinx/domains/__init__.py
index d133a8123..c48568eb9 100644
--- a/sphinx/domains/__init__.py
+++ b/sphinx/domains/__init__.py
@@ -6,7 +6,7 @@
Support for domains, which are groupings of description directives
and roles describing e.g. constructs of one programming language.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -66,9 +66,8 @@ class Index(object):
self.domain = domain
def generate(self, docnames=None):
- """
- Return entries for the index given by *name*. If *docnames* is given,
- restrict to entries referring to these docnames.
+ """Return entries for the index given by *name*. If *docnames* is
+ given, restrict to entries referring to these docnames.
The return value is a tuple of ``(content, collapse)``, where *collapse*
is a boolean that determines if sub-entries should start collapsed (for
@@ -132,6 +131,8 @@ class Domain(object):
roles = {}
#: a list of Index subclasses
indices = []
+ #: role name -> a warning message if reference is missing
+ dangling_warnings = {}
#: data value for a fresh environment
initial_data = {}
@@ -158,8 +159,7 @@ class Domain(object):
self.objtypes_for_role = self._role2type.get
def role(self, name):
- """
- Return a role adapter function that always gives the registered
+ """Return a role adapter function that always gives the registered
role its full name ('domain:name') as the first argument.
"""
if name in self._role_cache:
@@ -175,8 +175,7 @@ class Domain(object):
return role_adapter
def directive(self, name):
- """
- Return a directive adapter class that always gives the registered
+ """Return a directive adapter class that always gives the registered
directive its full name ('domain:name') as ``self.name``.
"""
if name in self._directive_cache:
@@ -195,21 +194,16 @@ class Domain(object):
# methods that should be overwritten
def clear_doc(self, docname):
- """
- Remove traces of a document in the domain-specific inventories.
- """
+ """Remove traces of a document in the domain-specific inventories."""
pass
def process_doc(self, env, docname, document):
- """
- Process a document after it is read by the environment.
- """
+ """Process a document after it is read by the environment."""
pass
def resolve_xref(self, env, fromdocname, builder,
typ, target, node, contnode):
- """
- Resolve the ``pending_xref`` *node* with the given *typ* and *target*.
+ """Resolve the pending_xref *node* with the given *typ* and *target*.
This method should return a new node, to replace the xref node,
containing the *contnode* which is the markup content of the
@@ -225,8 +219,7 @@ class Domain(object):
pass
def get_objects(self):
- """
- Return an iterable of "object descriptions", which are tuples with
+ """Return an iterable of "object descriptions", which are tuples with
five items:
* `name` -- fully qualified name
@@ -245,9 +238,7 @@ class Domain(object):
return []
def get_type_name(self, type, primary=False):
- """
- Return full name for given ObjType.
- """
+ """Return full name for given ObjType."""
if primary:
return type.lname
return _('%s %s') % (self.label, type.lname)
diff --git a/sphinx/domains/c.py b/sphinx/domains/c.py
index c49dc2843..b0dd332b5 100644
--- a/sphinx/domains/c.py
+++ b/sphinx/domains/c.py
@@ -5,7 +5,7 @@
The C language domain.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -99,13 +99,20 @@ class CObject(ObjectDescription):
m = c_funcptr_name_re.match(name)
if m:
name = m.group(1)
+
+ typename = self.env.temp_data.get('c:type')
+ if self.name == 'c:member' and typename:
+ fullname = typename + '.' + name
+ else:
+ fullname = name
+
if not arglist:
if self.objtype == 'function':
# for functions, add an empty parameter list
signode += addnodes.desc_parameterlist()
if const:
signode += addnodes.desc_addname(const, const)
- return name
+ return fullname
paramlist = addnodes.desc_parameterlist()
arglist = arglist.replace('`', '').replace('\\ ', '') # remove markup
@@ -121,12 +128,13 @@ class CObject(ObjectDescription):
self._parse_type(param, arg)
else:
self._parse_type(param, ctype)
- param += nodes.emphasis(' '+argname, ' '+argname)
+ # separate by non-breaking space in the output
+ param += nodes.emphasis(' '+argname, u'\xa0'+argname)
paramlist += param
signode += paramlist
if const:
signode += addnodes.desc_addname(const, const)
- return name
+ return fullname
def get_index_text(self, name):
if self.objtype == 'function':
@@ -160,7 +168,32 @@ class CObject(ObjectDescription):
indextext = self.get_index_text(name)
if indextext:
- self.indexnode['entries'].append(('single', indextext, name, name))
+ self.indexnode['entries'].append(('single', indextext, name, ''))
+
+ def before_content(self):
+ self.typename_set = False
+ if self.name == 'c:type':
+ if self.names:
+ self.env.temp_data['c:type'] = self.names[0]
+ self.typename_set = True
+
+ def after_content(self):
+ if self.typename_set:
+ self.env.temp_data['c:type'] = None
+
+
+class CXRefRole(XRefRole):
+ def process_link(self, env, refnode, has_explicit_title, title, target):
+ if not has_explicit_title:
+ target = target.lstrip('~') # only has a meaning for the title
+ # if the first character is a tilde, don't display the module/class
+ # parts of the contents
+ if title[0:1] == '~':
+ title = title[1:]
+ dot = title.rfind('.')
+ if dot != -1:
+ title = title[dot+1:]
+ return title, target
class CDomain(Domain):
@@ -183,11 +216,11 @@ class CDomain(Domain):
'var': CObject,
}
roles = {
- 'func' : XRefRole(fix_parens=True),
- 'member': XRefRole(),
- 'macro': XRefRole(),
- 'data': XRefRole(),
- 'type': XRefRole(),
+ 'func' : CXRefRole(fix_parens=True),
+ 'member': CXRefRole(),
+ 'macro': CXRefRole(),
+ 'data': CXRefRole(),
+ 'type': CXRefRole(),
}
initial_data = {
'objects': {}, # fullname -> docname, objtype
diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py
index 4dac89253..5465c91fb 100644
--- a/sphinx/domains/cpp.py
+++ b/sphinx/domains/cpp.py
@@ -5,7 +5,7 @@
The C++ language domain.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -21,14 +21,14 @@ from sphinx.domains import Domain, ObjType
from sphinx.directives import ObjectDescription
from sphinx.util.nodes import make_refnode
from sphinx.util.compat import Directive
-from sphinx.util.docfields import TypedField
-_identifier_re = re.compile(r'\b(~?[a-zA-Z_][a-zA-Z0-9_]*)\b')
+_identifier_re = re.compile(r'(~?\b[a-zA-Z_][a-zA-Z0-9_]*)\b')
_whitespace_re = re.compile(r'\s+(?u)')
_string_re = re.compile(r"[LuU8]?('([^'\\]*(?:\\.[^'\\]*)*)'"
r'|"([^"\\]*(?:\\.[^"\\]*)*)")', re.S)
_visibility_re = re.compile(r'\b(public|private|protected)\b')
+_array_def_re = re.compile(r'\[\s*(.+?)?\s*\]')
_operator_re = re.compile(r'''(?x)
\[\s*\]
| \(\s*\)
@@ -110,7 +110,7 @@ class DefinitionError(Exception):
return self.description
def __str__(self):
- return unicode(self.encode('utf-8'))
+ return unicode(self).encode('utf-8')
class DefExpr(object):
@@ -132,17 +132,21 @@ class DefExpr(object):
def __ne__(self, other):
return not self.__eq__(other)
+ __hash__ = None
+
def clone(self):
- """Close a definition expression node"""
+ """Clone a definition expression node."""
return deepcopy(self)
def get_id(self):
- """Returns the id for the node"""
+ """Return the id for the node."""
return u''
def get_name(self):
- """Returns the name. Returns either `None` or a node with
- a name you might call :meth:`split_owner` on.
+ """Return the name.
+
+ Returns either `None` or a node with a name you might call
+ :meth:`split_owner` on.
"""
return None
@@ -150,19 +154,19 @@ class DefExpr(object):
"""Nodes returned by :meth:`get_name` can split off their
owning parent. This function returns the owner and the
name as a tuple of two items. If a node does not support
- it, :exc:`NotImplementedError` is raised.
+ it, it returns None as owner and self as name.
"""
- raise NotImplementedError()
+ return None, self
def prefix(self, prefix):
- """Prefixes a name node (a node returned by :meth:`get_name`)."""
+ """Prefix a name node (a node returned by :meth:`get_name`)."""
raise NotImplementedError()
def __str__(self):
return unicode(self).encode('utf-8')
def __repr__(self):
- return '' % self
+ return '<%s %s>' % (self.__class__.__name__, self)
class PrimaryDefExpr(DefExpr):
@@ -170,9 +174,6 @@ class PrimaryDefExpr(DefExpr):
def get_name(self):
return self
- def split_owner(self):
- return None, self
-
def prefix(self, prefix):
if isinstance(prefix, PathDefExpr):
prefix = prefix.clone()
@@ -273,6 +274,22 @@ class PtrDefExpr(WrappingDefExpr):
return u'%s*' % self.typename
+class ArrayDefExpr(WrappingDefExpr):
+
+ def __init__(self, typename, size_hint=None):
+ WrappingDefExpr.__init__(self, typename)
+ self.size_hint = size_hint
+
+ def get_id(self):
+ return self.typename.get_id() + u'A'
+
+ def __unicode__(self):
+ return u'%s[%s]' % (
+ self.typename,
+ self.size_hint is not None and unicode(self.size_hint) or u''
+ )
+
+
class RefDefExpr(WrappingDefExpr):
def get_id(self):
@@ -323,9 +340,8 @@ class ArgumentDefExpr(DefExpr):
return self.type.get_id()
def __unicode__(self):
- return (self.type is not None and u'%s %s' % (self.type, self.name)
- or unicode(self.name)) + (self.default is not None and
- u'=%s' % self.default or u'')
+ return (u'%s %s' % (self.type or u'', self.name or u'')).strip() + \
+ (self.default is not None and u'=%s' % self.default or u'')
class NamedDefExpr(DefExpr):
@@ -445,9 +461,9 @@ class DefinitionParser(object):
'mutable': None,
'const': None,
'typename': None,
- 'unsigned': set(('char', 'int', 'long')),
- 'signed': set(('char', 'int', 'long')),
- 'short': set(('int', 'short')),
+ 'unsigned': set(('char', 'short', 'int', 'long')),
+ 'signed': set(('char', 'short', 'int', 'long')),
+ 'short': set(('int',)),
'long': set(('int', 'long', 'double'))
}
@@ -563,6 +579,8 @@ class DefinitionParser(object):
expr = ConstDefExpr(expr)
elif self.skip_string('*'):
expr = PtrDefExpr(expr)
+ elif self.match(_array_def_re):
+ expr = ArrayDefExpr(expr, self.last_match.group(1))
elif self.skip_string('&'):
expr = RefDefExpr(expr)
else:
@@ -694,14 +712,13 @@ class DefinitionParser(object):
self.fail('expected comma between arguments')
self.skip_ws()
- argname = self._parse_type()
- argtype = default = None
+ argtype = self._parse_type()
+ argname = default = None
self.skip_ws()
if self.skip_string('='):
self.pos += 1
default = self._parse_default_expr()
elif self.current_char not in ',)':
- argtype = argname
argname = self._parse_name()
self.skip_ws()
if self.skip_string('='):
@@ -824,17 +841,18 @@ class CPPObject(ObjectDescription):
def add_target_and_index(self, sigobj, sig, signode):
theid = sigobj.get_id()
name = unicode(sigobj.name)
- signode['names'].append(theid)
- signode['ids'].append(theid)
- signode['first'] = (not self.names)
- self.state.document.note_explicit_target(signode)
+ if theid not in self.state.document.ids:
+ signode['names'].append(theid)
+ signode['ids'].append(theid)
+ signode['first'] = (not self.names)
+ self.state.document.note_explicit_target(signode)
- self.env.domaindata['cpp']['objects'].setdefault(name,
- (self.env.docname, self.objtype, theid))
+ self.env.domaindata['cpp']['objects'].setdefault(name,
+ (self.env.docname, self.objtype, theid))
indextext = self.get_index_text(name)
if indextext:
- self.indexnode['entries'].append(('single', indextext, name, name))
+ self.indexnode['entries'].append(('single', indextext, theid, ''))
def before_content(self):
lastname = self.names and self.names[-1]
@@ -982,8 +1000,9 @@ class CPPFunctionObject(CPPObject):
class CPPCurrentNamespace(Directive):
- """This directive is just to tell Sphinx that we're documenting
- stuff in namespace foo.
+ """
+ This directive is just to tell Sphinx that we're documenting stuff in
+ namespace foo.
"""
has_content = False
@@ -1071,13 +1090,15 @@ class CPPDomain(Domain):
contnode, name)
parser = DefinitionParser(target)
- # XXX: warn?
try:
expr = parser.parse_type().get_name()
parser.skip_ws()
if not parser.eof or expr is None:
- return None
+ raise DefinitionError('')
except DefinitionError:
+ refdoc = node.get('refdoc', fromdocname)
+ env.warn(refdoc, 'unparseable C++ definition: %r' % target,
+ node.line)
return None
parent = node['cpp:parent']
diff --git a/sphinx/domains/javascript.py b/sphinx/domains/javascript.py
index 890af8e14..73edf4515 100644
--- a/sphinx/domains/javascript.py
+++ b/sphinx/domains/javascript.py
@@ -5,7 +5,7 @@
The JavaScript domain.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -13,8 +13,8 @@ from sphinx import addnodes
from sphinx.domains import Domain, ObjType
from sphinx.locale import l_, _
from sphinx.directives import ObjectDescription
-from sphinx.domains.python import py_paramlist_re as js_paramlist_re
from sphinx.roles import XRefRole
+from sphinx.domains.python import _pseudo_parse_arglist
from sphinx.util.nodes import make_refnode
from sphinx.util.docfields import Field, GroupedField, TypedField
@@ -56,7 +56,7 @@ class JSObject(ObjectDescription):
else:
# just a function or constructor
objectname = ''
- fullname = ''
+ fullname = name
signode['object'] = objectname
signode['fullname'] = fullname
@@ -68,28 +68,10 @@ class JSObject(ObjectDescription):
signode += addnodes.desc_addname(nameprefix + '.', nameprefix + '.')
signode += addnodes.desc_name(name, name)
if self.has_arguments:
- signode += addnodes.desc_parameterlist()
- if not arglist:
- return fullname, nameprefix
-
- stack = [signode[-1]]
- for token in js_paramlist_re.split(arglist):
- if token == '[':
- opt = addnodes.desc_optional()
- stack[-1] += opt
- stack.append(opt)
- elif token == ']':
- try:
- stack.pop()
- except IndexError:
- raise ValueError()
- elif not token or token == ',' or token.isspace():
- pass
+ if not arglist:
+ signode += addnodes.desc_parameterlist()
else:
- token = token.strip()
- stack[-1] += addnodes.desc_parameter(token, token)
- if len(stack) != 1:
- raise ValueError()
+ _pseudo_parse_arglist(signode, arglist)
return fullname, nameprefix
def add_target_and_index(self, name_obj, sig, signode):
@@ -114,7 +96,8 @@ class JSObject(ObjectDescription):
indextext = self.get_index_text(objectname, name_obj)
if indextext:
self.indexnode['entries'].append(('single', indextext,
- fullname, fullname))
+ fullname.replace('$', '_S_'),
+ ''))
def get_index_text(self, objectname, name_obj):
name, obj = name_obj
@@ -148,7 +131,7 @@ class JSCallable(JSObject):
class JSConstructor(JSCallable):
- """Like a callable but with a different prefix"""
+ """Like a callable but with a different prefix."""
display_prefix = 'class '
@@ -226,8 +209,10 @@ class JavaScriptDomain(Domain):
name, obj = self.find_obj(env, objectname, target, typ, searchorder)
if not obj:
return None
- return make_refnode(builder, fromdocname, obj[0], name, contnode, name)
+ return make_refnode(builder, fromdocname, obj[0],
+ name.replace('$', '_S_'), contnode, name)
def get_objects(self):
for refname, (docname, type) in self.data['objects'].iteritems():
- yield refname, refname, type, docname, refname, 1
+ yield refname, refname, type, docname, \
+ refname.replace('$', '_S_'), 1
diff --git a/sphinx/domains/python.py b/sphinx/domains/python.py
index fc8086995..021aaaaa7 100644
--- a/sphinx/domains/python.py
+++ b/sphinx/domains/python.py
@@ -5,7 +5,7 @@
The Python domain.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -33,7 +33,52 @@ py_sig_re = re.compile(
)? $ # and nothing more
''', re.VERBOSE)
-py_paramlist_re = re.compile(r'([\[\],])') # split at '[', ']' and ','
+
+def _pseudo_parse_arglist(signode, arglist):
+ """"Parse" a list of arguments separated by commas.
+
+ Arguments can have "optional" annotations given by enclosing them in
+ brackets. Currently, this will split at any comma, even if it's inside a
+ string literal (e.g. default argument value).
+ """
+ paramlist = addnodes.desc_parameterlist()
+ stack = [paramlist]
+ try:
+ for argument in arglist.split(','):
+ argument = argument.strip()
+ ends_open = ends_close = 0
+ while argument.startswith('['):
+ stack.append(addnodes.desc_optional())
+ stack[-2] += stack[-1]
+ argument = argument[1:].strip()
+ while argument.startswith(']'):
+ stack.pop()
+ argument = argument[1:].strip()
+ while argument.endswith(']'):
+ ends_close += 1
+ argument = argument[:-1].strip()
+ while argument.endswith('['):
+ ends_open += 1
+ argument = argument[:-1].strip()
+ if argument:
+ stack[-1] += addnodes.desc_parameter(argument, argument)
+ while ends_open:
+ stack.append(addnodes.desc_optional())
+ stack[-2] += stack[-1]
+ ends_open -= 1
+ while ends_close:
+ stack.pop()
+ ends_close -= 1
+ if len(stack) != 1:
+ raise IndexError
+ except IndexError:
+ # if there are too few or too many elements on the stack, just give up
+ # and treat the whole argument list as one argument, discarding the
+ # already partially populated paramlist node
+ signode += addnodes.desc_parameterlist()
+ signode[-1] += addnodes.desc_parameter(arglist, arglist)
+ else:
+ signode += paramlist
class PyObject(ObjectDescription):
@@ -43,16 +88,19 @@ class PyObject(ObjectDescription):
option_spec = {
'noindex': directives.flag,
'module': directives.unchanged,
+ 'annotation': directives.unchanged,
}
doc_field_types = [
TypedField('parameter', label=l_('Parameters'),
names=('param', 'parameter', 'arg', 'argument',
'keyword', 'kwarg', 'kwparam'),
- typerolename='obj', typenames=('paramtype', 'type')),
+ typerolename='obj', typenames=('paramtype', 'type'),
+ can_collapse=True),
TypedField('variable', label=l_('Variables'), rolename='obj',
names=('var', 'ivar', 'cvar'),
- typerolename='obj', typenames=('vartype',)),
+ typerolename='obj', typenames=('vartype',),
+ can_collapse=True),
GroupedField('exceptions', label=l_('Raises'), rolename='exc',
names=('raises', 'raise', 'exception', 'except'),
can_collapse=True),
@@ -63,22 +111,21 @@ class PyObject(ObjectDescription):
]
def get_signature_prefix(self, sig):
- """
- May return a prefix to put before the object name in the signature.
+ """May return a prefix to put before the object name in the
+ signature.
"""
return ''
def needs_arglist(self):
- """
- May return true if an empty argument list is to be generated even if
+ """May return true if an empty argument list is to be generated even if
the document contains none.
"""
return False
def handle_signature(self, sig, signode):
- """
- Transform a Python signature into RST nodes.
- Returns (fully qualified name of the thing, classname if any).
+ """Transform a Python signature into RST nodes.
+
+ Return (fully qualified name of the thing, classname if any).
If inside a class, the current class name is handled intelligently:
* it is stripped from the displayed name if present
@@ -134,6 +181,8 @@ class PyObject(ObjectDescription):
nodetext = modname + '.'
signode += addnodes.desc_addname(nodetext, nodetext)
+ anno = self.options.get('annotation')
+
signode += addnodes.desc_name(name, name)
if not arglist:
if self.needs_arglist():
@@ -141,35 +190,19 @@ class PyObject(ObjectDescription):
signode += addnodes.desc_parameterlist()
if retann:
signode += addnodes.desc_returns(retann, retann)
+ if anno:
+ signode += addnodes.desc_annotation(' ' + anno, ' ' + anno)
return fullname, name_prefix
- signode += addnodes.desc_parameterlist()
- stack = [signode[-1]]
- for token in py_paramlist_re.split(arglist):
- if token == '[':
- opt = addnodes.desc_optional()
- stack[-1] += opt
- stack.append(opt)
- elif token == ']':
- try:
- stack.pop()
- except IndexError:
- raise ValueError
- elif not token or token == ',' or token.isspace():
- pass
- else:
- token = token.strip()
- stack[-1] += addnodes.desc_parameter(token, token)
- if len(stack) != 1:
- raise ValueError
+ _pseudo_parse_arglist(signode, arglist)
if retann:
signode += addnodes.desc_returns(retann, retann)
+ if anno:
+ signode += addnodes.desc_annotation(' ' + anno, ' ' + anno)
return fullname, name_prefix
def get_index_text(self, modname, name):
- """
- Return the text for the index entry of the object.
- """
+ """Return the text for the index entry of the object."""
raise NotImplementedError('must be implemented in subclasses')
def add_target_and_index(self, name_cls, sig, signode):
@@ -196,7 +229,7 @@ class PyObject(ObjectDescription):
indextext = self.get_index_text(modname, name_cls)
if indextext:
self.indexnode['entries'].append(('single', indextext,
- fullname, fullname))
+ fullname, ''))
def before_content(self):
# needed for automatic qualification of members (reset in subclasses)
@@ -332,6 +365,38 @@ class PyClassmember(PyObject):
self.clsname_set = True
+class PyDecoratorMixin(object):
+ """
+ Mixin for decorator directives.
+ """
+ def handle_signature(self, sig, signode):
+ ret = super(PyDecoratorMixin, self).handle_signature(sig, signode)
+ signode.insert(0, addnodes.desc_addname('@', '@'))
+ return ret
+
+ def needs_arglist(self):
+ return False
+
+
+class PyDecoratorFunction(PyDecoratorMixin, PyModulelevel):
+ """
+ Directive to mark functions meant to be used as decorators.
+ """
+ def run(self):
+ # a decorator function is a function after all
+ self.name = 'py:function'
+ return PyModulelevel.run(self)
+
+
+class PyDecoratorMethod(PyDecoratorMixin, PyClassmember):
+ """
+ Directive to mark methods meant to be used as decorators.
+ """
+ def run(self):
+ self.name = 'py:method'
+ return PyClassmember.run(self)
+
+
class PyModule(Directive):
"""
Directive to mark description of a new module.
@@ -356,22 +421,18 @@ class PyModule(Directive):
env.domaindata['py']['modules'][modname] = \
(env.docname, self.options.get('synopsis', ''),
self.options.get('platform', ''), 'deprecated' in self.options)
+ # make a duplicate entry in 'objects' to facilitate searching for the
+ # module in PythonDomain.find_obj()
+ env.domaindata['py']['objects'][modname] = (env.docname, 'module')
targetnode = nodes.target('', '', ids=['module-' + modname], ismod=True)
self.state.document.note_explicit_target(targetnode)
ret = [targetnode]
- # XXX this behavior of the module directive is a mess...
- if 'platform' in self.options:
- platform = self.options['platform']
- node = nodes.paragraph()
- node += nodes.emphasis('', _('Platforms: '))
- node += nodes.Text(platform, platform)
- ret.append(node)
- # the synopsis isn't printed; in fact, it is only used in the
- # modindex currently
+ # the platform and synopsis aren't printed; in fact, they are only used
+ # in the modindex currently
if not noindex:
indextext = _('%s (module)') % modname
inode = addnodes.index(entries=[('single', indextext,
- 'module-' + modname, modname)])
+ 'module-' + modname, '')])
ret.append(inode)
return ret
@@ -506,16 +567,18 @@ class PythonDomain(Domain):
}
directives = {
- 'function': PyModulelevel,
- 'data': PyModulelevel,
- 'class': PyClasslike,
- 'exception': PyClasslike,
- 'method': PyClassmember,
- 'classmethod': PyClassmember,
- 'staticmethod': PyClassmember,
- 'attribute': PyClassmember,
- 'module': PyModule,
- 'currentmodule': PyCurrentModule,
+ 'function': PyModulelevel,
+ 'data': PyModulelevel,
+ 'class': PyClasslike,
+ 'exception': PyClasslike,
+ 'method': PyClassmember,
+ 'classmethod': PyClassmember,
+ 'staticmethod': PyClassmember,
+ 'attribute': PyClassmember,
+ 'module': PyModule,
+ 'currentmodule': PyCurrentModule,
+ 'decorator': PyDecoratorFunction,
+ 'decoratormethod': PyDecoratorMethod,
}
roles = {
'data': PyXRefRole(),
@@ -544,38 +607,46 @@ class PythonDomain(Domain):
if fn == docname:
del self.data['modules'][modname]
- def find_obj(self, env, modname, classname, name, type, searchorder=0):
- """
- Find a Python object for "name", perhaps using the given module and/or
- classname. Returns a list of (name, object entry) tuples.
+ def find_obj(self, env, modname, classname, name, type, searchmode=0):
+ """Find a Python object for "name", perhaps using the given module
+ and/or classname. Returns a list of (name, object entry) tuples.
"""
# skip parens
if name[-2:] == '()':
name = name[:-2]
if not name:
- return None, None
+ return []
objects = self.data['objects']
matches = []
newname = None
- if searchorder == 1:
- if modname and classname and \
- modname + '.' + classname + '.' + name in objects:
- newname = modname + '.' + classname + '.' + name
- elif modname and modname + '.' + name in objects:
- newname = modname + '.' + name
- elif name in objects:
- newname = name
- else:
- # "fuzzy" searching mode
- searchname = '.' + name
- matches = [(name, objects[name]) for name in objects
- if name.endswith(searchname)]
+ if searchmode == 1:
+ objtypes = self.objtypes_for_role(type)
+ if modname and classname:
+ fullname = modname + '.' + classname + '.' + name
+ if fullname in objects and objects[fullname][1] in objtypes:
+ newname = fullname
+ if not newname:
+ if modname and modname + '.' + name in objects and \
+ objects[modname + '.' + name][1] in objtypes:
+ newname = modname + '.' + name
+ elif name in objects and objects[name][1] in objtypes:
+ newname = name
+ else:
+ # "fuzzy" searching mode
+ searchname = '.' + name
+ matches = [(name, objects[name]) for name in objects
+ if name.endswith(searchname)
+ and objects[name][1] in objtypes]
else:
+ # NOTE: searching for exact match, object type is not considered
if name in objects:
newname = name
+ elif type == 'mod':
+ # only exact matches allowed for modules
+ return []
elif classname and classname + '.' + name in objects:
newname = classname + '.' + name
elif modname and modname + '.' + name in objects:
@@ -597,33 +668,35 @@ class PythonDomain(Domain):
def resolve_xref(self, env, fromdocname, builder,
type, target, node, contnode):
- if (type == 'mod' or
- type == 'obj' and target in self.data['modules']):
- docname, synopsis, platform, deprecated = \
- self.data['modules'].get(target, ('','','', ''))
- if not docname:
- return None
- else:
- title = '%s%s%s' % ((platform and '(%s) ' % platform),
- synopsis,
- (deprecated and ' (deprecated)' or ''))
- return make_refnode(builder, fromdocname, docname,
- 'module-' + target, contnode, title)
+ modname = node.get('py:module')
+ clsname = node.get('py:class')
+ searchmode = node.hasattr('refspecific') and 1 or 0
+ matches = self.find_obj(env, modname, clsname, target,
+ type, searchmode)
+ if not matches:
+ return None
+ elif len(matches) > 1:
+ env.warn(fromdocname,
+ 'more than one target found for cross-reference '
+ '%r: %s' % (target,
+ ', '.join(match[0] for match in matches)),
+ node.line)
+ name, obj = matches[0]
+
+ if obj[1] == 'module':
+ # get additional info for modules
+ docname, synopsis, platform, deprecated = self.data['modules'][name]
+ assert docname == obj[0]
+ title = name
+ if synopsis:
+ title += ': ' + synopsis
+ if deprecated:
+ title += _(' (deprecated)')
+ if platform:
+ title += ' (' + platform + ')'
+ return make_refnode(builder, fromdocname, docname,
+ 'module-' + name, contnode, title)
else:
- modname = node.get('py:module')
- clsname = node.get('py:class')
- searchorder = node.hasattr('refspecific') and 1 or 0
- matches = self.find_obj(env, modname, clsname, target,
- type, searchorder)
- if not matches:
- return None
- elif len(matches) > 1:
- env.warn(fromdocname,
- 'more than one target found for cross-reference '
- '%r: %s' % (target,
- ', '.join(match[0] for match in matches)),
- node.line)
- name, obj = matches[0]
return make_refnode(builder, fromdocname, obj[0], name,
contnode, name)
diff --git a/sphinx/domains/rst.py b/sphinx/domains/rst.py
index 04092eab0..e67f827e0 100644
--- a/sphinx/domains/rst.py
+++ b/sphinx/domains/rst.py
@@ -5,7 +5,7 @@
The reStructuredText domain.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -28,9 +28,10 @@ class ReSTMarkup(ObjectDescription):
"""
def add_target_and_index(self, name, sig, signode):
- if name not in self.state.document.ids:
- signode['names'].append(name)
- signode['ids'].append(name)
+ targetname = self.objtype + '-' + name
+ if targetname not in self.state.document.ids:
+ signode['names'].append(targetname)
+ signode['ids'].append(targetname)
signode['first'] = (not self.names)
self.state.document.note_explicit_target(signode)
@@ -47,7 +48,7 @@ class ReSTMarkup(ObjectDescription):
indextext = self.get_index_text(self.objtype, name)
if indextext:
self.indexnode['entries'].append(('single', indextext,
- name, name))
+ targetname, ''))
def get_index_text(self, objectname, name):
if self.objtype == 'directive':
@@ -58,9 +59,10 @@ class ReSTMarkup(ObjectDescription):
def parse_directive(d):
- """
- Parses a directive signature. Returns (directive, arguments) string tuple.
- if no arguments are given, returns (directive, '').
+ """Parse a directive signature.
+
+ Returns (directive, arguments) string tuple. If no arguments are given,
+ returns (directive, '').
"""
dir = d.strip()
if not dir.startswith('.'):
@@ -129,8 +131,9 @@ class ReSTDomain(Domain):
if (objtype, target) in objects:
return make_refnode(builder, fromdocname,
objects[objtype, target],
- target, contnode, target)
+ objtype + '-' + target,
+ contnode, target + ' ' + objtype)
def get_objects(self):
for (typ, name), docname in self.data['objects'].iteritems():
- yield name, name, typ, docname, name, 1
+ yield name, name, typ, docname, typ + '-' + name, 1
diff --git a/sphinx/domains/std.py b/sphinx/domains/std.py
index 63a3bf6dc..9d5b0b0f1 100644
--- a/sphinx/domains/std.py
+++ b/sphinx/domains/std.py
@@ -5,14 +5,16 @@
The standard domain.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import re
+import unicodedata
from docutils import nodes
from docutils.parsers.rst import directives
+from docutils.statemachine import ViewList
from sphinx import addnodes
from sphinx.roles import XRefRole
@@ -59,7 +61,7 @@ class GenericObject(ObjectDescription):
indextype = 'single'
indexentry = self.indextemplate % (name,)
self.indexnode['entries'].append((indextype, indexentry,
- targetname, targetname))
+ targetname, ''))
self.env.domaindata['std']['objects'][self.objtype, name] = \
self.env.docname, targetname
@@ -80,8 +82,8 @@ class EnvVarXRefRole(XRefRole):
tgtid = 'index-%s' % env.new_serialno('index')
indexnode = addnodes.index()
indexnode['entries'] = [
- ('single', varname, tgtid, varname),
- ('single', _('environment variable; %s') % varname, tgtid, varname)
+ ('single', varname, tgtid, ''),
+ ('single', _('environment variable; %s') % varname, tgtid, '')
]
targetnode = nodes.target('', '', ids=[tgtid])
document.note_explicit_target(targetnode)
@@ -116,7 +118,7 @@ class Target(Directive):
indextype = indexentry[:colon].strip()
indexentry = indexentry[colon+1:].strip()
inode = addnodes.index(entries=[(indextype, indexentry,
- targetname, targetname)])
+ targetname, '')])
ret.insert(0, inode)
name = self.name
if ':' in self.name:
@@ -159,7 +161,7 @@ class Cmdoption(ObjectDescription):
self.indexnode['entries'].append(
('pair', _('%scommand line option; %s') %
((currprogram and currprogram + ' ' or ''), sig),
- targetname, targetname))
+ targetname, ''))
self.env.domaindata['std']['progoptions'][currprogram, name] = \
self.env.docname, targetname
@@ -205,8 +207,8 @@ class OptionXRefRole(XRefRole):
class Glossary(Directive):
"""
- Directive to create a glossary with cross-reference targets
- for :term: roles.
+ Directive to create a glossary with cross-reference targets for :term:
+ roles.
"""
has_content = True
@@ -223,37 +225,100 @@ class Glossary(Directive):
gloss_entries = env.temp_data.setdefault('gloss_entries', set())
node = addnodes.glossary()
node.document = self.state.document
- self.state.nested_parse(self.content, self.content_offset, node)
- # the content should be definition lists
- dls = [child for child in node
- if isinstance(child, nodes.definition_list)]
- # now, extract definition terms to enable cross-reference creation
- new_dl = nodes.definition_list()
- new_dl['classes'].append('glossary')
+ # This directive implements a custom format of the reST definition list
+ # that allows multiple lines of terms before the definition. This is
+ # easy to parse since we know that the contents of the glossary *must
+ # be* a definition list.
+
+ # first, collect single entries
+ entries = []
+ in_definition = True
+ was_empty = True
+ messages = []
+ for line, (source, lineno) in zip(self.content, self.content.items):
+ # empty line -> add to last definition
+ if not line:
+ if in_definition and entries:
+ entries[-1][1].append('', source, lineno)
+ was_empty = True
+ continue
+ # unindented line -> a term
+ if line and not line[0].isspace():
+ # first term of definition
+ if in_definition:
+ if not was_empty:
+ messages.append(self.state.reporter.system_message(
+ 2, 'glossary term must be preceded by empty line',
+ source=source, line=lineno))
+ entries.append(([(line, source, lineno)], ViewList()))
+ in_definition = False
+ # second term and following
+ else:
+ if was_empty:
+ messages.append(self.state.reporter.system_message(
+ 2, 'glossary terms must not be separated by empty '
+ 'lines', source=source, line=lineno))
+ entries[-1][0].append((line, source, lineno))
+ else:
+ if not in_definition:
+ # first line of definition, determines indentation
+ in_definition = True
+ indent_len = len(line) - len(line.lstrip())
+ entries[-1][1].append(line[indent_len:], source, lineno)
+ was_empty = False
+
+ # now, parse all the entries into a big definition list
items = []
- for dl in dls:
- for li in dl.children:
- if not li.children or not isinstance(li[0], nodes.term):
- continue
- termtext = li.children[0].astext()
+ for terms, definition in entries:
+ termtexts = []
+ termnodes = []
+ system_messages = []
+ ids = []
+ for line, source, lineno in terms:
+ # parse the term with inline markup
+ res = self.state.inline_text(line, lineno)
+ system_messages.extend(res[1])
+
+ # get a text-only representation of the term and register it
+ # as a cross-reference target
+ tmp = nodes.paragraph('', '', *res[0])
+ termtext = tmp.astext()
new_id = 'term-' + nodes.make_id(termtext)
if new_id in gloss_entries:
new_id = 'term-' + str(len(gloss_entries))
gloss_entries.add(new_id)
- li[0]['names'].append(new_id)
- li[0]['ids'].append(new_id)
+ ids.append(new_id)
objects['term', termtext.lower()] = env.docname, new_id
+ termtexts.append(termtext)
# add an index entry too
indexnode = addnodes.index()
- indexnode['entries'] = [('single', termtext, new_id, termtext)]
- li.insert(0, indexnode)
- items.append((termtext, li))
+ indexnode['entries'] = [('single', termtext, new_id, 'main')]
+ termnodes.append(indexnode)
+ termnodes.extend(res[0])
+ termnodes.append(addnodes.termsep())
+ # make a single "term" node with all the terms, separated by termsep
+ # nodes (remove the dangling trailing separator)
+ term = nodes.term('', '', *termnodes[:-1])
+ term['ids'].extend(ids)
+ term['names'].extend(ids)
+ term += system_messages
+
+ defnode = nodes.definition()
+ self.state.nested_parse(definition, definition.items[0][1], defnode)
+
+ items.append((termtexts,
+ nodes.definition_list_item('', term, defnode)))
+
if 'sorted' in self.options:
- items.sort(key=lambda x: x[0].lower())
- new_dl.extend(item[1] for item in items)
- node.children = [new_dl]
- return [node]
+ items.sort(key=lambda x:
+ unicodedata.normalize('NFD', x[0][0].lower()))
+
+ dlist = nodes.definition_list()
+ dlist['classes'].append('glossary')
+ dlist.extend(item[1] for item in items)
+ node += dlist
+ return messages + [node]
token_re = re.compile('`([a-z_][a-z0-9_]*)`')
@@ -346,11 +411,13 @@ class StandardDomain(Domain):
# links to tokens in grammar productions
'token': XRefRole(),
# links to terms in glossary
- 'term': XRefRole(lowercase=True, innernodeclass=nodes.emphasis),
+ 'term': XRefRole(lowercase=True, innernodeclass=nodes.emphasis,
+ warn_dangling=True),
# links to headings or arbitrary labels
- 'ref': XRefRole(lowercase=True, innernodeclass=nodes.emphasis),
+ 'ref': XRefRole(lowercase=True, innernodeclass=nodes.emphasis,
+ warn_dangling=True),
# links to labels, without a different title
- 'keyword': XRefRole(),
+ 'keyword': XRefRole(warn_dangling=True),
}
initial_data = {
@@ -368,6 +435,13 @@ class StandardDomain(Domain):
},
}
+ dangling_warnings = {
+ 'term': 'term not in glossary: %(target)s',
+ 'ref': 'undefined label: %(target)s (if the link has no caption '
+ 'the label must precede a section header)',
+ 'keyword': 'unknown keyword: %(target)s',
+ }
+
def clear_doc(self, docname):
for key, (fn, _) in self.data['progoptions'].items():
if fn == docname:
@@ -425,27 +499,16 @@ class StandardDomain(Domain):
def resolve_xref(self, env, fromdocname, builder,
typ, target, node, contnode):
if typ == 'ref':
- #refdoc = node.get('refdoc', fromdocname)
if node['refexplicit']:
# reference to anonymous label; the reference uses
# the supplied link caption
docname, labelid = self.data['anonlabels'].get(target, ('',''))
sectname = node.astext()
- # XXX warn somehow if not resolved by intersphinx
- #if not docname:
- # env.warn(refdoc, 'undefined label: %s' %
- # target, node.line)
else:
# reference to named label; the final node will
# contain the section name after the label
docname, labelid, sectname = self.data['labels'].get(target,
('','',''))
- # XXX warn somehow if not resolved by intersphinx
- #if not docname:
- # env.warn(refdoc,
- # 'undefined label: %s' % target + ' -- if you '
- # 'don\'t give a link caption the label must '
- # 'precede a section header.', node.line)
if not docname:
return None
newnode = nodes.reference('', '', internal=True)
@@ -469,30 +532,29 @@ class StandardDomain(Domain):
# keywords are oddballs: they are referenced by named labels
docname, labelid, _ = self.data['labels'].get(target, ('','',''))
if not docname:
- #env.warn(refdoc, 'unknown keyword: %s' % target)
return None
- else:
- return make_refnode(builder, fromdocname, docname,
- labelid, contnode)
+ return make_refnode(builder, fromdocname, docname,
+ labelid, contnode)
elif typ == 'option':
progname = node['refprogram']
docname, labelid = self.data['progoptions'].get((progname, target),
('', ''))
if not docname:
return None
- else:
- return make_refnode(builder, fromdocname, docname,
- labelid, contnode)
+ return make_refnode(builder, fromdocname, docname,
+ labelid, contnode)
else:
- docname, labelid = self.data['objects'].get((typ, target), ('', ''))
- if not docname:
- if typ == 'term':
- env.warn(node.get('refdoc', fromdocname),
- 'term not in glossary: %s' % target, node.line)
- return None
+ objtypes = self.objtypes_for_role(typ) or []
+ for objtype in objtypes:
+ if (objtype, target) in self.data['objects']:
+ docname, labelid = self.data['objects'][objtype, target]
+ break
else:
- return make_refnode(builder, fromdocname, docname,
- labelid, contnode)
+ docname, labelid = '', ''
+ if not docname:
+ return None
+ return make_refnode(builder, fromdocname, docname,
+ labelid, contnode)
def get_objects(self):
for (prog, option), info in self.data['progoptions'].iteritems():
diff --git a/sphinx/environment.py b/sphinx/environment.py
index 972bfa3ef..6fe18f59e 100644
--- a/sphinx/environment.py
+++ b/sphinx/environment.py
@@ -5,17 +5,20 @@
Global creation environment.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import re
import os
+import sys
import time
import types
import codecs
import imghdr
import string
+import posixpath
+import unicodedata
import cPickle as pickle
from os import path
from glob import glob
@@ -24,9 +27,9 @@ from itertools import izip, groupby
from docutils import nodes
from docutils.io import FileInput, NullOutput
from docutils.core import Publisher
-from docutils.utils import Reporter, relative_path
+from docutils.utils import Reporter, relative_path, new_document
from docutils.readers import standalone
-from docutils.parsers.rst import roles, directives
+from docutils.parsers.rst import roles, directives, Parser as RSTParser
from docutils.parsers.rst.languages import en as english
from docutils.parsers.rst.directives.html import MetaBody
from docutils.writers import UnfilteredWriter
@@ -34,15 +37,18 @@ from docutils.transforms import Transform
from docutils.transforms.parts import ContentsFilter
from sphinx import addnodes
-from sphinx.util import url_re, get_matching_docs, docname_join, \
+from sphinx.util import url_re, get_matching_docs, docname_join, split_into, \
FilenameUniqDict
-from sphinx.util.nodes import clean_astext, make_refnode
+from sphinx.util.nodes import clean_astext, make_refnode, extract_messages
from sphinx.util.osutil import movefile, SEP, ustrftime
from sphinx.util.matching import compile_matchers
-from sphinx.util.pycompat import all
+from sphinx.util.pycompat import all, class_types
+from sphinx.util.websupport import is_commentable
from sphinx.errors import SphinxError, ExtensionError
-from sphinx.locale import _
+from sphinx.locale import _, init as init_locale
+from sphinx.versioning import add_uids, merge_doctrees
+fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()
orig_role_function = roles.role
orig_directive_function = directives.directive
@@ -63,7 +69,7 @@ default_settings = {
# This is increased every time an environment attribute is added
# or changed to properly invalidate pickle files.
-ENV_VERSION = 36
+ENV_VERSION = 41
default_substitutions = set([
@@ -74,13 +80,19 @@ default_substitutions = set([
dummy_reporter = Reporter('', 4, 4)
+versioning_conditions = {
+ 'none': False,
+ 'text': nodes.TextElement,
+ 'commentable': is_commentable,
+}
+
class WarningStream(object):
def __init__(self, warnfunc):
self.warnfunc = warnfunc
def write(self, text):
if text.strip():
- self.warnfunc(text, None, '')
+ self.warnfunc(text.strip(), None, '')
class NoUri(Exception):
@@ -177,17 +189,56 @@ class CitationReferences(Transform):
for citnode in self.document.traverse(nodes.citation_reference):
cittext = citnode.astext()
refnode = addnodes.pending_xref(cittext, reftype='citation',
- reftarget=cittext)
+ reftarget=cittext, refwarn=True)
+ refnode.line = citnode.line or citnode.parent.line
refnode += nodes.Text('[' + cittext + ']')
citnode.parent.replace(citnode, refnode)
+class Locale(Transform):
+ """
+ Replace translatable nodes with their translated doctree.
+ """
+ default_priority = 0
+ def apply(self):
+ env = self.document.settings.env
+ settings, source = self.document.settings, self.document['source']
+ # XXX check if this is reliable
+ assert source.startswith(env.srcdir)
+ docname = os.path.splitext(source[len(env.srcdir):].lstrip(os.sep))[0]
+ section = docname.split(os.sep, 1)[0]
+
+ # fetch translations
+ dirs = [path.join(env.srcdir, x)
+ for x in env.config.locale_dirs]
+ catalog, has_catalog = init_locale(dirs, env.config.language, section)
+ if not has_catalog:
+ return
+
+ parser = RSTParser()
+
+ for node, msg in extract_messages(self.document):
+ patch = new_document(source, settings)
+ msgstr = catalog.gettext(msg)
+ # XXX add marker to untranslated parts
+ if not msgstr or msgstr == msg: # as-of-yet untranslated
+ continue
+ parser.parse(msgstr, patch)
+ patch = patch[0]
+ # XXX doctest and other block markup
+ if not isinstance(patch, nodes.paragraph):
+ continue # skip for now
+ for child in patch.children: # update leaves
+ child.parent = node
+ node.children = patch.children
+
+
class SphinxStandaloneReader(standalone.Reader):
"""
Add our own transforms.
"""
- transforms = [CitationReferences, DefaultSubstitutions, MoveModuleTargets,
- HandleCodeBlocks, SortIds]
+ transforms = [Locale, CitationReferences, DefaultSubstitutions,
+ MoveModuleTargets, HandleCodeBlocks, SortIds]
def get_transforms(self):
return standalone.Reader.get_transforms(self) + self.transforms
@@ -251,7 +302,7 @@ class BuildEnvironment:
if key.startswith('_') or \
isinstance(val, types.ModuleType) or \
isinstance(val, types.FunctionType) or \
- isinstance(val, (type, types.ClassType)):
+ isinstance(val, class_types):
del self.config[key]
try:
pickle.dump(self, picklefile, pickle.HIGHEST_PROTOCOL)
@@ -270,6 +321,9 @@ class BuildEnvironment:
self.srcdir = srcdir
self.config = config
+ # the method of doctree versioning; see set_versioning_method
+ self.versioning_condition = None
+
# the application object; only set while update() runs
self.app = None
@@ -286,6 +340,9 @@ class BuildEnvironment:
# this is to invalidate old pickles
self.version = ENV_VERSION
+ # make this a set for faster testing
+ self._nitpick_ignore = set(self.config.nitpick_ignore)
+
# All "docnames" here are /-separated and relative and exclude
# the source suffix.
@@ -294,6 +351,8 @@ class BuildEnvironment:
# contains all built docnames
self.dependencies = {} # docname -> set of dependent file
# names, relative to documentation root
+ self.reread_always = set() # docnames to re-read unconditionally on
+ # next build
# File metadata
self.metadata = {} # docname -> dict of metadata items
@@ -335,18 +394,32 @@ class BuildEnvironment:
self._warnfunc = func
self.settings['warning_stream'] = WarningStream(func)
+ def set_versioning_method(self, method):
+ """This sets the doctree versioning method for this environment.
+
+ Versioning methods are a builder property; only builders with the same
+ versioning method can share the same doctree directory. Therefore, we
+ raise an exception if the user tries to use an environment with an
+ incompatible versioning method.
+ """
+ if method not in versioning_conditions:
+ raise ValueError('invalid versioning method: %r' % method)
+ condition = versioning_conditions[method]
+ if self.versioning_condition not in (None, condition):
+ raise SphinxError('This environment is incompatible with the '
+ 'selected builder, please choose another '
+ 'doctree directory.')
+ self.versioning_condition = condition
+
def warn(self, docname, msg, lineno=None):
- if docname:
- if lineno is None:
- lineno = ''
- self._warnfunc(msg, '%s:%s' % (self.doc2path(docname), lineno))
- else:
- self._warnfunc(msg)
+ # strange argument order is due to backwards compatibility
+ self._warnfunc(msg, (docname, lineno))
def clear_doc(self, docname):
"""Remove all traces of a source file in the inventory."""
if docname in self.all_docs:
self.all_docs.pop(docname, None)
+ self.reread_always.discard(docname)
self.metadata.pop(docname, None)
self.dependencies.pop(docname, None)
self.titles.pop(docname, None)
@@ -376,25 +449,46 @@ class BuildEnvironment:
domain.clear_doc(docname)
def doc2path(self, docname, base=True, suffix=None):
+ """Return the filename for the document name.
+
+ If *base* is True, return absolute path under self.srcdir.
+ If *base* is None, return relative path to self.srcdir.
+ If *base* is a path string, return absolute path under that.
+ If *suffix* is not None, add it instead of config.source_suffix.
"""
- Return the filename for the document name.
- If base is True, return absolute path under self.srcdir.
- If base is None, return relative path to self.srcdir.
- If base is a path string, return absolute path under that.
- If suffix is not None, add it instead of config.source_suffix.
- """
+ docname = docname.replace(SEP, path.sep)
suffix = suffix or self.config.source_suffix
if base is True:
- return path.join(self.srcdir,
- docname.replace(SEP, path.sep)) + suffix
+ return path.join(self.srcdir, docname) + suffix
elif base is None:
- return docname.replace(SEP, path.sep) + suffix
+ return docname + suffix
else:
- return path.join(base, docname.replace(SEP, path.sep)) + suffix
+ return path.join(base, docname) + suffix
+
+ def relfn2path(self, filename, docname=None):
+ """Return paths to a file referenced from a document, relative to
+ documentation root and absolute.
+
+ Absolute filenames are relative to the source dir, while relative
+ filenames are relative to the dir of the containing document.
+ """
+ if filename.startswith('/') or filename.startswith(os.sep):
+ rel_fn = filename[1:]
+ else:
+ docdir = path.dirname(self.doc2path(docname or self.docname,
+ base=None))
+ rel_fn = path.join(docdir, filename)
+ try:
+ return rel_fn, path.join(self.srcdir, rel_fn)
+ except UnicodeDecodeError:
+ # the source directory is a bytestring with non-ASCII characters;
+ # let's try to encode the rel_fn in the file system encoding
+ enc_rel_fn = rel_fn.encode(sys.getfilesystemencoding())
+ return rel_fn, path.join(self.srcdir, enc_rel_fn)
def find_files(self, config):
- """
- Find all source files in the source dir and put them in self.found_docs.
+ """Find all source files in the source dir and put them in
+ self.found_docs.
"""
matchers = compile_matchers(
config.exclude_patterns[:] +
@@ -407,9 +501,7 @@ class BuildEnvironment:
self.srcdir, config.source_suffix, exclude_matchers=matchers))
def get_outdated_files(self, config_changed):
- """
- Return (added, changed, removed) sets.
- """
+ """Return (added, changed, removed) sets."""
# clear all files no longer present
removed = set(self.all_docs) - self.found_docs
@@ -429,6 +521,10 @@ class BuildEnvironment:
'.doctree')):
changed.add(docname)
continue
+ # check the "reread always" list
+ if docname in self.reread_always:
+ changed.add(docname)
+ continue
# check the mtime of the document
mtime = self.all_docs[docname]
newmtime = path.getmtime(self.doc2path(docname))
@@ -455,12 +551,12 @@ class BuildEnvironment:
return added, changed, removed
def update(self, config, srcdir, doctreedir, app=None):
- """
- (Re-)read all files new or changed since last update. Returns a
- summary, the total count of documents to reread and an iterator that
- yields docnames as it processes them. Store all environment docnames in
- the canonical format (ie using SEP as a separator in place of
- os.path.sep).
+ """(Re-)read all files new or changed since last update.
+
+ Returns a summary, the total count of documents to reread and an
+ iterator that yields docnames as it processes them. Store all
+ environment docnames in the canonical format (ie using SEP as a
+ separator in place of os.path.sep).
"""
config_changed = False
if self.config is None:
@@ -491,10 +587,15 @@ class BuildEnvironment:
added, changed, removed = self.get_outdated_files(config_changed)
+ # allow user intervention as well
+ for docs in app.emit('env-get-outdated', self, added, changed, removed):
+ changed.update(set(docs) & self.found_docs)
+
# if files were added or removed, all documents with globbed toctrees
# must be reread
if added or removed:
- changed.update(self.glob_toctrees)
+ # ... but not those that already were removed
+ changed.update(self.glob_toctrees & self.found_docs)
msg += '%s added, %s changed, %s removed' % (len(added), len(changed),
len(removed))
@@ -509,8 +610,7 @@ class BuildEnvironment:
self.clear_doc(docname)
# read all new and changed files
- to_read = added | changed
- for docname in sorted(to_read):
+ for docname in sorted(added | changed):
yield docname
self.read_doc(docname, app=app)
@@ -591,8 +691,8 @@ class BuildEnvironment:
roles.role = role
def read_doc(self, docname, src_path=None, save_parsed=True, app=None):
- """
- Parse a file and add/update inventory entries for the doctree.
+ """Parse a file and add/update inventory entries for the doctree.
+
If srcpath is given, read from a different source file.
"""
# remove all inventory entries for that file
@@ -627,7 +727,14 @@ class BuildEnvironment:
codecs.register_error('sphinx', self.warn_and_replace)
class SphinxSourceClass(FileInput):
+ def __init__(self_, *args, **kwds):
+ # don't call sys.exit() on IOErrors
+ kwds['handle_io_errors'] = False
+ FileInput.__init__(self_, *args, **kwds)
+
def decode(self_, data):
+ if isinstance(data, unicode):
+ return data
return data.decode(self_.encoding, 'sphinx')
def read(self_):
@@ -649,7 +756,7 @@ class BuildEnvironment:
destination_class=NullOutput)
pub.set_components(None, 'restructuredtext', None)
pub.process_programmatic_settings(None, self.settings, None)
- pub.set_source(None, src_path)
+ pub.set_source(None, src_path.encode(fs_encoding))
pub.set_destination(None, None)
try:
pub.publish()
@@ -678,6 +785,25 @@ class BuildEnvironment:
# store time of build, for outdated files detection
self.all_docs[docname] = time.time()
+ if self.versioning_condition:
+ # get old doctree
+ try:
+ f = open(self.doc2path(docname,
+ self.doctreedir, '.doctree'), 'rb')
+ try:
+ old_doctree = pickle.load(f)
+ finally:
+ f.close()
+ except EnvironmentError:
+ old_doctree = None
+
+ # add uids for versioning
+ if old_doctree is None:
+ list(add_uids(doctree, self.versioning_condition))
+ else:
+ list(merge_doctrees(
+ old_doctree, doctree, self.versioning_condition))
+
# make it picklable
doctree.reporter = None
doctree.transformer = None
@@ -733,6 +859,9 @@ class BuildEnvironment:
def note_dependency(self, filename):
self.dependencies.setdefault(self.docname, set()).add(filename)
+ def note_reread(self):
+ self.reread_always.add(self.docname)
+
def note_versionchange(self, type, version, node, lineno):
self.versionchanges.setdefault(version, []).append(
(type, self.temp_data['docname'], lineno,
@@ -742,18 +871,15 @@ class BuildEnvironment:
# post-processing of read doctrees
def filter_messages(self, doctree):
- """
- Filter system messages from a doctree.
- """
+ """Filter system messages from a doctree."""
filterlevel = self.config.keep_warnings and 2 or 5
for node in doctree.traverse(nodes.system_message):
if node['level'] < filterlevel:
node.parent.remove(node)
+
def process_dependencies(self, docname, doctree):
- """
- Process docutils-generated dependency info.
- """
+ """Process docutils-generated dependency info."""
cwd = os.getcwd()
frompath = path.join(path.normpath(self.srcdir), 'dummy')
deps = doctree.settings.record_dependencies
@@ -767,30 +893,20 @@ class BuildEnvironment:
self.dependencies.setdefault(docname, set()).add(relpath)
def process_downloads(self, docname, doctree):
- """
- Process downloadable file paths.
- """
- docdir = path.dirname(self.doc2path(docname, base=None))
+ """Process downloadable file paths. """
for node in doctree.traverse(addnodes.download_reference):
targetname = node['reftarget']
- if targetname.startswith('/') or targetname.startswith(os.sep):
- # absolute
- filepath = targetname[1:]
- else:
- filepath = path.normpath(path.join(docdir, node['reftarget']))
- self.dependencies.setdefault(docname, set()).add(filepath)
- if not os.access(path.join(self.srcdir, filepath), os.R_OK):
- self.warn(docname, 'download file not readable: %s' % filepath,
+ rel_filename, filename = self.relfn2path(targetname, docname)
+ self.dependencies.setdefault(docname, set()).add(rel_filename)
+ if not os.access(filename, os.R_OK):
+ self.warn(docname, 'download file not readable: %s' % filename,
getattr(node, 'line', None))
continue
- uniquename = self.dlfiles.add_file(docname, filepath)
+ uniquename = self.dlfiles.add_file(docname, filename)
node['filename'] = uniquename
def process_images(self, docname, doctree):
- """
- Process and rewrite image URIs.
- """
- docdir = path.dirname(self.doc2path(docname, base=None))
+ """Process and rewrite image URIs."""
for node in doctree.traverse(nodes.image):
# Map the mimetype to the corresponding image. The writer may
# choose the best image from these candidates. The special key * is
@@ -803,16 +919,11 @@ class BuildEnvironment:
node.line)
candidates['?'] = imguri
continue
- # imgpath is the image path *from srcdir*
- if imguri.startswith('/') or imguri.startswith(os.sep):
- # absolute path (= relative to srcdir)
- imgpath = path.normpath(imguri[1:])
- else:
- imgpath = path.normpath(path.join(docdir, imguri))
+ rel_imgpath, full_imgpath = self.relfn2path(imguri, docname)
# set imgpath as default URI
- node['uri'] = imgpath
- if imgpath.endswith(os.extsep + '*'):
- for filename in glob(path.join(self.srcdir, imgpath)):
+ node['uri'] = rel_imgpath
+ if rel_imgpath.endswith(os.extsep + '*'):
+ for filename in glob(full_imgpath):
new_imgpath = relative_path(self.srcdir, filename)
if filename.lower().endswith('.pdf'):
candidates['application/pdf'] = new_imgpath
@@ -832,7 +943,7 @@ class BuildEnvironment:
if imgtype:
candidates['image/' + imgtype] = new_imgpath
else:
- candidates['*'] = imgpath
+ candidates['*'] = rel_imgpath
# map image paths to unique image names (so that they can be put
# into a single directory)
for imgpath in candidates.itervalues():
@@ -844,8 +955,8 @@ class BuildEnvironment:
self.images.add_file(docname, imgpath)
def process_metadata(self, docname, doctree):
- """
- Process the docinfo part of the doctree as metadata.
+ """Process the docinfo part of the doctree as metadata.
+
Keep processing minimal -- just return what docutils says.
"""
self.metadata[docname] = md = {}
@@ -930,8 +1041,7 @@ class BuildEnvironment:
item.replace(para, compact_para)
def create_title_from(self, docname, document):
- """
- Add a title node to the document (just copy the first section title),
+ """Add a title node to the document (just copy the first section title),
and store that title in the environment.
"""
titlenode = nodes.title()
@@ -969,7 +1079,8 @@ class BuildEnvironment:
def note_toctree(self, docname, toctreenode):
"""Note a TOC tree directive in a document and gather information about
- file relations from it."""
+ file relations from it.
+ """
if toctreenode['glob']:
self.glob_toctrees.add(docname)
if toctreenode.get('numbered'):
@@ -1007,6 +1118,12 @@ class BuildEnvironment:
# find all toctree nodes in this section and add them
# to the toc (just copying the toctree node which is then
# resolved in self.get_and_resolve_doctree)
+ if isinstance(sectionnode, addnodes.only):
+ onlynode = addnodes.only(expr=sectionnode['expr'])
+ blist = build_toc(sectionnode, depth)
+ if blist:
+ onlynode += blist.children
+ entries.append(onlynode)
if not isinstance(sectionnode, nodes.section):
for toctreenode in traverse_in_section(sectionnode,
addnodes.toctree):
@@ -1028,6 +1145,8 @@ class BuildEnvironment:
else:
anchorname = '#' + sectionnode['ids'][0]
numentries[0] += 1
+ # make these nodes:
+ # list_item -> compact_paragraph -> reference
reference = nodes.reference(
'', '', internal=True, refuri=docname,
anchorname=anchorname, *nodetext)
@@ -1046,9 +1165,10 @@ class BuildEnvironment:
self.tocs[docname] = nodes.bullet_list('')
self.toc_num_entries[docname] = numentries[0]
- def get_toc_for(self, docname):
+ def get_toc_for(self, docname, builder):
"""Return a TOC nodetree -- for use on the same page only!"""
toc = self.tocs[docname].deepcopy()
+ self.process_only_nodes(toc, builder, docname)
for node in toc.traverse(nodes.reference):
node['refuri'] = node['anchorname'] or '#'
return toc
@@ -1075,7 +1195,9 @@ class BuildEnvironment:
def get_domain(self, domainname):
"""Return the domain instance with the specified name.
- Raises an ExtensionError if the domain is not registered."""
+
+ Raises an ExtensionError if the domain is not registered.
+ """
try:
return self.domains[domainname]
except KeyError:
@@ -1100,7 +1222,8 @@ class BuildEnvironment:
def get_and_resolve_doctree(self, docname, builder, doctree=None,
prune_toctrees=True):
"""Read the doctree from the pickle, resolve cross-references and
- toctrees and return it."""
+ toctrees and return it.
+ """
if doctree is None:
doctree = self.get_doctree(docname)
@@ -1120,8 +1243,7 @@ class BuildEnvironment:
def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0,
titles_only=False, collapse=False, includehidden=False):
- """
- Resolve a *toctree* node into individual bullet lists with titles
+ """Resolve a *toctree* node into individual bullet lists with titles
as items, returning None (if no containing titles are found) or
a new node.
@@ -1137,32 +1259,62 @@ class BuildEnvironment:
def _walk_depth(node, depth, maxdepth):
"""Utility: Cut a TOC at a specified depth."""
+
+ # For reading this function, it is useful to keep in mind the node
+ # structure of a toctree (using HTML-like node names for brevity):
+ #
+ #
+ #
+ #
+ #
+ # ...
+ #
+ #
+ #
+
for subnode in node.children[:]:
if isinstance(subnode, (addnodes.compact_paragraph,
nodes.list_item)):
+ # for and
, just indicate the depth level and
+ # recurse to children
subnode['classes'].append('toctree-l%d' % (depth-1))
_walk_depth(subnode, depth, maxdepth)
+
elif isinstance(subnode, nodes.bullet_list):
+ # for , determine if the depth is too large or if the
+ # entry is to be collapsed
if maxdepth > 0 and depth > maxdepth:
subnode.parent.replace(subnode, [])
else:
+ # to find out what to collapse, *first* walk subitems,
+ # since that determines which children point to the
+ # current page
_walk_depth(subnode, depth+1, maxdepth)
-
# cull sub-entries whose parents aren't 'current'
- if (collapse and
- depth > 1 and
- 'current' not in subnode.parent['classes']):
+ if (collapse and depth > 1 and
+ 'iscurrent' not in subnode.parent):
subnode.parent.remove(subnode)
elif isinstance(subnode, nodes.reference):
- # identify the toc entry pointing to the current document
- if subnode['refuri'] == docname and \
- not subnode['anchorname']:
- # tag the whole branch as 'current'
- p = subnode
- while p:
- p['classes'].append('current')
- p = p.parent
+ # for , identify which entries point to the current
+ # document and therefore may not be collapsed
+ if subnode['refuri'] == docname:
+ if not subnode['anchorname']:
+ # give the whole branch a 'current' class
+ # (useful for styling it differently)
+ branchnode = subnode
+ while branchnode:
+ branchnode['classes'].append('current')
+ branchnode = branchnode.parent
+ # mark the list_item as "on current page"
+ if subnode.parent.parent.get('iscurrent'):
+ # but only if it's not already done
+ return
+ while subnode:
+ subnode['iscurrent'] = True
+ subnode = subnode.parent
def _entries_from_toctree(toctreenode, separate=False, subtree=False):
"""Return TOC entries for a toctree node."""
@@ -1193,6 +1345,7 @@ class BuildEnvironment:
toc = nodes.bullet_list('', item)
else:
toc = self.tocs[ref].deepcopy()
+ self.process_only_nodes(toc, builder, ref)
if title and toc.children and len(toc.children) == 1:
child = toc.children[0]
for refnode in child.traverse(nodes.reference):
@@ -1204,11 +1357,12 @@ class BuildEnvironment:
self.warn(docname,
'toctree contains reference to document '
'%r that doesn\'t have a title: no link '
- 'will be generated' % ref)
+ 'will be generated' % ref, toctreenode.line)
except KeyError:
# this is raised if the included file does not exist
self.warn(docname, 'toctree contains reference to '
- 'nonexisting document %r' % ref)
+ 'nonexisting document %r' % ref,
+ toctreenode.line)
else:
# if titles_only is given, only keep the main title and
# sub-toctrees
@@ -1271,10 +1425,10 @@ class BuildEnvironment:
typ = node['reftype']
target = node['reftarget']
refdoc = node.get('refdoc', fromdocname)
- warned = False
+ domain = None
try:
- if node.has_key('refdomain') and node['refdomain']:
+ if 'refdomain' in node and node['refdomain']:
# let the domain try to resolve the reference
try:
domain = self.domains[node['refdomain']]
@@ -1287,11 +1441,7 @@ class BuildEnvironment:
# directly reference to document by source name;
# can be absolute or relative
docname = docname_join(refdoc, target)
- if docname not in self.all_docs:
- self.warn(refdoc,
- 'unknown document: %s' % docname, node.line)
- warned = True
- else:
+ if docname in self.all_docs:
if node['refexplicit']:
# reference with explicit title
caption = node.astext()
@@ -1304,11 +1454,7 @@ class BuildEnvironment:
newnode.append(innernode)
elif typ == 'citation':
docname, labelid = self.citations.get(target, ('', ''))
- if not docname:
- self.warn(refdoc,
- 'citation not found: %s' % target, node.line)
- warned = True
- else:
+ if docname:
newnode = make_refnode(builder, fromdocname, docname,
labelid, contnode)
# no new node found? try the missing-reference event
@@ -1316,16 +1462,44 @@ class BuildEnvironment:
newnode = builder.app.emit_firstresult(
'missing-reference', self, node, contnode)
# still not found? warn if in nit-picky mode
- if newnode is None and not warned and self.config.nitpicky:
- self.warn(refdoc,
- 'reference target not found: %stype %s, target %s'
- % (node.get('refdomain') and
- 'domain %s, ' % node['refdomain'] or '',
- typ, target))
+ if newnode is None:
+ self._warn_missing_reference(
+ fromdocname, typ, target, node, domain)
except NoUri:
newnode = contnode
node.replace_self(newnode or contnode)
+ # remove only-nodes that do not belong to our builder
+ self.process_only_nodes(doctree, builder, fromdocname)
+
+ # allow custom references to be resolved
+ builder.app.emit('doctree-resolved', doctree, fromdocname)
+
+ def _warn_missing_reference(self, fromdoc, typ, target, node, domain):
+ warn = node.get('refwarn')
+ if self.config.nitpicky:
+ warn = True
+ if self._nitpick_ignore:
+ dtype = domain and '%s:%s' % (domain.name, typ) or typ
+ if (dtype, target) in self._nitpick_ignore:
+ warn = False
+ if not warn:
+ return
+ refdoc = node.get('refdoc', fromdoc)
+ if domain and typ in domain.dangling_warnings:
+ msg = domain.dangling_warnings[typ]
+ elif typ == 'doc':
+ msg = 'unknown document: %(target)s'
+ elif typ == 'citation':
+ msg = 'citation not found: %(target)s'
+ elif node.get('refdomain', 'std') != 'std':
+ msg = '%s:%s reference target not found: %%(target)s' % \
+ (node['refdomain'], typ)
+ else:
+ msg = '%s reference target not found: %%(target)s' % typ
+ self.warn(refdoc, msg % {'target': target}, node.line)
+
+ def process_only_nodes(self, doctree, builder, fromdocname=None):
for node in doctree.traverse(addnodes.only):
try:
ret = builder.tags.eval_condition(node['expr'])
@@ -1337,10 +1511,9 @@ class BuildEnvironment:
if ret:
node.replace_self(node.children)
else:
- node.replace_self([])
-
- # allow custom references to be resolved
- builder.app.emit('doctree-resolved', doctree, fromdocname)
+ # replacing by [] would result in an "Losing ids" exception
+ # if there is a target node before the only node
+ node.replace_self(nodes.comment())
def assign_section_numbers(self):
"""Assign a section number to each heading under a numbered toctree."""
@@ -1350,149 +1523,160 @@ class BuildEnvironment:
old_secnumbers = self.toc_secnumbers
self.toc_secnumbers = {}
- def _walk_toc(node, secnums, titlenode=None):
+ def _walk_toc(node, secnums, depth, titlenode=None):
# titlenode is the title of the document, it will get assigned a
# secnumber too, so that it shows up in next/prev/parent rellinks
for subnode in node.children:
if isinstance(subnode, nodes.bullet_list):
numstack.append(0)
- _walk_toc(subnode, secnums, titlenode)
+ _walk_toc(subnode, secnums, depth-1, titlenode)
numstack.pop()
titlenode = None
elif isinstance(subnode, nodes.list_item):
- _walk_toc(subnode, secnums, titlenode)
+ _walk_toc(subnode, secnums, depth, titlenode)
+ titlenode = None
+ elif isinstance(subnode, addnodes.only):
+ # at this stage we don't know yet which sections are going
+ # to be included; just include all of them, even if it leads
+ # to gaps in the numbering
+ _walk_toc(subnode, secnums, depth, titlenode)
titlenode = None
elif isinstance(subnode, addnodes.compact_paragraph):
numstack[-1] += 1
+ if depth > 0:
+ number = tuple(numstack)
+ else:
+ number = None
secnums[subnode[0]['anchorname']] = \
- subnode[0]['secnumber'] = tuple(numstack)
+ subnode[0]['secnumber'] = number
if titlenode:
- titlenode['secnumber'] = tuple(numstack)
+ titlenode['secnumber'] = number
titlenode = None
elif isinstance(subnode, addnodes.toctree):
- _walk_toctree(subnode)
+ _walk_toctree(subnode, depth)
- def _walk_toctree(toctreenode):
+ def _walk_toctree(toctreenode, depth):
+ if depth == 0:
+ return
for (title, ref) in toctreenode['entries']:
if url_re.match(ref) or ref == 'self':
# don't mess with those
continue
if ref in self.tocs:
secnums = self.toc_secnumbers[ref] = {}
- _walk_toc(self.tocs[ref], secnums, self.titles.get(ref))
+ _walk_toc(self.tocs[ref], secnums, depth,
+ self.titles.get(ref))
if secnums != old_secnumbers.get(ref):
rewrite_needed.append(ref)
for docname in self.numbered_toctrees:
doctree = self.get_doctree(docname)
for toctreenode in doctree.traverse(addnodes.toctree):
- if toctreenode.get('numbered'):
+ depth = toctreenode.get('numbered', 0)
+ if depth:
# every numbered toctree gets new numbering
numstack = [0]
- _walk_toctree(toctreenode)
+ _walk_toctree(toctreenode, depth)
return rewrite_needed
- def create_index(self, builder, _fixre=re.compile(r'(.*) ([(][^()]*[)])')):
+ def create_index(self, builder, group_entries=True,
+ _fixre=re.compile(r'(.*) ([(][^()]*[)])')):
"""Create the real index from the collected index entries."""
new = {}
- def add_entry(word, subword, dic=new):
+ def add_entry(word, subword, link=True, dic=new):
entry = dic.get(word)
if not entry:
dic[word] = entry = [[], {}]
if subword:
- add_entry(subword, '', dic=entry[1])
- else:
+ add_entry(subword, '', link=link, dic=entry[1])
+ elif link:
try:
- entry[0].append(builder.get_relative_uri('genindex', fn)
- + '#' + tid)
+ uri = builder.get_relative_uri('genindex', fn) + '#' + tid
except NoUri:
pass
+ else:
+ entry[0].append((main, uri))
for fn, entries in self.indexentries.iteritems():
# new entry types must be listed in directives/other.py!
- for type, value, tid, alias in entries:
- if type == 'single':
- try:
- entry, subentry = value.split(';', 1)
- except ValueError:
- entry, subentry = value, ''
- if not entry:
- self.warn(fn, 'invalid index entry %r' % value)
- continue
- add_entry(entry.strip(), subentry.strip())
- elif type == 'pair':
- try:
- first, second = map(lambda x: x.strip(),
- value.split(';', 1))
- if not first or not second:
- raise ValueError
- except ValueError:
- self.warn(fn, 'invalid pair index entry %r' % value)
- continue
- add_entry(first, second)
- add_entry(second, first)
- elif type == 'triple':
- try:
- first, second, third = map(lambda x: x.strip(),
- value.split(';', 2))
- if not first or not second or not third:
- raise ValueError
- except ValueError:
- self.warn(fn, 'invalid triple index entry %r' % value)
- continue
- add_entry(first, second+' '+third)
- add_entry(second, third+', '+first)
- add_entry(third, first+' '+second)
- else:
- self.warn(fn, 'unknown index entry type %r' % type)
+ for type, value, tid, main in entries:
+ try:
+ if type == 'single':
+ try:
+ entry, subentry = split_into(2, 'single', value)
+ except ValueError:
+ entry, = split_into(1, 'single', value)
+ subentry = ''
+ add_entry(entry, subentry)
+ elif type == 'pair':
+ first, second = split_into(2, 'pair', value)
+ add_entry(first, second)
+ add_entry(second, first)
+ elif type == 'triple':
+ first, second, third = split_into(3, 'triple', value)
+ add_entry(first, second+' '+third)
+ add_entry(second, third+', '+first)
+ add_entry(third, first+' '+second)
+ elif type == 'see':
+ first, second = split_into(2, 'see', value)
+ add_entry(first, _('see %s') % second, link=False)
+ elif type == 'seealso':
+ first, second = split_into(2, 'see', value)
+ add_entry(first, _('see also %s') % second, link=False)
+ else:
+ self.warn(fn, 'unknown index entry type %r' % type)
+ except ValueError, err:
+ self.warn(fn, str(err))
# sort the index entries; put all symbols at the front, even those
# following the letters in ASCII, this is where the chr(127) comes from
def keyfunc(entry, lcletters=string.ascii_lowercase + '_'):
- lckey = entry[0].lower()
+ lckey = unicodedata.normalize('NFD', entry[0].lower())
if lckey[0:1] in lcletters:
return chr(127) + lckey
return lckey
newlist = new.items()
newlist.sort(key=keyfunc)
- # fixup entries: transform
- # func() (in module foo)
- # func() (in module bar)
- # into
- # func()
- # (in module foo)
- # (in module bar)
- oldkey = ''
- oldsubitems = None
- i = 0
- while i < len(newlist):
- key, (targets, subitems) = newlist[i]
- # cannot move if it has subitems; structure gets too complex
- if not subitems:
- m = _fixre.match(key)
- if m:
- if oldkey == m.group(1):
- # prefixes match: add entry as subitem of the
- # previous entry
- oldsubitems.setdefault(m.group(2), [[], {}])[0].\
- extend(targets)
- del newlist[i]
- continue
- oldkey = m.group(1)
- else:
- oldkey = key
- oldsubitems = subitems
- i += 1
+ if group_entries:
+ # fixup entries: transform
+ # func() (in module foo)
+ # func() (in module bar)
+ # into
+ # func()
+ # (in module foo)
+ # (in module bar)
+ oldkey = ''
+ oldsubitems = None
+ i = 0
+ while i < len(newlist):
+ key, (targets, subitems) = newlist[i]
+ # cannot move if it has subitems; structure gets too complex
+ if not subitems:
+ m = _fixre.match(key)
+ if m:
+ if oldkey == m.group(1):
+ # prefixes match: add entry as subitem of the
+ # previous entry
+ oldsubitems.setdefault(m.group(2), [[], {}])[0].\
+ extend(targets)
+ del newlist[i]
+ continue
+ oldkey = m.group(1)
+ else:
+ oldkey = key
+ oldsubitems = subitems
+ i += 1
# group the entries by letter
- def keyfunc2((k, v), letters=string.ascii_uppercase + '_'):
+ def keyfunc2(item, letters=string.ascii_uppercase + '_'):
# hack: mutating the subitems dicts to a list in the keyfunc
+ k, v = item
v[1] = sorted((si, se) for (si, (se, void)) in v[1].iteritems())
# now calculate the key
- letter = k[0].upper()
+ letter = unicodedata.normalize('NFD', k[0])[0].upper()
if letter in letters:
return letter
else:
@@ -1548,7 +1732,6 @@ class BuildEnvironment:
def check_consistency(self):
"""Do consistency checks."""
-
for docname in sorted(self.all_docs):
if docname not in self.files_to_rebuild:
if docname == self.config.master_doc:
diff --git a/sphinx/errors.py b/sphinx/errors.py
index b614d9ab0..bfc2be378 100644
--- a/sphinx/errors.py
+++ b/sphinx/errors.py
@@ -6,7 +6,7 @@
Contains SphinxError and a few subclasses (in an extra module to avoid
circular import problems).
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
diff --git a/sphinx/ext/__init__.py b/sphinx/ext/__init__.py
index 31b6f2aef..07269dc08 100644
--- a/sphinx/ext/__init__.py
+++ b/sphinx/ext/__init__.py
@@ -5,6 +5,6 @@
Contains Sphinx features not activated by default.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
diff --git a/sphinx/ext/autodoc.py b/sphinx/ext/autodoc.py
index adf08bcde..e00f6fd2c 100644
--- a/sphinx/ext/autodoc.py
+++ b/sphinx/ext/autodoc.py
@@ -7,14 +7,15 @@
the doctree, thus avoiding duplication between docstrings and documentation
for those who like elaborate docstrings.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import re
import sys
import inspect
-from types import FunctionType, BuiltinFunctionType, MethodType, ClassType
+import traceback
+from types import FunctionType, BuiltinFunctionType, MethodType
from docutils import nodes
from docutils.utils import assemble_option_dict
@@ -26,16 +27,12 @@ from sphinx.pycode import ModuleAnalyzer, PycodeError
from sphinx.application import ExtensionError
from sphinx.util.nodes import nested_parse_with_titles
from sphinx.util.compat import Directive
-from sphinx.util.inspect import isdescriptor, safe_getmembers, safe_getattr
+from sphinx.util.inspect import getargspec, isdescriptor, safe_getmembers, \
+ safe_getattr, safe_repr
+from sphinx.util.pycompat import base_exception, class_types
from sphinx.util.docstrings import prepare_docstring
-try:
- base_exception = BaseException
-except NameError:
- base_exception = Exception
-
-
#: extended signature RE: with explicit module name separated by ::
py_ext_sig_re = re.compile(
r'''^ ([\w.]+::)? # explicit module name
@@ -90,7 +87,8 @@ def members_set_option(arg):
def bool_option(arg):
"""Used to convert flag options to auto directives. (Instead of
- directives.flag(), which returns None.)"""
+ directives.flag(), which returns None).
+ """
return True
@@ -107,7 +105,7 @@ class AutodocReporter(object):
return getattr(self.reporter, name)
def system_message(self, level, message, *children, **kwargs):
- if 'line' in kwargs:
+ if 'line' in kwargs and 'source' not in kwargs:
try:
source, line = self.viewlist.items[kwargs['line']]
except IndexError:
@@ -138,8 +136,7 @@ class AutodocReporter(object):
# Some useful event listener factories for autodoc-process-docstring.
def cut_lines(pre, post=0, what=None):
- """
- Return a listener that removes the first *pre* and last *post*
+ """Return a listener that removes the first *pre* and last *post*
lines of every docstring. If *what* is a sequence of strings,
only docstrings of a type in *what* will be processed.
@@ -165,9 +162,8 @@ def cut_lines(pre, post=0, what=None):
return process
def between(marker, what=None, keepempty=False, exclude=False):
- """
- Return a listener that either keeps, or if *exclude* is True excludes, lines
- between lines that match the *marker* regular expression. If no line
+ """Return a listener that either keeps, or if *exclude* is True excludes,
+ lines between lines that match the *marker* regular expression. If no line
matches, the resulting docstring would be empty, so no change will be made
unless *keepempty* is true.
@@ -222,6 +218,8 @@ class Documenter(object):
priority = 0
#: order if autodoc_member_order is set to 'groupwise'
member_order = 0
+ #: true if the generated content may contain titles
+ titles_allowed = False
option_spec = {'noindex': bool_option}
@@ -256,6 +254,9 @@ class Documenter(object):
self.retann = None
# the object to document (set after import_object succeeds)
self.object = None
+ self.object_name = None
+ # the parent/owner of the object to document
+ self.parent = None
# the module analyzer to get at attribute docs, or None
self.analyzer = None
@@ -264,8 +265,7 @@ class Documenter(object):
self.directive.result.append(self.indent + line, source, *lineno)
def resolve_name(self, modname, parents, path, base):
- """
- Resolve the module and name of the object to document given by the
+ """Resolve the module and name of the object to document given by the
arguments and the current module/class.
Must return a pair of the module name and a chain of attributes; for
@@ -275,8 +275,7 @@ class Documenter(object):
raise NotImplementedError('must be implemented in subclasses')
def parse_name(self):
- """
- Determine what module to import and what attribute to document.
+ """Determine what module to import and what attribute to document.
Returns True and sets *self.modname*, *self.objpath*, *self.fullname*,
*self.args* and *self.retann* if parsing and resolving was successful.
@@ -313,38 +312,44 @@ class Documenter(object):
return True
def import_object(self):
- """
- Import the object given by *self.modname* and *self.objpath* and sets
+ """Import the object given by *self.modname* and *self.objpath* and set
it as *self.object*.
Returns True if successful, False if an error occurred.
"""
try:
__import__(self.modname)
+ parent = None
obj = self.module = sys.modules[self.modname]
for part in self.objpath:
+ parent = obj
obj = self.get_attr(obj, part)
+ self.object_name = part
+ self.parent = parent
self.object = obj
return True
# this used to only catch SyntaxError, ImportError and AttributeError,
# but importing modules with side effects can raise all kinds of errors
except Exception, err:
+ if self.env.app and not self.env.app.quiet:
+ self.env.app.info(traceback.format_exc().rstrip())
self.directive.warn(
'autodoc can\'t import/find %s %r, it reported error: '
'"%s", please check your spelling and sys.path' %
(self.objtype, str(self.fullname), err))
+ self.env.note_reread()
return False
def get_real_modname(self):
- """
- Get the real module name of an object to document. (It can differ
- from the name of the module through which the object was imported.)
+ """Get the real module name of an object to document.
+
+ It can differ from the name of the module through which the object was
+ imported.
"""
return self.get_attr(self.object, '__module__', None) or self.modname
def check_module(self):
- """
- Check if *self.object* is really defined in the module given by
+ """Check if *self.object* is really defined in the module given by
*self.modname*.
"""
modname = self.get_attr(self.object, '__module__', None)
@@ -353,25 +358,26 @@ class Documenter(object):
return True
def format_args(self):
- """
- Format the argument signature of *self.object*. Should return None if
- the object does not have a signature.
+ """Format the argument signature of *self.object*.
+
+ Should return None if the object does not have a signature.
"""
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).
+ """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.
+ """Format the signature (arguments and return annotation) of the object.
+
Let the user process it via the ``autodoc-process-signature`` event.
"""
if self.args is not None:
@@ -413,13 +419,16 @@ class Documenter(object):
# etc. don't support a prepended module name
self.add_line(u' :module: %s' % self.modname, '')
- def get_doc(self, encoding=None):
+ def get_doc(self, encoding=None, ignore=1):
"""Decode and return lines of the docstring(s) for the object."""
docstring = self.get_attr(self.object, '__doc__', None)
- if docstring:
- # make sure we have Unicode docstrings, then sanitize and split
- # into lines
- return [prepare_docstring(force_decode(docstring, encoding))]
+ # make sure we have Unicode docstrings, then sanitize and split
+ # into lines
+ if isinstance(docstring, unicode):
+ return [prepare_docstring(docstring, ignore)]
+ elif docstring:
+ return [prepare_docstring(force_decode(docstring, encoding),
+ ignore)]
return []
def process_doc(self, docstrings):
@@ -438,8 +447,11 @@ class Documenter(object):
# set sourcename and add content from attribute documentation
if self.analyzer:
# prevent encoding errors when the file name is non-ASCII
- filename = unicode(self.analyzer.srcname,
- sys.getfilesystemencoding(), 'replace')
+ if not isinstance(self.analyzer.srcname, unicode):
+ filename = unicode(self.analyzer.srcname,
+ sys.getfilesystemencoding(), 'replace')
+ else:
+ filename = self.analyzer.srcname
sourcename = u'%s:docstring of %s' % (filename, self.fullname)
attr_docs = self.analyzer.find_attr_docs()
@@ -457,6 +469,11 @@ class Documenter(object):
if not no_docstring:
encoding = self.analyzer and self.analyzer.encoding
docstrings = self.get_doc(encoding)
+ if not docstrings:
+ # append at least a dummy docstring, so that the event
+ # autodoc-process-docstring is fired and can add some
+ # content if desired
+ docstrings.append([])
for i, line in enumerate(self.process_doc(docstrings)):
self.add_line(line, sourcename, i)
@@ -466,8 +483,7 @@ class Documenter(object):
self.add_line(line, src[0], src[1])
def get_object_members(self, want_all):
- """
- Return `(members_check_module, members)` where `members` is a
+ """Return `(members_check_module, members)` where `members` is a
list of `(membername, member)` pairs of the members of *self.object*.
If *want_all* is True, return all members. Else, only return those
@@ -511,11 +527,15 @@ class Documenter(object):
return False, sorted(members)
def filter_members(self, members, want_all):
- """
- Filter the given member list: members are skipped if
+ """Filter the given member list.
- - they are private (except if given explicitly)
- - they are undocumented (except if undoc-members is given)
+ Members are skipped if
+
+ - they are private (except if given explicitly or the private-members
+ option is set)
+ - they are special methods (except if given explicitly or the
+ special-members option is set)
+ - they are undocumented (except if the undoc-members option is set)
The user can override the skipping decision by connecting to the
``autodoc-skip-member`` event.
@@ -535,17 +555,27 @@ class Documenter(object):
# if isattr is True, the member is documented as an attribute
isattr = False
- if want_all and membername.startswith('_'):
+ if want_all and membername.startswith('__') and \
+ membername.endswith('__') and len(membername) > 4:
+ # special __methods__
+ skip = not self.options.special_members
+ elif want_all and membername.startswith('_'):
# ignore members whose name starts with _ by default
- skip = True
+ skip = not self.options.private_members
elif (namespace, membername) in attr_docs:
# keep documented attributes
skip = False
isattr = True
else:
- # ignore undocumented members if :undoc-members:
- # is not given
+ # ignore undocumented members if :undoc-members: is not given
doc = self.get_attr(member, '__doc__', None)
+ # if the member __doc__ is the same as self's __doc__, it's just
+ # inherited and therefore not the member's doc
+ cls = self.get_attr(member, '__class__', None)
+ if cls:
+ cls_doc = self.get_attr(cls, '__doc__', None)
+ if cls_doc == doc:
+ doc = None
skip = not self.options.undoc_members and not doc
# give the user a chance to decide whether this member
@@ -565,9 +595,10 @@ class Documenter(object):
return ret
def document_members(self, all_members=False):
- """
- Generate reST for member documentation. If *all_members* is True,
- do all members, else those given by *self.options.members*.
+ """Generate reST for member documentation.
+
+ If *all_members* is True, do all members, else those given by
+ *self.options.members*.
"""
# set current namespace for finding members
self.env.temp_data['autodoc:module'] = self.modname
@@ -625,8 +656,8 @@ class Documenter(object):
def generate(self, more_content=None, real_modname=None,
check_module=False, all_members=False):
- """
- Generate reST for the object given by *self.name*, and possibly members.
+ """Generate reST for the object given by *self.name*, and possibly for
+ its members.
If *more_content* is given, include that content. If *real_modname* is
given, use that module name to find attribute docs. If *check_module* is
@@ -659,7 +690,7 @@ class Documenter(object):
# parse right now, to get PycodeErrors on parsing (results will
# be cached anyway)
self.analyzer.find_attr_docs()
- except PycodeError, err:
+ except PycodeError:
# no source file -- e.g. for builtin and C modules
self.analyzer = None
# at least add the module.__file__ as a dependency
@@ -676,7 +707,7 @@ class Documenter(object):
# make sure that the result starts with an empty line. This is
# necessary for some situations where another directive preprocesses
# reST and no starting newline is present
- self.add_line(u'', '')
+ self.add_line(u'', '')
# format the object's signature, if any
sig = self.format_signature()
@@ -701,6 +732,7 @@ class ModuleDocumenter(Documenter):
"""
objtype = 'module'
content_indent = u''
+ titles_allowed = True
option_spec = {
'members': members_option, 'undoc-members': bool_option,
@@ -708,6 +740,7 @@ class ModuleDocumenter(Documenter):
'show-inheritance': bool_option, 'synopsis': identity,
'platform': identity, 'deprecated': bool_option,
'member-order': identity, 'exclude-members': members_set_option,
+ 'private-members': bool_option, 'special-members': bool_option,
}
@classmethod
@@ -814,7 +847,53 @@ class ClassLevelDocumenter(Documenter):
return modname, parents + [base]
-class FunctionDocumenter(ModuleLevelDocumenter):
+class DocstringSignatureMixin(object):
+ """
+ Mixin for FunctionDocumenter and MethodDocumenter to provide the
+ feature of reading the signature from the docstring.
+ """
+
+ def _find_signature(self, encoding=None):
+ docstrings = Documenter.get_doc(self, encoding, 2)
+ if len(docstrings) != 1:
+ return
+ doclines = docstrings[0]
+ setattr(self, '__new_doclines', doclines)
+ if not doclines:
+ return
+ # match first line of docstring against signature RE
+ match = py_ext_sig_re.match(doclines[0])
+ if not match:
+ return
+ exmod, path, base, args, retann = match.groups()
+ # the base name must match ours
+ if not self.objpath or base != self.objpath[-1]:
+ return
+ # ok, now jump over remaining empty lines and set the remaining
+ # lines as the new doclines
+ i = 1
+ while i < len(doclines) and not doclines[i].strip():
+ i += 1
+ setattr(self, '__new_doclines', doclines[i:])
+ return args, retann
+
+ def get_doc(self, encoding=None, ignore=1):
+ lines = getattr(self, '__new_doclines', None)
+ if lines is not None:
+ return [lines]
+ return Documenter.get_doc(self, encoding, ignore)
+
+ def format_signature(self):
+ if self.args is None and self.env.config.autodoc_docstring_signature:
+ # only act if a signature is not explicitly given already, and if
+ # the feature is enabled
+ result = self._find_signature()
+ if result is not None:
+ self.args, self.retann = result
+ return Documenter.format_signature(self)
+
+
+class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter):
"""
Specialized Documenter subclass for functions.
"""
@@ -828,18 +907,18 @@ class FunctionDocumenter(ModuleLevelDocumenter):
def format_args(self):
if inspect.isbuiltin(self.object) or \
inspect.ismethoddescriptor(self.object):
- # can never get arguments of a C function or method
- return None
+ # cannot introspect arguments of a C function or method
+ pass
try:
- argspec = inspect.getargspec(self.object)
+ argspec = getargspec(self.object)
except TypeError:
# if a class should be documented as function (yay duck
# typing) we try to use the constructor signature as function
# signature without the first argument.
try:
- argspec = inspect.getargspec(self.object.__new__)
+ argspec = getargspec(self.object.__new__)
except TypeError:
- argspec = inspect.getargspec(self.object.__init__)
+ argspec = getargspec(self.object.__init__)
if argspec[0]:
del argspec[0][0]
args = inspect.formatargspec(*argspec)
@@ -862,11 +941,12 @@ class ClassDocumenter(ModuleLevelDocumenter):
'noindex': bool_option, 'inherited-members': bool_option,
'show-inheritance': bool_option, 'member-order': identity,
'exclude-members': members_set_option,
+ 'private-members': bool_option, 'special-members': bool_option,
}
@classmethod
def can_document_member(cls, member, membername, isattr, parent):
- return isinstance(member, (type, ClassType))
+ return isinstance(member, class_types)
def import_object(self):
ret = ModuleLevelDocumenter.import_object(self)
@@ -888,7 +968,7 @@ class ClassDocumenter(ModuleLevelDocumenter):
(inspect.ismethod(initmeth) or inspect.isfunction(initmeth)):
return None
try:
- argspec = inspect.getargspec(initmeth)
+ argspec = getargspec(initmeth)
except TypeError:
# still not possible: happens e.g. for old-style classes
# with __init__ in C
@@ -918,13 +998,13 @@ class ClassDocumenter(ModuleLevelDocumenter):
self.add_line(_(u' Bases: %s') % ', '.join(bases),
'')
- def get_doc(self, encoding=None):
+ def get_doc(self, encoding=None, ignore=1):
content = self.env.config.autoclass_content
docstrings = []
- docstring = self.get_attr(self.object, '__doc__', None)
- if docstring:
- docstrings.append(docstring)
+ attrdocstring = self.get_attr(self.object, '__doc__', None)
+ if attrdocstring:
+ docstrings.append(attrdocstring)
# for classes, what the "docstring" is can be controlled via a
# config value; the default is only the class docstring
@@ -939,9 +1019,12 @@ class ClassDocumenter(ModuleLevelDocumenter):
docstrings = [initdocstring]
else:
docstrings.append(initdocstring)
-
- return [prepare_docstring(force_decode(docstring, encoding))
- for docstring in docstrings]
+ doc = []
+ for docstring in docstrings:
+ if not isinstance(docstring, unicode):
+ docstring = force_decode(docstring, encoding)
+ doc.append(prepare_docstring(docstring))
+ return doc
def add_content(self, more_content, no_docstring=False):
if self.doc_as_attr:
@@ -972,7 +1055,7 @@ class ExceptionDocumenter(ClassDocumenter):
@classmethod
def can_document_member(cls, member, membername, isattr, parent):
- return isinstance(member, (type, ClassType)) and \
+ return isinstance(member, class_types) and \
issubclass(member, base_exception)
@@ -982,16 +1065,26 @@ class DataDocumenter(ModuleLevelDocumenter):
"""
objtype = 'data'
member_order = 40
+ priority = -10
@classmethod
def can_document_member(cls, member, membername, isattr, parent):
return isinstance(parent, ModuleDocumenter) and isattr
+ def add_directive_header(self, sig):
+ ModuleLevelDocumenter.add_directive_header(self, sig)
+ try:
+ objrepr = safe_repr(self.object)
+ except ValueError:
+ pass
+ else:
+ self.add_line(u' :annotation: = ' + objrepr, '')
+
def document_members(self, all_members=False):
pass
-class MethodDocumenter(ClassLevelDocumenter):
+class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter):
"""
Specialized Documenter subclass for methods (normal, static and class).
"""
@@ -1004,31 +1097,45 @@ class MethodDocumenter(ClassLevelDocumenter):
return inspect.isroutine(member) and \
not isinstance(parent, ModuleDocumenter)
- def import_object(self):
- ret = ClassLevelDocumenter.import_object(self)
- if isinstance(self.object, classmethod) or \
- (isinstance(self.object, MethodType) and
- self.object.im_self is not None):
- self.directivetype = 'classmethod'
- # document class and static members before ordinary ones
- self.member_order = self.member_order - 1
- elif isinstance(self.object, FunctionType) or \
- (isinstance(self.object, BuiltinFunctionType) and
- hasattr(self.object, '__self__') and
- self.object.__self__ is not None):
- self.directivetype = 'staticmethod'
- # document class and static members before ordinary ones
- self.member_order = self.member_order - 1
- else:
- self.directivetype = 'method'
- return ret
+ if sys.version_info >= (3, 0):
+ def import_object(self):
+ ret = ClassLevelDocumenter.import_object(self)
+ obj_from_parent = self.parent.__dict__.get(self.object_name)
+ if isinstance(obj_from_parent, classmethod):
+ self.directivetype = 'classmethod'
+ self.member_order = self.member_order - 1
+ elif isinstance(obj_from_parent, staticmethod):
+ self.directivetype = 'staticmethod'
+ self.member_order = self.member_order - 1
+ else:
+ self.directivetype = 'method'
+ return ret
+ else:
+ def import_object(self):
+ ret = ClassLevelDocumenter.import_object(self)
+ if isinstance(self.object, classmethod) or \
+ (isinstance(self.object, MethodType) and
+ self.object.im_self is not None):
+ self.directivetype = 'classmethod'
+ # document class and static members before ordinary ones
+ self.member_order = self.member_order - 1
+ elif isinstance(self.object, FunctionType) or \
+ (isinstance(self.object, BuiltinFunctionType) and
+ hasattr(self.object, '__self__') and
+ self.object.__self__ is not None):
+ self.directivetype = 'staticmethod'
+ # document class and static members before ordinary ones
+ self.member_order = self.member_order - 1
+ else:
+ self.directivetype = 'method'
+ return ret
def format_args(self):
if inspect.isbuiltin(self.object) or \
inspect.ismethoddescriptor(self.object):
# can never get arguments of a C function or method
return None
- argspec = inspect.getargspec(self.object)
+ argspec = getargspec(self.object)
if argspec[0] and argspec[0][0] in ('cls', 'self'):
del argspec[0][0]
return inspect.formatargspec(*argspec)
@@ -1054,12 +1161,44 @@ class AttributeDocumenter(ClassLevelDocumenter):
def can_document_member(cls, member, membername, isattr, parent):
isdatadesc = isdescriptor(member) and not \
isinstance(member, cls.method_types)
- return isdatadesc or \
- (isattr and not isinstance(parent, ModuleDocumenter))
+ return isdatadesc or (not isinstance(parent, ModuleDocumenter)
+ and not inspect.isroutine(member)
+ and not isinstance(member, class_types))
def document_members(self, all_members=False):
pass
+ def import_object(self):
+ ret = ClassLevelDocumenter.import_object(self)
+ if isdescriptor(self.object) and \
+ not isinstance(self.object, self.method_types):
+ self._datadescriptor = True
+ else:
+ # if it's not a data descriptor
+ self._datadescriptor = False
+ return ret
+
+ def get_real_modname(self):
+ return self.get_attr(self.parent or self.object, '__module__', None) \
+ or self.modname
+
+ def add_directive_header(self, sig):
+ ClassLevelDocumenter.add_directive_header(self, sig)
+ if not self._datadescriptor:
+ try:
+ objrepr = safe_repr(self.object)
+ except ValueError:
+ pass
+ else:
+ self.add_line(u' :annotation: = ' + objrepr, '')
+
+ def add_content(self, more_content, no_docstring=False):
+ if not self._datadescriptor:
+ # if it's not a data descriptor, its docstring is very probably the
+ # wrong thing to display
+ no_docstring = True
+ ClassLevelDocumenter.add_content(self, more_content, no_docstring)
+
class InstanceAttributeDocumenter(AttributeDocumenter):
"""
@@ -1082,6 +1221,7 @@ class InstanceAttributeDocumenter(AttributeDocumenter):
"""Never import anything."""
# disguise as an attribute
self.objtype = 'attribute'
+ self._datadescriptor = False
return True
def add_content(self, more_content, no_docstring=False):
@@ -1111,8 +1251,10 @@ class AutoDirective(Directive):
_special_attrgetters = {}
# flags that can be given in autodoc_default_flags
- _default_flags = set(['members', 'undoc-members', 'inherited-members',
- 'show-inheritance'])
+ _default_flags = set([
+ 'members', 'undoc-members', 'inherited-members', 'show-inheritance',
+ 'private-members', 'special-members',
+ ])
# standard docutils directive settings
has_content = True
@@ -1164,7 +1306,7 @@ class AutoDirective(Directive):
self.state.memo.reporter = AutodocReporter(self.result,
self.state.memo.reporter)
- if self.name == 'automodule':
+ if documenter.titles_allowed:
node = nodes.section()
# necessary so that the child nodes get the right source/line set
node.document = self.state.document
@@ -1202,6 +1344,7 @@ def setup(app):
app.add_config_value('autoclass_content', 'class', True)
app.add_config_value('autodoc_member_order', 'alphabetic', True)
app.add_config_value('autodoc_default_flags', [], True)
+ app.add_config_value('autodoc_docstring_signature', True, True)
app.add_event('autodoc-process-docstring')
app.add_event('autodoc-process-signature')
app.add_event('autodoc-skip-member')
diff --git a/sphinx/ext/autosummary/__init__.py b/sphinx/ext/autosummary/__init__.py
index cf67c7fb4..aad8b9f6e 100644
--- a/sphinx/ext/autosummary/__init__.py
+++ b/sphinx/ext/autosummary/__init__.py
@@ -49,7 +49,7 @@
resolved to a Python object, and otherwise it becomes simple emphasis.
This can be used as the default role to make links 'smart'.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -73,8 +73,7 @@ class autosummary_toc(nodes.comment):
pass
def process_autosummary_toc(app, doctree):
- """
- Insert items described in autosummary:: to the TOC tree, but do
+ """Insert items described in autosummary:: to the TOC tree, but do
not generate the toctree:: list.
"""
env = app.builder.env
@@ -134,27 +133,19 @@ except AttributeError:
return False
isgetsetdescriptor = ismemberdescriptor
-def get_documenter(obj):
+def get_documenter(obj, parent):
+ """Get an autodoc.Documenter class suitable for documenting the given
+ object.
"""
- Get an autodoc.Documenter class suitable for documenting the given object
- """
- import sphinx.ext.autodoc as autodoc
+ from sphinx.ext.autodoc import AutoDirective, DataDocumenter
- 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
+ classes = [cls for cls in AutoDirective._registry.values()
+ if cls.can_document_member(obj, '', False, parent)]
+ if classes:
+ classes.sort(key=lambda cls: cls.priority)
+ return classes[-1]
else:
- return autodoc.DataDocumenter
+ return DataDocumenter
# -- .. autosummary:: ----------------------------------------------------------
@@ -218,8 +209,7 @@ class Autosummary(Directive):
return self.warnings + nodes
def get_items(self, names):
- """
- Try to import the given names, and return a list of
+ """Try to import the given names, and return a list of
``[(name, signature, summary_string, real_name), ...]``.
"""
env = self.state.document.settings.env
@@ -240,7 +230,7 @@ class Autosummary(Directive):
display_name = name.split('.')[-1]
try:
- obj, real_name = import_by_name(name, prefixes=prefixes)
+ real_name, obj, parent = import_by_name(name, prefixes=prefixes)
except ImportError:
self.warn('failed to import %s' % name)
items.append((name, '', '', name))
@@ -248,7 +238,7 @@ class Autosummary(Directive):
# NB. using real_name here is important, since Documenters
# handle module prefixes slightly differently
- documenter = get_documenter(obj)(self, real_name)
+ documenter = get_documenter(obj, parent)(self, real_name)
if not documenter.parse_name():
self.warn('failed to parse name %s' % real_name)
items.append((display_name, '', '', real_name))
@@ -287,8 +277,7 @@ class Autosummary(Directive):
return items
def get_table(self, items):
- """
- Generate a proper list of table nodes for autosummary:: directive.
+ """Generate a proper list of table nodes for autosummary:: directive.
*items* is a list produced by :meth:`get_items`.
"""
@@ -351,8 +340,7 @@ def mangle_signature(sig, max_chars=30):
return u"(%s)" % sig
def limited_join(sep, items, max_chars=30, overflow_marker="..."):
- """
- Join a number of strings to one, limiting the length to *max_chars*.
+ """Join a number of strings to one, limiting the length to *max_chars*.
If the string overflows this limit, replace the last fitting item by
*overflow_marker*.
@@ -377,8 +365,7 @@ def limited_join(sep, items, max_chars=30, overflow_marker="..."):
# -- Importing items -----------------------------------------------------------
def import_by_name(name, prefixes=[None]):
- """
- Import a Python object that has the given *name*, under one of the
+ """Import a Python object that has the given *name*, under one of the
*prefixes*. The first name that succeeds is used.
"""
tried = []
@@ -388,7 +375,8 @@ def import_by_name(name, prefixes=[None]):
prefixed_name = '.'.join([prefix, name])
else:
prefixed_name = name
- return _import_by_name(prefixed_name), prefixed_name
+ obj, parent = _import_by_name(prefixed_name)
+ return prefixed_name, obj, parent
except ImportError:
tried.append(prefixed_name)
raise ImportError('no module named %s' % ' or '.join(tried))
@@ -403,7 +391,8 @@ def _import_by_name(name):
if modname:
try:
__import__(modname)
- return getattr(sys.modules[modname], name_parts[-1])
+ mod = sys.modules[modname]
+ return getattr(mod, name_parts[-1]), mod
except (ImportError, IndexError, AttributeError):
pass
@@ -421,12 +410,14 @@ def _import_by_name(name):
break
if last_j < len(name_parts):
+ parent = None
obj = sys.modules[modname]
for obj_name in name_parts[last_j:]:
+ parent = obj
obj = getattr(obj, obj_name)
- return obj
+ return obj, parent
else:
- return sys.modules[modname]
+ return sys.modules[modname], None
except (ValueError, ImportError, AttributeError, KeyError), e:
raise ImportError(*e.args)
@@ -435,8 +426,7 @@ def _import_by_name(name):
def autolink_role(typ, rawtext, etext, lineno, inliner,
options={}, content=[]):
- """
- Smart linking role.
+ """Smart linking role.
Expands to ':obj:`text`' if `text` is an object that can be imported;
otherwise expands to '*text*'.
@@ -449,7 +439,7 @@ def autolink_role(typ, rawtext, etext, lineno, inliner,
prefixes = [None]
#prefixes.insert(0, inliner.document.settings.env.currmodule)
try:
- obj, name = import_by_name(pnode['reftarget'], prefixes)
+ name, obj, parent = import_by_name(pnode['reftarget'], prefixes)
except ImportError:
content = pnode[0]
r[0][0] = nodes.emphasis(rawtext, content[0].astext(),
@@ -487,12 +477,14 @@ def setup(app):
html=(autosummary_toc_visit_html, autosummary_noop),
latex=(autosummary_noop, autosummary_noop),
text=(autosummary_noop, autosummary_noop),
- man=(autosummary_noop, autosummary_noop))
+ man=(autosummary_noop, autosummary_noop),
+ texinfo=(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),
- man=(autosummary_noop, autosummary_noop))
+ man=(autosummary_noop, autosummary_noop),
+ texinfo=(autosummary_noop, autosummary_noop))
app.add_directive('autosummary', Autosummary)
app.add_role('autolink', autolink_role)
app.connect('doctree-read', process_autosummary_toc)
diff --git a/sphinx/ext/autosummary/generate.py b/sphinx/ext/autosummary/generate.py
index 66a124d27..fecb5689a 100644
--- a/sphinx/ext/autosummary/generate.py
+++ b/sphinx/ext/autosummary/generate.py
@@ -12,11 +12,12 @@
Example Makefile rule::
generate:
- sphinx-autogen source/*.rst source/generated
+ sphinx-autogen -o source/generated source/*.rst
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
+
import os
import re
import sys
@@ -107,7 +108,7 @@ def generate_autosummary_docs(sources, output_dir=None, suffix='.rst',
ensuredir(path)
try:
- obj, name = import_by_name(name)
+ name, obj, parent = import_by_name(name)
except ImportError, e:
warn('[autosummary] failed to import %r: %s' % (name, e))
continue
@@ -123,7 +124,7 @@ def generate_autosummary_docs(sources, output_dir=None, suffix='.rst',
f = open(fn, 'w')
try:
- doc = get_documenter(obj)
+ doc = get_documenter(obj, parent)
if template_name is not None:
template = template_env.get_template(template_name)
@@ -137,7 +138,7 @@ def generate_autosummary_docs(sources, output_dir=None, suffix='.rst',
def get_members(obj, typ, include_public=[]):
items = [
name for name in dir(obj)
- if get_documenter(getattr(obj, name)).objtype == typ
+ if get_documenter(getattr(obj, name), obj).objtype == typ
]
public = [x for x in items
if x in include_public or not x.startswith('_')]
@@ -193,8 +194,8 @@ def generate_autosummary_docs(sources, output_dir=None, suffix='.rst',
# -- Finding documented entries in files ---------------------------------------
def find_autosummary_in_files(filenames):
- """
- Find out what items are documented in source/*.rst.
+ """Find out what items are documented in source/*.rst.
+
See `find_autosummary_in_lines`.
"""
documented = []
@@ -206,12 +207,12 @@ def find_autosummary_in_files(filenames):
return documented
def find_autosummary_in_docstring(name, module=None, filename=None):
- """
- Find out what items are documented in the given object's docstring.
+ """Find out what items are documented in the given object's docstring.
+
See `find_autosummary_in_lines`.
"""
try:
- obj, real_name = import_by_name(name)
+ real_name, obj, parent = import_by_name(name)
lines = pydoc.getdoc(obj).splitlines()
return find_autosummary_in_lines(lines, module=name, filename=filename)
except AttributeError:
@@ -221,8 +222,8 @@ def find_autosummary_in_docstring(name, module=None, filename=None):
return []
def find_autosummary_in_lines(lines, module=None, filename=None):
- """
- Find out what items appear in autosummary:: directives in the given lines.
+ """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
diff --git a/sphinx/ext/coverage.py b/sphinx/ext/coverage.py
index 4924d30b0..e3e3a65eb 100644
--- a/sphinx/ext/coverage.py
+++ b/sphinx/ext/coverage.py
@@ -6,7 +6,7 @@
Check Python modules and C API for coverage. Mostly written by Josip
Dzolonga for the Google Highly Open Participation contest.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -105,7 +105,8 @@ class CoverageBuilder(Builder):
output_file = path.join(self.outdir, 'c.txt')
op = open(output_file, 'w')
try:
- write_header(op, 'Undocumented C API elements', '=')
+ if self.config.coverage_write_headline:
+ write_header(op, 'Undocumented C API elements', '=')
op.write('\n')
for filename, undoc in self.c_undoc.iteritems():
@@ -120,6 +121,8 @@ class CoverageBuilder(Builder):
objects = self.env.domaindata['py']['objects']
modules = self.env.domaindata['py']['modules']
+ skip_undoc = self.config.coverage_skip_undoc_in_source
+
for mod_name in modules:
ignore = False
for exp in self.mod_ignorexps:
@@ -160,6 +163,8 @@ class CoverageBuilder(Builder):
if exp.match(name):
break
else:
+ if skip_undoc and not obj.__doc__:
+ continue
funcs.append(name)
elif inspect.isclass(obj):
for exp in self.cls_ignorexps:
@@ -167,17 +172,27 @@ class CoverageBuilder(Builder):
break
else:
if full_name not in objects:
+ if skip_undoc and not obj.__doc__:
+ continue
# not documented at all
classes[name] = []
continue
attrs = []
- for attr_name, attr in inspect.getmembers(
- obj, inspect.ismethod):
+ for attr_name in dir(obj):
+ if attr_name not in obj.__dict__:
+ continue
+ attr = getattr(obj, attr_name)
+ if not (inspect.ismethod(attr) or
+ inspect.isfunction(attr)):
+ continue
if attr_name[0] == '_':
# starts with an underscore, ignore it
continue
+ if skip_undoc and not attr.__doc__:
+ # skip methods without docstring if wished
+ continue
full_attr_name = '%s.%s' % (full_name, attr_name)
if full_attr_name not in objects:
@@ -194,8 +209,8 @@ class CoverageBuilder(Builder):
op = open(output_file, 'w')
failed = []
try:
- write_header(op, 'Undocumented Python objects', '=')
-
+ if self.config.coverage_write_headline:
+ write_header(op, 'Undocumented Python objects', '=')
keys = self.py_undoc.keys()
keys.sort()
for name in keys:
@@ -245,3 +260,5 @@ def setup(app):
app.add_config_value('coverage_c_path', [], False)
app.add_config_value('coverage_c_regexes', {}, False)
app.add_config_value('coverage_ignore_c_items', {}, False)
+ app.add_config_value('coverage_write_headline', True, False)
+ app.add_config_value('coverage_skip_undoc_in_source', False, False)
diff --git a/sphinx/ext/doctest.py b/sphinx/ext/doctest.py
index 9d681f904..2952388fe 100644
--- a/sphinx/ext/doctest.py
+++ b/sphinx/ext/doctest.py
@@ -6,7 +6,7 @@
Mimic doctest by automatically executing code snippets and checking
their results.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -56,7 +56,7 @@ class TestDirective(Directive):
test = code
code = doctestopt_re.sub('', code)
nodetype = nodes.literal_block
- if self.name == 'testsetup' or 'hide' in self.options:
+ if self.name in ('testsetup', 'testcleanup') or 'hide' in self.options:
nodetype = nodes.comment
if self.arguments:
groups = [x.strip() for x in self.arguments[0].split(',')]
@@ -86,6 +86,9 @@ class TestDirective(Directive):
class TestsetupDirective(TestDirective):
option_spec = {}
+class TestcleanupDirective(TestDirective):
+ option_spec = {}
+
class DoctestDirective(TestDirective):
option_spec = {
'hide': directives.flag,
@@ -113,6 +116,7 @@ class TestGroup(object):
self.name = name
self.setup = []
self.tests = []
+ self.cleanup = []
def add_code(self, code, prepend=False):
if code.type == 'testsetup':
@@ -120,6 +124,8 @@ class TestGroup(object):
self.setup.insert(0, code)
else:
self.setup.append(code)
+ elif code.type == 'testcleanup':
+ self.cleanup.append(code)
elif code.type == 'doctest':
self.tests.append([code])
elif code.type == 'testcode':
@@ -131,8 +137,8 @@ class TestGroup(object):
raise RuntimeError('invalid TestCode type')
def __repr__(self):
- return 'TestGroup(name=%r, setup=%r, tests=%r)' % (
- self.name, self.setup, self.tests)
+ return 'TestGroup(name=%r, setup=%r, cleanup=%r, tests=%r)' % (
+ self.name, self.setup, self.cleanup, self.tests)
class TestCode(object):
@@ -149,14 +155,14 @@ class TestCode(object):
class SphinxDocTestRunner(doctest.DocTestRunner):
def summarize(self, out, verbose=None):
- io = StringIO.StringIO()
+ string_io = StringIO.StringIO()
old_stdout = sys.stdout
- sys.stdout = io
+ sys.stdout = string_io
try:
res = doctest.DocTestRunner.summarize(self, verbose)
finally:
sys.stdout = old_stdout
- out(io.getvalue())
+ out(string_io.getvalue())
return res
def _DocTestRunner__patched_linecache_getlines(self, filename,
@@ -204,6 +210,8 @@ class DocTestBuilder(Builder):
self.total_tries = 0
self.setup_failures = 0
self.setup_tries = 0
+ self.cleanup_failures = 0
+ self.cleanup_tries = 0
date = time.strftime('%Y-%m-%d %H:%M:%S')
@@ -240,12 +248,14 @@ Doctest summary
%5d test%s
%5d failure%s in tests
%5d failure%s in setup code
+%5d failure%s in cleanup code
''' % (self.total_tries, s(self.total_tries),
self.total_failures, s(self.total_failures),
- self.setup_failures, s(self.setup_failures)))
+ self.setup_failures, s(self.setup_failures),
+ self.cleanup_failures, s(self.cleanup_failures)))
self.outfile.close()
- if self.total_failures or self.setup_failures:
+ if self.total_failures or self.setup_failures or self.cleanup_failures:
self.app.statuscode = 1
def write(self, build_docnames, updated_docnames, method='update'):
@@ -265,6 +275,12 @@ Doctest summary
optionflags=self.opt)
self.test_runner = SphinxDocTestRunner(verbose=False,
optionflags=self.opt)
+ self.cleanup_runner = SphinxDocTestRunner(verbose=False,
+ optionflags=self.opt)
+
+ self.test_runner._fakeout = self.setup_runner._fakeout
+ self.cleanup_runner._fakeout = self.setup_runner._fakeout
+
if self.config.doctest_test_doctest_blocks:
def condition(node):
return (isinstance(node, (nodes.literal_block, nodes.comment))
@@ -298,6 +314,11 @@ Doctest summary
'testsetup', lineno=0)
for group in groups.itervalues():
group.add_code(code, prepend=True)
+ if self.config.doctest_global_cleanup:
+ code = TestCode(self.config.doctest_global_cleanup,
+ 'testcleanup', lineno=0)
+ for group in groups.itervalues():
+ group.add_code(code)
if not groups:
return
@@ -313,29 +334,43 @@ Doctest summary
res_f, res_t = self.test_runner.summarize(self._out, verbose=True)
self.total_failures += res_f
self.total_tries += res_t
+ if self.cleanup_runner.tries:
+ res_f, res_t = self.cleanup_runner.summarize(self._out,
+ verbose=True)
+ self.cleanup_failures += res_f
+ self.cleanup_tries += res_t
def compile(self, code, name, type, flags, dont_inherit):
return compile(code, name, self.type, flags, dont_inherit)
def test_group(self, group, filename):
ns = {}
- setup_examples = []
- for setup in group.setup:
- setup_examples.append(doctest.Example(setup.code, '',
- lineno=setup.lineno))
- if setup_examples:
- # simulate a doctest with the setup code
- setup_doctest = doctest.DocTest(setup_examples, {},
- '%s (setup code)' % group.name,
- filename, 0, None)
- setup_doctest.globs = ns
- old_f = self.setup_runner.failures
+
+ def run_setup_cleanup(runner, testcodes, what):
+ examples = []
+ for testcode in testcodes:
+ examples.append(doctest.Example(testcode.code, '',
+ lineno=testcode.lineno))
+ if not examples:
+ return True
+ # simulate a doctest with the code
+ sim_doctest = doctest.DocTest(examples, {},
+ '%s (%s code)' % (group.name, what),
+ filename, 0, None)
+ sim_doctest.globs = ns
+ old_f = runner.failures
self.type = 'exec' # the snippet may contain multiple statements
- self.setup_runner.run(setup_doctest, out=self._warn_out,
- clear_globs=False)
- if self.setup_runner.failures > old_f:
- # don't run the group
- return
+ runner.run(sim_doctest, out=self._warn_out, clear_globs=False)
+ if runner.failures > old_f:
+ return False
+ return True
+
+ # run the setup code
+ if not run_setup_cleanup(self.setup_runner, group.setup, 'setup'):
+ # if setup failed, don't run the group
+ return
+
+ # run the tests
for code in group.tests:
if len(code) == 1:
# ordinary doctests (code/output interleaved)
@@ -373,9 +408,13 @@ Doctest summary
# also don't clear the globs namespace after running the doctest
self.test_runner.run(test, out=self._warn_out, clear_globs=False)
+ # run the cleanup
+ run_setup_cleanup(self.cleanup_runner, group.cleanup, 'cleanup')
+
def setup(app):
app.add_directive('testsetup', TestsetupDirective)
+ app.add_directive('testcleanup', TestcleanupDirective)
app.add_directive('doctest', DoctestDirective)
app.add_directive('testcode', TestcodeDirective)
app.add_directive('testoutput', TestoutputDirective)
@@ -384,3 +423,4 @@ def setup(app):
app.add_config_value('doctest_path', [], False)
app.add_config_value('doctest_test_doctest_blocks', 'default', False)
app.add_config_value('doctest_global_setup', '', False)
+ app.add_config_value('doctest_global_cleanup', '', False)
diff --git a/sphinx/ext/extlinks.py b/sphinx/ext/extlinks.py
index 9a29918a5..910354a29 100644
--- a/sphinx/ext/extlinks.py
+++ b/sphinx/ext/extlinks.py
@@ -20,7 +20,7 @@
You can also give an explicit caption, e.g. :exmpl:`Foo `.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
diff --git a/sphinx/ext/graphviz.py b/sphinx/ext/graphviz.py
index 106de7a65..57a08375d 100644
--- a/sphinx/ext/graphviz.py
+++ b/sphinx/ext/graphviz.py
@@ -6,11 +6,12 @@
Allow graphviz-formatted graphs to be included in Sphinx-generated
documents inline.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import re
+import codecs
import posixpath
from os import path
from math import ceil
@@ -46,23 +47,48 @@ class Graphviz(Directive):
"""
has_content = True
required_arguments = 0
- optional_arguments = 0
+ optional_arguments = 1
final_argument_whitespace = False
option_spec = {
'alt': directives.unchanged,
+ 'inline': directives.flag,
+ 'caption': directives.unchanged,
}
def run(self):
- dotcode = '\n'.join(self.content)
- if not dotcode.strip():
- return [self.state_machine.reporter.warning(
- 'Ignoring "graphviz" directive without content.',
- line=self.lineno)]
+ if self.arguments:
+ document = self.state.document
+ if self.content:
+ return [document.reporter.warning(
+ 'Graphviz directive cannot have both content and '
+ 'a filename argument', line=self.lineno)]
+ env = self.state.document.settings.env
+ rel_filename, filename = env.relfn2path(self.arguments[0])
+ env.note_dependency(rel_filename)
+ try:
+ fp = codecs.open(filename, 'r', 'utf-8')
+ try:
+ dotcode = fp.read()
+ finally:
+ fp.close()
+ except (IOError, OSError):
+ return [document.reporter.warning(
+ 'External Graphviz file %r not found or reading '
+ 'it failed' % filename, line=self.lineno)]
+ else:
+ dotcode = '\n'.join(self.content)
+ if not dotcode.strip():
+ return [self.state_machine.reporter.warning(
+ 'Ignoring "graphviz" directive without content.',
+ line=self.lineno)]
node = graphviz()
node['code'] = dotcode
node['options'] = []
if 'alt' in self.options:
node['alt'] = self.options['alt']
+ if 'caption' in self.options:
+ node['caption'] = self.options['caption']
+ node['inline'] = 'inline' in self.options
return [node]
@@ -76,6 +102,8 @@ class GraphvizSimple(Directive):
final_argument_whitespace = False
option_spec = {
'alt': directives.unchanged,
+ 'inline': directives.flag,
+ 'caption': directives.unchanged,
}
def run(self):
@@ -85,14 +113,16 @@ class GraphvizSimple(Directive):
node['options'] = []
if 'alt' in self.options:
node['alt'] = self.options['alt']
+ if 'caption' in self.options:
+ node['caption'] = self.options['caption']
+ node['inline'] = 'inline' in self.options
return [node]
def render_dot(self, code, options, format, prefix='graphviz'):
- """
- Render graphviz code into a PNG or PDF output file.
- """
+ """Render graphviz code into a PNG or PDF output file."""
hashkey = code.encode('utf-8') + str(options) + \
+ str(self.builder.config.graphviz_dot) + \
str(self.builder.config.graphviz_dot_args)
fname = '%s-%s.%s' % (prefix, sha(hashkey).hexdigest(), format)
if hasattr(self.builder, 'imgpath'):
@@ -193,7 +223,13 @@ def render_dot_html(self, node, code, options, prefix='graphviz',
self.builder.warn('dot code %r: ' % code + str(exc))
raise nodes.SkipNode
- self.body.append(self.starttag(node, 'p', CLASS='graphviz'))
+ inline = node.get('inline', False)
+ if inline:
+ wrapper = 'span'
+ else:
+ wrapper = 'p'
+
+ self.body.append(self.starttag(node, wrapper, CLASS='graphviz'))
if fname is None:
self.body.append(self.encode(code))
else:
@@ -219,8 +255,11 @@ def render_dot_html(self, node, code, options, prefix='graphviz',
self.body.append(' \n' %
(fname, alt, mapname, imgcss))
self.body.extend(imgmap)
+ if node.get('caption') and not inline:
+ self.body.append('
\n')
+ self.body.append(self.encode(node['caption']))
- self.body.append('
\n')
+ self.body.append('%s>\n' % wrapper)
raise nodes.SkipNode
@@ -235,8 +274,25 @@ def render_dot_latex(self, node, code, options, prefix='graphviz'):
self.builder.warn('dot code %r: ' % code + str(exc))
raise nodes.SkipNode
+ inline = node.get('inline', False)
+ if inline:
+ para_separator = ''
+ else:
+ para_separator = '\n'
+
if fname is not None:
- self.body.append('\\includegraphics{%s}' % fname)
+ caption = node.get('caption')
+ # XXX add ids from previous target node
+ if caption and not inline:
+ self.body.append('\n\\begin{figure}[h!]')
+ self.body.append('\n\\begin{center}')
+ self.body.append('\n\\caption{%s}' % self.encode(caption))
+ self.body.append('\n\\includegraphics{%s}' % fname)
+ self.body.append('\n\\end{center}')
+ self.body.append('\n\\end{figure}\n')
+ else:
+ self.body.append('%s\\includegraphics{%s}%s' %
+ (para_separator, fname, para_separator))
raise nodes.SkipNode
diff --git a/sphinx/ext/ifconfig.py b/sphinx/ext/ifconfig.py
index cdb6e2c3c..5698ca28c 100644
--- a/sphinx/ext/ifconfig.py
+++ b/sphinx/ext/ifconfig.py
@@ -16,7 +16,7 @@
namespace of the project configuration (that is, all variables from
``conf.py`` are available.)
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
diff --git a/sphinx/ext/inheritance_diagram.py b/sphinx/ext/inheritance_diagram.py
index b930d8cab..fba083bf4 100644
--- a/sphinx/ext/inheritance_diagram.py
+++ b/sphinx/ext/inheritance_diagram.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-"""
+r"""
sphinx.ext.inheritance_diagram
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -32,7 +32,7 @@
The graph is inserted as a PNG+image map into HTML and a PDF in
LaTeX.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -66,28 +66,26 @@ class InheritanceGraph(object):
from all the way to the root "object", and then is able to generate a
graphviz dot graph from them.
"""
- def __init__(self, class_names, currmodule, show_builtins=False):
- """
- *class_names* is a list of child classes to show bases from.
+ def __init__(self, class_names, currmodule, show_builtins=False,
+ private_bases=False, parts=0):
+ """*class_names* is a list of child classes to show bases from.
If *show_builtins* is True, then Python builtins will be shown
in the graph.
"""
self.class_names = class_names
- self.classes = self._import_classes(class_names, currmodule)
- self.all_classes = self._all_classes(self.classes)
- if len(self.all_classes) == 0:
+ classes = self._import_classes(class_names, currmodule)
+ self.class_info = self._class_info(classes, show_builtins,
+ private_bases, parts)
+ if not self.class_info:
raise InheritanceException('No classes found for '
'inheritance diagram')
- self.show_builtins = show_builtins
def _import_class_or_module(self, name, currmodule):
- """
- Import a class using its fully-qualified *name*.
- """
+ """Import a class using its fully-qualified *name*."""
try:
path, base = class_sig_re.match(name).groups()
- except ValueError:
+ except (AttributeError, ValueError):
raise InheritanceException('Invalid class or module %r specified '
'for inheritance diagram' % name)
@@ -129,36 +127,52 @@ class InheritanceGraph(object):
'not a class or module' % name)
def _import_classes(self, class_names, currmodule):
- """
- Import a list of classes.
- """
+ """Import a list of classes."""
classes = []
for name in class_names:
classes.extend(self._import_class_or_module(name, currmodule))
return classes
- def _all_classes(self, classes):
- """
- Return a list of all classes that are ancestors of *classes*.
+ def _class_info(self, classes, show_builtins, private_bases, parts):
+ """Return name and bases for all classes that are ancestors of
+ *classes*.
+
+ *parts* gives the number of dotted name parts that is removed from the
+ displayed node names.
"""
all_classes = {}
+ builtins = __builtins__.values()
def recurse(cls):
- all_classes[cls] = None
- for c in cls.__bases__:
- if c not in all_classes:
- recurse(c)
+ if not show_builtins and cls in builtins:
+ return
+ if not private_bases and cls.__name__.startswith('_'):
+ return
+
+ nodename = self.class_name(cls, parts)
+ fullname = self.class_name(cls, 0)
+
+ baselist = []
+ all_classes[cls] = (nodename, fullname, baselist)
+ for base in cls.__bases__:
+ if not show_builtins and base in builtins:
+ continue
+ if not private_bases and base.__name__.startswith('_'):
+ continue
+ baselist.append(self.class_name(base, parts))
+ if base not in all_classes:
+ recurse(base)
for cls in classes:
recurse(cls)
- return all_classes.keys()
+ return all_classes.values()
def class_name(self, cls, parts=0):
- """
- Given a class object, return a fully-qualified name. This
- works for things I've tested in matplotlib so far, but may not
- be completely general.
+ """Given a class object, return a fully-qualified name.
+
+ This works for things I've tested in matplotlib so far, but may not be
+ completely general.
"""
module = cls.__module__
if module == '__builtin__':
@@ -171,10 +185,8 @@ class InheritanceGraph(object):
return '.'.join(name_parts[-parts:])
def get_all_class_names(self):
- """
- Get all of the class names involved in the graph.
- """
- return [self.class_name(x) for x in self.all_classes]
+ """Get all of the class names involved in the graph."""
+ return [fullname for (_, fullname, _) in self.class_info]
# These are the default attrs for graphviz
default_graph_attrs = {
@@ -200,11 +212,10 @@ class InheritanceGraph(object):
def _format_graph_attrs(self, attrs):
return ''.join(['%s=%s;\n' % x for x in attrs.items()])
- def generate_dot(self, name, parts=0, urls={}, env=None,
+ def generate_dot(self, name, urls={}, env=None,
graph_attrs={}, node_attrs={}, edge_attrs={}):
- """
- Generate a graphviz dot graph from the classes that
- were passed in to __init__.
+ """Generate a graphviz dot graph from the classes that were passed in
+ to __init__.
*name* is the name of the graph.
@@ -228,26 +239,17 @@ class InheritanceGraph(object):
res.append('digraph %s {\n' % name)
res.append(self._format_graph_attrs(g_attrs))
- for cls in self.all_classes:
- if not self.show_builtins and cls in __builtins__.values():
- continue
-
- name = self.class_name(cls, parts)
-
+ for name, fullname, bases in self.class_info:
# Write the node
this_node_attrs = n_attrs.copy()
- url = urls.get(self.class_name(cls))
+ url = urls.get(fullname)
if url is not None:
this_node_attrs['URL'] = '"%s"' % url
res.append(' "%s" [%s];\n' %
(name, self._format_node_attrs(this_node_attrs)))
# Write the edges
- for base in cls.__bases__:
- if not self.show_builtins and base in __builtins__.values():
- continue
-
- base_name = self.class_name(base, parts)
+ for base_name in bases:
res.append(' "%s" -> "%s" [%s];\n' %
(base_name, name,
self._format_node_attrs(e_attrs)))
@@ -272,6 +274,7 @@ class InheritanceDiagram(Directive):
final_argument_whitespace = True
option_spec = {
'parts': directives.nonnegative_int,
+ 'private-bases': directives.flag,
}
def run(self):
@@ -280,11 +283,16 @@ class InheritanceDiagram(Directive):
env = self.state.document.settings.env
class_names = self.arguments[0].split()
class_role = env.get_domain('py').role('class')
+ # Store the original content for use as a hash
+ node['parts'] = self.options.get('parts', 0)
+ node['content'] = ', '.join(class_names)
# Create a graph starting with the list of classes
try:
- graph = InheritanceGraph(class_names,
- env.temp_data.get('py:module'))
+ graph = InheritanceGraph(
+ class_names, env.temp_data.get('py:module'),
+ parts=node['parts'],
+ private_bases='private-bases' in self.options)
except InheritanceException, err:
return [node.document.reporter.warning(err.args[0],
line=self.lineno)]
@@ -300,9 +308,6 @@ class InheritanceDiagram(Directive):
# Store the graph object so we can use it to generate the
# dot file later
node['graph'] = graph
- # Store the original content for use as a hash
- node['parts'] = self.options.get('parts', 0)
- node['content'] = ', '.join(class_names)
return [node]
@@ -316,7 +321,6 @@ def html_visit_inheritance_diagram(self, node):
image map.
"""
graph = node['graph']
- parts = node['parts']
graph_hash = get_graph_hash(node)
name = 'inheritance%s' % graph_hash
@@ -329,7 +333,7 @@ def html_visit_inheritance_diagram(self, node):
elif child.get('refid') is not None:
urls[child['reftitle']] = '#' + child.get('refid')
- dotcode = graph.generate_dot(name, parts, urls, env=self.builder.env)
+ dotcode = graph.generate_dot(name, urls, env=self.builder.env)
render_dot_html(self, node, dotcode, [], 'inheritance', 'inheritance',
alt='Inheritance diagram of ' + node['content'])
raise nodes.SkipNode
@@ -340,12 +344,11 @@ def latex_visit_inheritance_diagram(self, node):
Output the graph for LaTeX. This will insert a PDF.
"""
graph = node['graph']
- parts = node['parts']
graph_hash = get_graph_hash(node)
name = 'inheritance%s' % graph_hash
- dotcode = graph.generate_dot(name, parts, env=self.builder.env,
+ dotcode = graph.generate_dot(name, env=self.builder.env,
graph_attrs={'size': '"6.0,6.0"'})
render_dot_latex(self, node, dotcode, [], 'inheritance')
raise nodes.SkipNode
@@ -362,7 +365,8 @@ def setup(app):
latex=(latex_visit_inheritance_diagram, None),
html=(html_visit_inheritance_diagram, None),
text=(skip, None),
- man=(skip, None))
+ man=(skip, None),
+ texinfo=(skip, None))
app.add_directive('inheritance-diagram', InheritanceDiagram)
app.add_config_value('inheritance_graph_attrs', {}, False),
app.add_config_value('inheritance_node_attrs', {}, False),
diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py
index 4fb3805f9..709428a35 100644
--- a/sphinx/ext/intersphinx.py
+++ b/sphinx/ext/intersphinx.py
@@ -20,12 +20,13 @@
also be specified individually, e.g. if the docs should be buildable
without Internet access.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import time
import zlib
+import codecs
import urllib2
import posixpath
from os import path
@@ -33,19 +34,26 @@ from os import path
from docutils import nodes
from sphinx.builders.html import INVENTORY_FILENAME
+from sphinx.util.pycompat import b
+
handlers = [urllib2.ProxyHandler(), urllib2.HTTPRedirectHandler(),
urllib2.HTTPHandler()]
-if hasattr(urllib2, 'HTTPSHandler'):
+try:
handlers.append(urllib2.HTTPSHandler)
+except NameError:
+ pass
urllib2.install_opener(urllib2.build_opener(*handlers))
+UTF8StreamReader = codecs.lookup('utf-8')[2]
+
def read_inventory_v1(f, uri, join):
+ f = UTF8StreamReader(f)
invdata = {}
line = f.next()
- projname = line.rstrip()[11:].decode('utf-8')
+ projname = line.rstrip()[11:]
line = f.next()
version = line.rstrip()[11:]
for line in f:
@@ -68,25 +76,25 @@ def read_inventory_v2(f, uri, join, bufsize=16*1024):
projname = line.rstrip()[11:].decode('utf-8')
line = f.readline()
version = line.rstrip()[11:].decode('utf-8')
- line = f.readline()
+ line = f.readline().decode('utf-8')
if 'zlib' not in line:
raise ValueError
def read_chunks():
decompressor = zlib.decompressobj()
- for chunk in iter(lambda: f.read(bufsize), ''):
+ for chunk in iter(lambda: f.read(bufsize), b('')):
yield decompressor.decompress(chunk)
yield decompressor.flush()
def split_lines(iter):
- buf = ''
+ buf = b('')
for chunk in iter:
buf += chunk
- lineend = buf.find('\n')
+ lineend = buf.find(b('\n'))
while lineend != -1:
yield buf[:lineend].decode('utf-8')
buf = buf[lineend+1:]
- lineend = buf.find('\n')
+ lineend = buf.find(b('\n'))
assert not buf
for line in split_lines(read_chunks()):
@@ -109,13 +117,13 @@ def fetch_inventory(app, uri, inv):
if inv.find('://') != -1:
f = urllib2.urlopen(inv)
else:
- f = open(path.join(app.srcdir, inv))
+ f = open(path.join(app.srcdir, inv), 'rb')
except Exception, err:
app.warn('intersphinx inventory %r not fetchable due to '
'%s: %s' % (inv, err.__class__, err))
return
try:
- line = f.readline().rstrip()
+ line = f.readline().rstrip().decode('utf-8')
try:
if line == '# Sphinx inventory version 1':
invdata = read_inventory_v1(f, uri, join)
@@ -141,6 +149,8 @@ def load_mappings(app):
env = app.builder.env
if not hasattr(env, 'intersphinx_cache'):
env.intersphinx_cache = {}
+ env.intersphinx_inventory = {}
+ env.intersphinx_named_inventory = {}
cache = env.intersphinx_cache
update = False
for key, value in app.config.intersphinx_mapping.iteritems():
@@ -191,10 +201,12 @@ def missing_reference(app, env, node, contnode):
return
objtypes = ['%s:%s' % (domain, objtype) for objtype in objtypes]
to_try = [(env.intersphinx_inventory, target)]
+ in_set = None
if ':' in target:
# first part may be the foreign doc set name
setname, newtarget = target.split(':', 1)
if setname in env.intersphinx_named_inventory:
+ in_set = setname
to_try.append((env.intersphinx_named_inventory[setname], newtarget))
for inventory, target in to_try:
for objtype in objtypes:
@@ -203,11 +215,25 @@ def missing_reference(app, env, node, contnode):
proj, version, uri, dispname = inventory[objtype][target]
newnode = nodes.reference('', '', internal=False, refuri=uri,
reftitle='(in %s v%s)' % (proj, version))
- if dispname == '-':
+ if node.get('refexplicit'):
+ # use whatever title was given
newnode.append(contnode)
+ elif dispname == '-':
+ # use whatever title was given, but strip prefix
+ title = contnode.astext()
+ if in_set and title.startswith(in_set+':'):
+ newnode.append(contnode.__class__(title[len(in_set)+1:],
+ title[len(in_set)+1:]))
+ else:
+ newnode.append(contnode)
else:
+ # else use the given display name (used for :ref:)
newnode.append(contnode.__class__(dispname, dispname))
return newnode
+ # at least get rid of the ':' in the target if no explicit title given
+ if in_set is not None and not node.get('refexplicit', True):
+ if len(contnode) and isinstance(contnode[0], nodes.Text):
+ contnode[0] = nodes.Text(newtarget, contnode[0].rawsource)
def setup(app):
diff --git a/sphinx/ext/jsmath.py b/sphinx/ext/jsmath.py
index 8277caa57..bad8225bd 100644
--- a/sphinx/ext/jsmath.py
+++ b/sphinx/ext/jsmath.py
@@ -6,7 +6,7 @@
Set up everything for use of JSMath to display math in HTML
via JavaScript.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
diff --git a/sphinx/ext/mathbase.py b/sphinx/ext/mathbase.py
index 8a5b75d34..d021c60bd 100644
--- a/sphinx/ext/mathbase.py
+++ b/sphinx/ext/mathbase.py
@@ -5,13 +5,14 @@
Set up math support in source files and LaTeX/text output.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
from docutils import nodes, utils
from docutils.parsers.rst import directives
+from sphinx.writers import texinfo
from sphinx.util.compat import Directive
@@ -69,6 +70,9 @@ class MathDirective(Directive):
node['nowrap'] = 'nowrap' in self.options
node['docname'] = self.state.document.settings.env.docname
ret = [node]
+ node.line = self.lineno
+ if hasattr(self, 'src'):
+ node.source = self.src
if node['label']:
tnode = nodes.target('', '', ids=['equation-' + node['label']])
self.state.document.note_explicit_target(tnode)
@@ -122,6 +126,20 @@ def man_visit_eqref(self, node):
raise nodes.SkipNode
+def texinfo_visit_math(self, node):
+ self.body.append('@math{' + texinfo.escape_arg(node['latex']) + '}')
+ raise nodes.SkipNode
+
+def texinfo_visit_displaymath(self, node):
+ self.visit_paragraph(node)
+def texinfo_depart_displaymath(self, node):
+ self.depart_paragraph(node)
+
+def texinfo_visit_eqref(self, node):
+ self.body.append(node['target'])
+ raise nodes.SkipNode
+
+
def html_visit_eqref(self, node):
self.body.append('' % node['target'])
@@ -148,20 +166,23 @@ def number_equations(app, doctree, docname):
def setup_math(app, htmlinlinevisitors, htmldisplayvisitors):
app.add_node(math,
- latex=(latex_visit_math, None),
- text=(text_visit_math, None),
- man=(man_visit_math, None),
- html=htmlinlinevisitors)
+ latex=(latex_visit_math, None),
+ text=(text_visit_math, None),
+ man=(man_visit_math, None),
+ texinfo=(texinfo_visit_math, None),
+ html=htmlinlinevisitors)
app.add_node(displaymath,
- latex=(latex_visit_displaymath, None),
- text=(text_visit_displaymath, None),
- man=(man_visit_displaymath, man_depart_displaymath),
- html=htmldisplayvisitors)
+ latex=(latex_visit_displaymath, None),
+ text=(text_visit_displaymath, None),
+ man=(man_visit_displaymath, man_depart_displaymath),
+ texinfo=(texinfo_visit_displaymath, texinfo_depart_displaymath),
+ html=htmldisplayvisitors)
app.add_node(eqref,
- latex=(latex_visit_eqref, None),
- text=(text_visit_eqref, None),
- man=(man_visit_eqref, None),
- html=(html_visit_eqref, html_depart_eqref))
+ latex=(latex_visit_eqref, None),
+ text=(text_visit_eqref, None),
+ man=(man_visit_eqref, None),
+ texinfo=(texinfo_visit_eqref, None),
+ html=(html_visit_eqref, html_depart_eqref))
app.add_role('math', math_role)
app.add_role('eq', eq_role)
app.add_directive('math', MathDirective)
diff --git a/sphinx/ext/mathjax.py b/sphinx/ext/mathjax.py
new file mode 100644
index 000000000..e8d2d4851
--- /dev/null
+++ b/sphinx/ext/mathjax.py
@@ -0,0 +1,67 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.ext.mathjax
+ ~~~~~~~~~~~~~~~~~~
+
+ Allow `MathJax `_ to be used to display math in
+ Sphinx's HTML writer -- requires the MathJax JavaScript library on your
+ webserver/computer.
+
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from docutils import nodes
+
+from sphinx.application import ExtensionError
+from sphinx.ext.mathbase import setup_math as mathbase_setup
+
+
+def html_visit_math(self, node):
+ self.body.append(self.starttag(node, 'span', '', CLASS='math'))
+ self.body.append(self.builder.config.mathjax_inline[0] +
+ self.encode(node['latex']) +
+ self.builder.config.mathjax_inline[1] + '')
+ raise nodes.SkipNode
+
+def html_visit_displaymath(self, node):
+ self.body.append(self.starttag(node, 'div', CLASS='math'))
+ if node['nowrap']:
+ self.body.append(self.builder.config.mathjax_display[0] +
+ node['latex'] +
+ self.builder.config.mathjax_display[1])
+ self.body.append('')
+ raise nodes.SkipNode
+
+ parts = [prt for prt in node['latex'].split('\n\n') if prt.strip()]
+ for i, part in enumerate(parts):
+ part = self.encode(part)
+ if i == 0:
+ # necessary to e.g. set the id property correctly
+ if node['number']:
+ self.body.append('(%s) ' %
+ node['number'])
+ if '&' in part or '\\\\' in part:
+ self.body.append(self.builder.config.mathjax_display[0] +
+ '\\begin{split}' + part + '\\end{split}' +
+ self.builder.config.mathjax_display[1])
+ else:
+ self.body.append(self.builder.config.mathjax_display[0] + part +
+ self.builder.config.mathjax_display[1])
+ self.body.append('\n')
+ raise nodes.SkipNode
+
+def builder_inited(app):
+ if not app.config.mathjax_path:
+ raise ExtensionError('mathjax_path config value must be set for the '
+ 'mathjax extension to work')
+ app.add_javascript(app.config.mathjax_path)
+
+
+def setup(app):
+ mathbase_setup(app, (html_visit_math, None), (html_visit_displaymath, None))
+ app.add_config_value('mathjax_path', '', False)
+ app.add_config_value('mathjax_inline', [r'\(', r'\)'], 'html')
+ app.add_config_value('mathjax_display', [r'\[', r'\]'], 'html')
+ app.connect('builder-inited', builder_inited)
+
diff --git a/sphinx/ext/oldcmarkup.py b/sphinx/ext/oldcmarkup.py
index 84ae61dd2..41969c364 100644
--- a/sphinx/ext/oldcmarkup.py
+++ b/sphinx/ext/oldcmarkup.py
@@ -5,7 +5,7 @@
Extension for compatibility with old C markup (directives and roles).
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -18,6 +18,7 @@ WARNING_MSG = 'using old C markup; please migrate to new-style markup ' \
'(e.g. c:function instead of cfunction), see ' \
'http://sphinx.pocoo.org/domains.html'
+
class OldCDirective(Directive):
has_content = True
required_arguments = 1
@@ -42,6 +43,8 @@ class OldCDirective(Directive):
def old_crole(typ, rawtext, text, lineno, inliner, options={}, content=[]):
env = inliner.document.settings.env
+ if not typ:
+ typ = env.config.default_role
if not env.app._oldcmarkup_warned:
env.warn(env.docname, WARNING_MSG)
env.app._oldcmarkup_warned = True
diff --git a/sphinx/ext/pngmath.py b/sphinx/ext/pngmath.py
index 7f3997543..78c331a60 100644
--- a/sphinx/ext/pngmath.py
+++ b/sphinx/ext/pngmath.py
@@ -5,7 +5,7 @@
Render math in HTML via dvipng.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -26,6 +26,7 @@ from docutils import nodes
from sphinx.errors import SphinxError
from sphinx.util.png import read_png_depth, write_png_depth
from sphinx.util.osutil import ensuredir, ENOENT
+from sphinx.util.pycompat import b
from sphinx.ext.mathbase import setup_math as mathbase_setup, wrap_displaymath
class MathExtError(SphinxError):
@@ -58,11 +59,10 @@ DOC_BODY_PREVIEW = r'''
\end{document}
'''
-depth_re = re.compile(r'\[\d+ depth=(-?\d+)\]')
+depth_re = re.compile(b(r'\[\d+ depth=(-?\d+)\]'))
def render_math(self, math):
- """
- Render the LaTeX math expression *math* using latex and dvipng.
+ """Render the LaTeX math expression *math* using latex and dvipng.
Return the filename relative to the built document and the "depth",
that is, the distance of image bottom and baseline in pixels, if the
@@ -178,6 +178,11 @@ def cleanup_tempdir(app, exc):
except Exception:
pass
+def get_tooltip(self, node):
+ if self.builder.config.pngmath_add_tooltips:
+ return ' alt="%s"' % self.encode(node['latex']).strip()
+ return ''
+
def html_visit_math(self, node):
try:
fname, depth = render_math(self, '$'+node['latex']+'$')
@@ -193,15 +198,10 @@ def html_visit_math(self, node):
self.body.append('%s ' %
self.encode(node['latex']).strip())
else:
- if depth is None:
- self.body.append(
- ' ' %
- (fname, self.encode(node['latex']).strip()))
- else:
- self.body.append(
- ' ' %
- (fname, self.encode(node['latex']).strip(), -depth))
+ c = (' ')
raise nodes.SkipNode
def html_visit_displaymath(self, node):
@@ -226,8 +226,8 @@ def html_visit_displaymath(self, node):
self.body.append('%s
\n' %
self.encode(node['latex']).strip())
else:
- self.body.append('
\n' %
- (fname, self.encode(node['latex']).strip()))
+ self.body.append((' \n')
raise nodes.SkipNode
@@ -240,4 +240,5 @@ def setup(app):
['-gamma 1.5', '-D 110'], 'html')
app.add_config_value('pngmath_latex_args', [], 'html')
app.add_config_value('pngmath_latex_preamble', '', 'html')
+ app.add_config_value('pngmath_add_tooltips', True, 'html')
app.connect('build-finished', cleanup_tempdir)
diff --git a/sphinx/ext/refcounting.py b/sphinx/ext/refcounting.py
index 6ab9fe4ba..a8dc721d7 100644
--- a/sphinx/ext/refcounting.py
+++ b/sphinx/ext/refcounting.py
@@ -9,7 +9,7 @@
Usage: Set the `refcount_file` config value to the path to the reference
count data file.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
diff --git a/sphinx/ext/todo.py b/sphinx/ext/todo.py
index a6c33202e..6a44a9b4b 100644
--- a/sphinx/ext/todo.py
+++ b/sphinx/ext/todo.py
@@ -8,7 +8,7 @@
all todos of your project and lists them along with a backlink to the
original location.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -159,7 +159,8 @@ def setup(app):
html=(visit_todo_node, depart_todo_node),
latex=(visit_todo_node, depart_todo_node),
text=(visit_todo_node, depart_todo_node),
- man=(visit_todo_node, depart_todo_node))
+ man=(visit_todo_node, depart_todo_node),
+ texinfo=(visit_todo_node, depart_todo_node))
app.add_directive('todo', Todo)
app.add_directive('todolist', TodoList)
diff --git a/sphinx/ext/viewcode.py b/sphinx/ext/viewcode.py
index 81881beb6..020db6974 100644
--- a/sphinx/ext/viewcode.py
+++ b/sphinx/ext/viewcode.py
@@ -5,7 +5,7 @@
Add links to module code in Python object descriptions.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -31,7 +31,11 @@ def doctree_read(app, doctree):
env._viewcode_modules[modname] = False
return
analyzer.find_tags()
- entry = analyzer.code.decode(analyzer.encoding), analyzer.tags, {}
+ if not isinstance(analyzer.code, unicode):
+ code = analyzer.code.decode(analyzer.encoding)
+ else:
+ code = analyzer.code
+ entry = code, analyzer.tags, {}
env._viewcode_modules[modname] = entry
elif entry is False:
return
@@ -47,10 +51,10 @@ def doctree_read(app, doctree):
for signode in objnode:
if not isinstance(signode, addnodes.desc_signature):
continue
- modname = signode['module']
+ modname = signode.get('module')
if not modname:
continue
- fullname = signode['fullname']
+ fullname = signode.get('fullname')
if not has_tag(modname, fullname, env.docname):
continue
if fullname in names:
diff --git a/sphinx/highlighting.py b/sphinx/highlighting.py
index f5ea859cb..76bcb122d 100644
--- a/sphinx/highlighting.py
+++ b/sphinx/highlighting.py
@@ -5,7 +5,7 @@
Highlight code blocks using Pygments.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -21,6 +21,7 @@ except ImportError:
parser = None
from sphinx.util.texescape import tex_hl_escape_map_old, tex_hl_escape_map_new
+from sphinx.ext import doctest
try:
import pygments
@@ -30,34 +31,14 @@ try:
from pygments.lexers import get_lexer_by_name, guess_lexer
from pygments.formatters import HtmlFormatter, LatexFormatter
from pygments.filters import ErrorToken
- from pygments.style import Style
from pygments.styles import get_style_by_name
- from pygments.styles.friendly import FriendlyStyle
- from pygments.token import Generic, Comment, Number
from pygments.util import ClassNotFound
+ from sphinx.pygments_styles import SphinxStyle, NoneStyle
except ImportError:
pygments = None
lexers = None
HtmlFormatter = LatexFormatter = None
else:
- class SphinxStyle(Style):
- """
- Like friendly, but a bit darker to enhance contrast on the green
- background.
- """
-
- background_color = '#eeffcc'
- default_style = ''
-
- styles = FriendlyStyle.styles
- styles.update({
- Generic.Output: '#333',
- Comment: 'italic #408090',
- Number: '#208050',
- })
-
- class NoneStyle(Style):
- """Style without any styling."""
lexers = dict(
none = TextLexer(),
@@ -84,8 +65,6 @@ _LATEX_STYLES = r'''
\newcommand\PYGZrb{]}
'''
-doctestopt_re = re.compile(r'#\s*doctest:.+$', re.MULTILINE)
-
parsing_exceptions = (SyntaxError, UnicodeEncodeError)
if sys.version_info < (2, 5):
# Python <= 2.4 raises MemoryError when parsing an
@@ -156,7 +135,7 @@ class PygmentsBridge(object):
if sys.version_info >= (2, 5):
src = 'from __future__ import with_statement\n' + src
- if isinstance(src, unicode):
+ if sys.version_info < (3, 0) and isinstance(src, unicode):
# Non-ASCII chars will only occur in string literals
# and comments. If we wanted to give them to the parser
# correctly, we'd have to find out the correct source
@@ -175,7 +154,7 @@ class PygmentsBridge(object):
return True
def highlight_block(self, source, lang, linenos=False, warn=None):
- if isinstance(source, str):
+ if not isinstance(source, unicode):
source = source.decode()
if not pygments:
return self.unhighlighted(source)
@@ -207,7 +186,7 @@ class PygmentsBridge(object):
lexer = lexers[lang] = get_lexer_by_name(lang)
except ClassNotFound:
if warn:
- warn('Pygments lexer name %s is not known' % lang)
+ warn('Pygments lexer name %r is not known' % lang)
return self.unhighlighted(source)
else:
raise
@@ -216,7 +195,8 @@ class PygmentsBridge(object):
# trim doctest options if wanted
if isinstance(lexer, PythonConsoleLexer) and self.trim_doctest_flags:
- source = doctestopt_re.sub('', source)
+ source = doctest.blankline_re.sub('', source)
+ source = doctest.doctestopt_re.sub('', source)
# highlight via Pygments
try:
@@ -240,7 +220,7 @@ class PygmentsBridge(object):
# no HTML styles needed
return ''
if self.dest == 'html':
- return self.fmter[0].get_style_defs()
+ return self.fmter[0].get_style_defs('.highlight')
else:
styledefs = self.fmter[0].get_style_defs()
# workaround for Pygments < 0.12
diff --git a/sphinx/jinja2glue.py b/sphinx/jinja2glue.py
index a6f1a853e..629bce30f 100644
--- a/sphinx/jinja2glue.py
+++ b/sphinx/jinja2glue.py
@@ -5,7 +5,7 @@
Glue code for the jinja2 templating engine.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -26,6 +26,12 @@ def _tobool(val):
return val.lower() in ('true', '1', 'yes', 'on')
return bool(val)
+def _toint(val):
+ try:
+ return int(val)
+ except ValueError:
+ return 0
+
def accesskey(context, key):
"""Helper to output each access key only once."""
if '_accesskeys' not in context:
@@ -35,10 +41,21 @@ def accesskey(context, key):
return 'accesskey="%s"' % key
return ''
+class idgen(object):
+ def __init__(self):
+ self.id = 0
+ def current(self):
+ return self.id
+ def next(self):
+ self.id += 1
+ return self.id
+
class SphinxFileSystemLoader(FileSystemLoader):
- """FileSystemLoader subclass that is not so strict about '..'
- entries in template names."""
+ """
+ FileSystemLoader subclass that is not so strict about '..' entries in
+ template names.
+ """
def get_source(self, environment, template):
for searchpath in self.searchpath:
@@ -98,8 +115,10 @@ class BuiltinTemplateLoader(TemplateBridge, BaseLoader):
self.environment = SandboxedEnvironment(loader=self,
extensions=extensions)
self.environment.filters['tobool'] = _tobool
+ self.environment.filters['toint'] = _toint
self.environment.globals['debug'] = contextfunction(pformat)
self.environment.globals['accesskey'] = contextfunction(accesskey)
+ self.environment.globals['idgen'] = idgen
if use_i18n:
self.environment.install_gettext_translations(
builder.app.translator)
diff --git a/sphinx/locale/__init__.py b/sphinx/locale/__init__.py
index b0b89720c..3aca780cf 100644
--- a/sphinx/locale/__init__.py
+++ b/sphinx/locale/__init__.py
@@ -5,16 +5,19 @@
Locale utilities.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
+
+import sys
import gettext
import UserString
class _TranslationProxy(UserString.UserString, object):
- """Class for proxy strings from gettext translations. This is a helper
- for the lazy_* functions from this module.
+ """
+ Class for proxy strings from gettext translations. This is a helper for the
+ lazy_* functions from this module.
The proxy implementation attempts to be as complete as possible, so that
the lazy objects should mostly work as expected, for example for sorting.
@@ -135,7 +138,8 @@ class _TranslationProxy(UserString.UserString, object):
def mygettext(string):
"""Used instead of _ when creating TranslationProxies, because _ is
- not bound yet at that time."""
+ not bound yet at that time.
+ """
return _(string)
def lazy_gettext(string):
@@ -166,6 +170,7 @@ versionlabels = {
'deprecated': l_('Deprecated since version %s'),
}
+# XXX Python specific
pairindextypes = {
'module': l_('module'),
'keyword': l_('keyword'),
@@ -176,18 +181,32 @@ pairindextypes = {
'builtin': l_('built-in function'),
}
-translator = None
+translators = {}
-def _(message):
- return translator.ugettext(message)
+if sys.version_info >= (3, 0):
+ def _(message):
+ return translators['sphinx'].gettext(message)
+else:
+ def _(message):
+ return translators['sphinx'].ugettext(message)
-def init(locale_dirs, language):
- global translator
+
+def init(locale_dirs, language, catalog='sphinx'):
+ """Look for message catalogs in `locale_dirs` and *ensure* that there is at
+ least a NullTranslations catalog set in `translators`. If called multiple
+ times or if several ``.mo`` files are found, their contents are merged
+ together (thus making ``init`` reentrable).
+ """
+ global translators
+ translator = translators.get(catalog)
+ # ignore previously failed attempts to find message catalogs
+ if isinstance(translator, gettext.NullTranslations):
+ translator = None
# the None entry is the system's default locale path
has_translation = True
for dir_ in locale_dirs:
try:
- trans = gettext.translation('sphinx', localedir=dir_,
+ trans = gettext.translation(catalog, localedir=dir_,
languages=[language])
if translator is None:
translator = trans
@@ -196,7 +215,11 @@ def init(locale_dirs, language):
except Exception:
# Language couldn't be found in the specified path
pass
+ # guarantee translations[catalog] exists
if translator is None:
translator = gettext.NullTranslations()
has_translation = False
+ translators[catalog] = translator
+ if hasattr(translator, 'ugettext'):
+ translator.gettext = translator.ugettext
return translator, has_translation
diff --git a/sphinx/locale/bn/LC_MESSAGES/sphinx.js b/sphinx/locale/bn/LC_MESSAGES/sphinx.js
new file mode 100644
index 000000000..a69d00b5c
--- /dev/null
+++ b/sphinx/locale/bn/LC_MESSAGES/sphinx.js
@@ -0,0 +1 @@
+Documentation.addTranslations({"locale": "bn", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "\u0985\u09a8\u09c1\u09b8\u09a8\u09cd\u09a7\u09be\u09a8\u09c7\u09b0 \u09ae\u09cd\u09af\u09be\u099a\u0997\u09c1\u09b2\u09c7\u09be \u09b2\u09c1\u0995\u09be\u09a8", "Permalink to this definition": "\u098f\u0987 \u09b8\u0982\u099c\u09cd\u099e\u09be\u09b0 \u09aa\u09be\u09b0\u09cd\u09ae\u09be\u09b2\u09bf\u0999\u09cd\u0995", "Expand sidebar": "", "Permalink to this headline": "\u098f\u0987 \u09b6\u09bf\u09b0\u09c7\u09be\u09a8\u09be\u09ae\u09c7\u09b0 \u09aa\u09be\u09b0\u09cd\u09ae\u09be\u09b2\u09bf\u0999\u09cd\u0995", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/bn/LC_MESSAGES/sphinx.mo b/sphinx/locale/bn/LC_MESSAGES/sphinx.mo
new file mode 100644
index 000000000..3f23ac2e7
Binary files /dev/null and b/sphinx/locale/bn/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/bn/LC_MESSAGES/sphinx.po b/sphinx/locale/bn/LC_MESSAGES/sphinx.po
new file mode 100644
index 000000000..c0456cbdb
--- /dev/null
+++ b/sphinx/locale/bn/LC_MESSAGES/sphinx.po
@@ -0,0 +1,806 @@
+# Bengali translations for Sphinx.
+# Copyright (C) 2009 ORGANIZATION
+# This file is distributed under the same license as the Sphinx project.
+# FIRST AUTHOR , 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx 1.0pre/[?1034h2e1ab15e035e\n"
+"Report-Msgid-Bugs-To: nasim.haque@gmail.com\n"
+"POT-Creation-Date: 2009-11-08 16:28+0100\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
+"Last-Translator: Nasimul Haque \n"
+"Language-Team: Nasimul Haque \n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.5\n"
+
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
+#: sphinx/writers/manpage.py:67
+#, python-format
+msgid "%B %d, %Y"
+msgstr "%B %d, %Y"
+
+#: sphinx/environment.py:1624
+#, fuzzy, python-format
+msgid "see %s"
+msgstr "আরও %s"
+
+#: sphinx/environment.py:1627
+#, fuzzy, python-format
+msgid "see also %s"
+msgstr "আরও দেখুন %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "পাইথন উন্নয়ন পরামর্শ; PEP %s"
+
+#: sphinx/builders/changes.py:73
+msgid "Builtins"
+msgstr "বিল্টইন সমূহ"
+
+#: sphinx/builders/changes.py:75
+msgid "Module level"
+msgstr "মডিউল লেভেল"
+
+#: sphinx/builders/html.py:274
+#, python-format
+msgid "%b %d, %Y"
+msgstr "%b %d, %Y"
+
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
+msgid "General Index"
+msgstr "সাধারণ ইনডেক্স"
+
+#: sphinx/builders/html.py:293
+msgid "index"
+msgstr "ইনডেক্স"
+
+#: sphinx/builders/html.py:353
+msgid "next"
+msgstr "পরবর্তী"
+
+#: sphinx/builders/html.py:362
+msgid "previous"
+msgstr "পূর্ববর্তী"
+
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
+msgid " (in "
+msgstr "(-"
+
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "ইনডেক্স"
+
+#: sphinx/directives/other.py:136
+msgid "Section author: "
+msgstr "অনুচ্ছেদ লেখক:"
+
+#: sphinx/directives/other.py:138
+msgid "Module author: "
+msgstr "মডিউল লেখক:"
+
+#: sphinx/directives/other.py:140
+#, fuzzy
+msgid "Code author: "
+msgstr "মডিউল লেখক:"
+
+#: sphinx/directives/other.py:142
+msgid "Author: "
+msgstr "লেখক:"
+
+#: sphinx/directives/other.py:215
+msgid "See also"
+msgstr "আরও দেখুন"
+
+#: sphinx/domains/__init__.py:244
+#, python-format
+msgid "%s %s"
+msgstr ""
+
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
+msgid "Parameters"
+msgstr "প্যারামিটার"
+
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
+msgid "Returns"
+msgstr "রিটার্নস"
+
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
+msgid "Return type"
+msgstr "রিটার্ন টাইপ"
+
+#: sphinx/domains/c.py:141
+#, python-format
+msgid "%s (C function)"
+msgstr "%s (C ফাংশন)"
+
+#: sphinx/domains/c.py:143
+#, python-format
+msgid "%s (C member)"
+msgstr "%s (C মেম্বার)"
+
+#: sphinx/domains/c.py:145
+#, python-format
+msgid "%s (C macro)"
+msgstr "%s (C ম্যাক্রো)"
+
+#: sphinx/domains/c.py:147
+#, python-format
+msgid "%s (C type)"
+msgstr "%s (C টাইপ)"
+
+#: sphinx/domains/c.py:149
+#, python-format
+msgid "%s (C variable)"
+msgstr "%s (C ভ্যারিয়েবল)"
+
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
+msgid "function"
+msgstr "ফাংশন"
+
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
+#, fuzzy
+msgid "member"
+msgstr "C মেম্বার"
+
+#: sphinx/domains/c.py:206
+#, fuzzy
+msgid "macro"
+msgstr "C ম্যাক্রো"
+
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
+#, fuzzy
+msgid "type"
+msgstr "C টাইপ"
+
+#: sphinx/domains/c.py:208
+#, fuzzy
+msgid "variable"
+msgstr "C ভ্যারিয়েবল"
+
+#: sphinx/domains/cpp.py:897
+#, python-format
+msgid "%s (C++ class)"
+msgstr "%s (C++ ক্লাসে)"
+
+#: sphinx/domains/cpp.py:912
+#, python-format
+msgid "%s (C++ type)"
+msgstr "%s (C++ টাইপ)"
+
+#: sphinx/domains/cpp.py:931
+#, python-format
+msgid "%s (C++ member)"
+msgstr "%s (C++ মেম্বার)"
+
+#: sphinx/domains/cpp.py:983
+#, python-format
+msgid "%s (C++ function)"
+msgstr "%s (C++ ফাংশন)"
+
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
+msgid "class"
+msgstr "ক্লাস"
+
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
+#, python-format
+msgid "%s() (built-in function)"
+msgstr "%s() (বিল্ট-ইন ফাংশন)"
+
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
+#, python-format
+msgid "%s() (%s method)"
+msgstr "%s() (%s মেথড)"
+
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (ক্লাসে)"
+
+#: sphinx/domains/javascript.py:111
+#, python-format
+msgid "%s (global variable or constant)"
+msgstr ""
+
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
+#, python-format
+msgid "%s (%s attribute)"
+msgstr "%s (%s এ্যট্রিবিউট)"
+
+#: sphinx/domains/javascript.py:122
+#, fuzzy
+msgid "Arguments"
+msgstr "প্যারামিটার"
+
+#: sphinx/domains/javascript.py:125
+msgid "Throws"
+msgstr ""
+
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
+msgid "data"
+msgstr "ডাটা"
+
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
+msgid "attribute"
+msgstr "এ্যট্রিবিউট"
+
+#: sphinx/domains/python.py:100
+#, fuzzy
+msgid "Variables"
+msgstr "ভ্যারিয়েবল"
+
+#: sphinx/domains/python.py:104
+msgid "Raises"
+msgstr "রেইজেস"
+
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
+#, python-format
+msgid "%s() (in module %s)"
+msgstr "%s() (%s মডিউলে)"
+
+#: sphinx/domains/python.py:258
+#, python-format
+msgid "%s (built-in variable)"
+msgstr "%s (বিল্ট-ইন ভ্যারিয়েবল)"
+
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
+#, python-format
+msgid "%s (in module %s)"
+msgstr "%s (%s মডিউলে)"
+
+#: sphinx/domains/python.py:275
+#, python-format
+msgid "%s (built-in class)"
+msgstr "%s (বিল্ট-ইন ক্লাস)"
+
+#: sphinx/domains/python.py:276
+#, python-format
+msgid "%s (class in %s)"
+msgstr "%s (%s ক্লাসে)"
+
+#: sphinx/domains/python.py:316
+#, python-format
+msgid "%s() (%s.%s method)"
+msgstr "%s (%s.%s মেথড)"
+
+#: sphinx/domains/python.py:328
+#, python-format
+msgid "%s() (%s.%s static method)"
+msgstr "%s (%s.%s স্ট্যাটিক মেথড)"
+
+#: sphinx/domains/python.py:331
+#, python-format
+msgid "%s() (%s static method)"
+msgstr "%s() (%s স্ট্যাটিক মেথড)"
+
+#: sphinx/domains/python.py:341
+#, python-format
+msgid "%s() (%s.%s class method)"
+msgstr "%s() (%s.%s ক্লাস মেথড)"
+
+#: sphinx/domains/python.py:344
+#, python-format
+msgid "%s() (%s class method)"
+msgstr "%s() (%s ক্লাস মেথড)"
+
+#: sphinx/domains/python.py:354
+#, python-format
+msgid "%s (%s.%s attribute)"
+msgstr "%s (%s.%s এ্যট্রিবিউট)"
+
+#: sphinx/domains/python.py:433
+#, python-format
+msgid "%s (module)"
+msgstr "%s (মডিউল)"
+
+#: sphinx/domains/python.py:490
+#, fuzzy
+msgid "Python Module Index"
+msgstr "মডিউল ইনডেক্স"
+
+#: sphinx/domains/python.py:491
+msgid "modules"
+msgstr "মডিউল সমূহ"
+
+#: sphinx/domains/python.py:536
+msgid "Deprecated"
+msgstr "ডেপ্রিকেটেড"
+
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
+msgid "exception"
+msgstr "এক্সেপশন"
+
+#: sphinx/domains/python.py:562
+msgid "method"
+msgstr "মেথড"
+
+#: sphinx/domains/python.py:563
+msgid "class method"
+msgstr "ক্লাস মেথড"
+
+#: sphinx/domains/python.py:564
+msgid "static method"
+msgstr "স্ট্যাটিক মেথড"
+
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
+msgid "module"
+msgstr "মডিউল"
+
+#: sphinx/domains/python.py:694
+#, fuzzy
+msgid " (deprecated)"
+msgstr "ডেপ্রিকেটেড"
+
+#: sphinx/domains/rst.py:55
+#, python-format
+msgid "%s (directive)"
+msgstr ""
+
+#: sphinx/domains/rst.py:57
+#, fuzzy, python-format
+msgid "%s (role)"
+msgstr "%s (মডিউল)"
+
+#: sphinx/domains/rst.py:106
+msgid "directive"
+msgstr ""
+
+#: sphinx/domains/rst.py:107
+#, fuzzy
+msgid "role"
+msgstr "মডিউল"
+
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
+#, python-format
+msgid "environment variable; %s"
+msgstr "এনভায়রনমেন্ট ভ্যারিয়েবল; %s"
+
+#: sphinx/domains/std.py:162
+#, python-format
+msgid "%scommand line option; %s"
+msgstr "%sকমান্ড লাইন অপশন; %s"
+
+#: sphinx/domains/std.py:393
+msgid "glossary term"
+msgstr "শব্দকোষ"
+
+#: sphinx/domains/std.py:394
+msgid "grammar token"
+msgstr "ব্যকরণ টোকেন"
+
+#: sphinx/domains/std.py:395
+msgid "reference label"
+msgstr ""
+
+#: sphinx/domains/std.py:396
+msgid "environment variable"
+msgstr "এনভায়রনমেন্ট ভ্যারিয়েবল"
+
+#: sphinx/domains/std.py:397
+msgid "program option"
+msgstr "প্রোগ্রাম অপশন"
+
+#: sphinx/domains/std.py:428
+msgid "Module Index"
+msgstr "মডিউল ইনডেক্স"
+
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
+msgid "Search Page"
+msgstr "অনুসন্ধান পাতা"
+
+#: sphinx/ext/autodoc.py:998
+#, python-format
+msgid " Bases: %s"
+msgstr "বেস: %s"
+
+#: sphinx/ext/autodoc.py:1034
+#, python-format
+msgid "alias of :class:`%s`"
+msgstr ":class:`%s` এর উপনাম"
+
+#: sphinx/ext/todo.py:41
+msgid "Todo"
+msgstr "অসমাপ্ত কাজ"
+
+#: sphinx/ext/todo.py:109
+#, fuzzy, python-format
+msgid "(The <> is located in %s, line %d.)"
+msgstr "(%s, %d লাইনে মূল অন্তর্ভুক্তিটি রয়েছে.)"
+
+#: sphinx/ext/todo.py:117
+msgid "original entry"
+msgstr ""
+
+#: sphinx/ext/viewcode.py:70
+msgid "[source]"
+msgstr ""
+
+#: sphinx/ext/viewcode.py:117
+msgid "[docs]"
+msgstr ""
+
+#: sphinx/ext/viewcode.py:131
+#, fuzzy
+msgid "Module code"
+msgstr "মডিউল"
+
+#: sphinx/ext/viewcode.py:137
+#, python-format
+msgid "Source code for %s "
+msgstr ""
+
+#: sphinx/ext/viewcode.py:164
+msgid "Overview: module code"
+msgstr ""
+
+#: sphinx/ext/viewcode.py:165
+msgid "All modules for which code is available "
+msgstr ""
+
+#: sphinx/locale/__init__.py:155
+msgid "Attention"
+msgstr "দৃষ্টি আকর্ষণ"
+
+#: sphinx/locale/__init__.py:156
+msgid "Caution"
+msgstr "সতর্কীকরণ"
+
+#: sphinx/locale/__init__.py:157
+msgid "Danger"
+msgstr "বিপজ্জনক"
+
+#: sphinx/locale/__init__.py:158
+msgid "Error"
+msgstr "ভুল (এরর)"
+
+#: sphinx/locale/__init__.py:159
+msgid "Hint"
+msgstr "আভাস"
+
+#: sphinx/locale/__init__.py:160
+msgid "Important"
+msgstr "গুরুত্বপূর্ণ"
+
+#: sphinx/locale/__init__.py:161
+msgid "Note"
+msgstr "নোট"
+
+#: sphinx/locale/__init__.py:162
+msgid "See Also"
+msgstr "আরও দেখুন"
+
+#: sphinx/locale/__init__.py:163
+msgid "Tip"
+msgstr "পরামর্শ"
+
+#: sphinx/locale/__init__.py:164
+msgid "Warning"
+msgstr "সতর্কতা"
+
+#: sphinx/locale/__init__.py:168
+#, python-format
+msgid "New in version %s"
+msgstr "%s ভার্সনে নতুন"
+
+#: sphinx/locale/__init__.py:169
+#, python-format
+msgid "Changed in version %s"
+msgstr "%s ভার্সনে পরিবর্তিত"
+
+#: sphinx/locale/__init__.py:170
+#, python-format
+msgid "Deprecated since version %s"
+msgstr "%s ভার্সন থেকে ডেপ্রিকেটেড"
+
+#: sphinx/locale/__init__.py:176
+msgid "keyword"
+msgstr "কিওয়ার্ড"
+
+#: sphinx/locale/__init__.py:177
+msgid "operator"
+msgstr "অপারেটর"
+
+#: sphinx/locale/__init__.py:178
+msgid "object"
+msgstr "অবজেক্ট"
+
+#: sphinx/locale/__init__.py:180
+msgid "statement"
+msgstr "স্ট্যাটমেন্ট"
+
+#: sphinx/locale/__init__.py:181
+msgid "built-in function"
+msgstr "বিল্ট-ইন ফাংশন"
+
+#: sphinx/themes/agogo/layout.html:45 sphinx/themes/basic/globaltoc.html:10
+#: sphinx/themes/basic/localtoc.html:11
+msgid "Table Of Contents"
+msgstr "সূচীপত্র"
+
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
+msgid "Search"
+msgstr "অনুসন্ধান"
+
+#: sphinx/themes/agogo/layout.html:52 sphinx/themes/basic/searchbox.html:15
+msgid "Go"
+msgstr "যান"
+
+#: sphinx/themes/agogo/layout.html:57 sphinx/themes/basic/searchbox.html:20
+msgid "Enter search terms or a module, class or function name."
+msgstr "অনুসন্ধানের জন্য টার্ম, মডিউল, ক্লাস অথবা ফাংশনের নাম দিন।"
+
+#: sphinx/themes/agogo/layout.html:78 sphinx/themes/basic/sourcelink.html:14
+msgid "Show Source"
+msgstr "সোর্স দেখুন"
+
+#: sphinx/themes/basic/defindex.html:11
+msgid "Overview"
+msgstr "ভুমিকা"
+
+#: sphinx/themes/basic/defindex.html:20
+msgid "Indices and tables:"
+msgstr "ইনডেক্স ও টেবিল সমূহ:"
+
+#: sphinx/themes/basic/defindex.html:23
+msgid "Complete Table of Contents"
+msgstr "পূর্ণাঙ্গ সূচীপত্র"
+
+#: sphinx/themes/basic/defindex.html:24
+msgid "lists all sections and subsections"
+msgstr "সকল অনুচ্ছেদ সমূহের তালিকা"
+
+#: sphinx/themes/basic/defindex.html:26
+msgid "search this documentation"
+msgstr "এই সহায়িকাতে অনুসন্ধা করুন"
+
+#: sphinx/themes/basic/defindex.html:28
+msgid "Global Module Index"
+msgstr "গ্লোবাল মডিউল ইনডেক্স"
+
+#: sphinx/themes/basic/defindex.html:29
+msgid "quick access to all modules"
+msgstr "সকল মডিউলে দ্রুত প্রবেশ"
+
+#: sphinx/themes/basic/defindex.html:31
+msgid "all functions, classes, terms"
+msgstr "সকল ফাংশন, ক্লাস, টার্ম"
+
+#: sphinx/themes/basic/genindex-single.html:35
+#, python-format
+msgid "Index – %(key)s"
+msgstr "ইনডেক্স – %(key)s"
+
+#: sphinx/themes/basic/genindex-single.html:63
+#: sphinx/themes/basic/genindex-split.html:24
+#: sphinx/themes/basic/genindex-split.html:38
+#: sphinx/themes/basic/genindex.html:74
+msgid "Full index on one page"
+msgstr "এক পাতায় সম্পূর্ণ ইনডেক্স"
+
+#: sphinx/themes/basic/genindex-split.html:16
+msgid "Index pages by letter"
+msgstr "বর্ণানুসারে ইনডেক্স পাতা"
+
+#: sphinx/themes/basic/genindex-split.html:25
+msgid "can be huge"
+msgstr "খুব বড় হতে পারে"
+
+#: sphinx/themes/basic/layout.html:29
+msgid "Navigation"
+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:140
+msgid "Copyright"
+msgstr "কপিরাইট"
+
+#: sphinx/themes/basic/layout.html:189
+#, python-format
+msgid "© Copyright %(copyright)s."
+msgstr "© কপিরাইট %(copyright)s."
+
+#: sphinx/themes/basic/layout.html:191
+#, python-format
+msgid "© Copyright %(copyright)s."
+msgstr "© কপিরাইট %(copyright)s."
+
+#: sphinx/themes/basic/layout.html:195
+#, python-format
+msgid "Last updated on %(last_updated)s."
+msgstr "%(last_updated)s সর্বশেষ পরিবর্তন করা হয়েছে।"
+
+#: sphinx/themes/basic/layout.html:198
+#, python-format
+msgid ""
+"Created using Sphinx "
+"%(sphinx_version)s."
+msgstr ""
+"Sphinx %(sphinx_version)s দিয়ে "
+"তৈরী।"
+
+#: sphinx/themes/basic/opensearch.xml:4
+#, python-format
+msgid "Search %(docstitle)s"
+msgstr "%(docstitle)s-এ খুঁজুন"
+
+#: sphinx/themes/basic/relations.html:11
+msgid "Previous topic"
+msgstr "পূর্ববর্তী টপিক"
+
+#: sphinx/themes/basic/relations.html:13
+msgid "previous chapter"
+msgstr "পূর্ববর্তী অধ্যায়"
+
+#: sphinx/themes/basic/relations.html:16
+msgid "Next topic"
+msgstr "পরবর্তী টপিক"
+
+#: sphinx/themes/basic/relations.html:18
+msgid "next chapter"
+msgstr "পরবর্তী অধ্যায়"
+
+#: sphinx/themes/basic/search.html:24
+msgid ""
+"Please activate JavaScript to enable the search\n"
+" functionality."
+msgstr ""
+"অনুসন্ধান করার জন্য অনুগ্রহপূর্বক জাভাস্ক্রিপ্ট \n"
+" সক্রিয় করুন।"
+
+#: sphinx/themes/basic/search.html:29
+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 ""
+"এখান থেকে এই নথিগুলোতে আপনি অনুসন্ধান করতে পারবেন। \n"
+" আপনার কাঙ্ক্ষিত শব্দসমূহ নিচের বাক্সে লিখুন এবং \"অনুসন্ধান\" বাটনে "
+"ক্লিক করুন।\n"
+" উল্লেখ্য, সকল শব্দসমূহের উপস্থিতি নিয়ে অনুসন্ধান করা হবে। যেসব পাতায় "
+"সকল\n"
+" শব্দ নেই সেগুলো বাদ দেয়া হবে।"
+
+#: sphinx/themes/basic/search.html:36
+msgid "search"
+msgstr "খুঁজুন"
+
+#: sphinx/themes/basic/search.html:40
+msgid "Search Results"
+msgstr "অনুসন্ধানের ফলাফল"
+
+#: sphinx/themes/basic/search.html:42
+msgid "Your search did not match any results."
+msgstr "আপনার অনুসন্ধানে কোন ফলাফল পাওয়া যায়নি।"
+
+#: sphinx/themes/basic/searchbox.html:12
+msgid "Quick search"
+msgstr "দ্রুত অনুসন্ধান"
+
+#: sphinx/themes/basic/sourcelink.html:11
+msgid "This Page"
+msgstr "এই পাতা"
+
+#: sphinx/themes/basic/changes/frameset.html:5
+#: sphinx/themes/basic/changes/versionchanges.html:12
+#, python-format
+msgid "Changes in Version %(version)s — %(docstitle)s"
+msgstr "%(version)s — %(docstitle)s-এ পরিবর্তন সমূহ"
+
+#: sphinx/themes/basic/changes/rstsource.html:5
+#, python-format
+msgid "%(filename)s — %(docstitle)s"
+msgstr "%(filename)s — %(docstitle)s"
+
+#: 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:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
+msgid "Permalink to this headline"
+msgstr "এই শিরোনামের পার্মালিঙ্ক"
+
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
+msgid "Permalink to this definition"
+msgstr "এই সংজ্ঞার পার্মালিঙ্ক"
+
+#: sphinx/themes/basic/static/doctools.js:189
+msgid "Hide Search Matches"
+msgstr "অনুসন্ধানের ম্যাচগুলো লুকান"
+
+#: sphinx/themes/default/static/sidebar.js:69
+msgid "Expand sidebar"
+msgstr ""
+
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
+msgid "Collapse sidebar"
+msgstr ""
+
+#: sphinx/themes/haiku/layout.html:26
+msgid "Contents"
+msgstr ""
+
+#: sphinx/writers/latex.py:176
+msgid "Release"
+msgstr "রিলিজ"
+
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
+msgid "Footnotes"
+msgstr "পাদটীকা"
+
+#: sphinx/writers/latex.py:672
+msgid "continued from previous page"
+msgstr "পূর্ববর্তী পাতা হতে চলমান"
+
+#: sphinx/writers/latex.py:677
+msgid "Continued on next page"
+msgstr "পরবর্তী পাতাতে চলমান"
+
+#: sphinx/writers/text.py:430
+msgid "[image]"
+msgstr "[ছবি]"
+
+#~ msgid "Platforms: "
+#~ msgstr "প্লাটফরম:"
+
+#~ msgid "Searching"
+#~ msgstr "অনুসন্ধান চলছে"
+
+#~ msgid "Preparing search..."
+#~ msgstr "অনুসন্ধানের প্রস্তুতি চলছে..."
+
+#~ msgid ", in "
+#~ msgstr ", -"
+
+#~ 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 ""
+#~ "আপনার অনুসন্ধানে কোন ফলাফল পাওয়া যায়নি।"
+#~ " আপনার অনুসন্ধানের শব্দগুলোর সঠিক বানান"
+#~ " ও বিভাগ নির্বাচন নিশ্চিত করুন।"
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "অনুসন্ধান শেষ হয়েছে, ফলাফলে %s-টি পাতা পাওয়া গেছে।"
+
diff --git a/sphinx/locale/ca/LC_MESSAGES/sphinx.js b/sphinx/locale/ca/LC_MESSAGES/sphinx.js
index 71a50776a..736d9b767 100644
--- a/sphinx/locale/ca/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/ca/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "ca", "plural_expr": "(n != 1)", "messages": {"Search Results": "Resultats de la Cerca", "Preparing search...": "Preparant la cerca...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "La teva cerca no ha donat resultats. Assegura't que totes les paraules estan ben escrites i que has seleccionat prou categories.", "Search finished, found %s page(s) matching the search query.": "Cerca finalitzada, s'han trobat %s p\u00e0gin(a/es) de resultats.", ", in ": ", a ", "Expand sidebar": "", "Permalink to this headline": "Link permanent a aquest t\u00edtol", "Searching": "Cercant", "Collapse sidebar": "", "Permalink to this definition": "Link permanent a aquesta definici\u00f3", "Hide Search Matches": "Oculta Resultats de Cerca"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "ca", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Oculta Resultats de Cerca", "Permalink to this definition": "Link permanent a aquesta definici\u00f3", "Expand sidebar": "", "Permalink to this headline": "Link permanent a aquest t\u00edtol", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/ca/LC_MESSAGES/sphinx.mo b/sphinx/locale/ca/LC_MESSAGES/sphinx.mo
index 339c787f6..4773faee5 100644
Binary files a/sphinx/locale/ca/LC_MESSAGES/sphinx.mo and b/sphinx/locale/ca/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/ca/LC_MESSAGES/sphinx.po b/sphinx/locale/ca/LC_MESSAGES/sphinx.po
index 7bfb66427..89452144c 100644
--- a/sphinx/locale/ca/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/ca/LC_MESSAGES/sphinx.po
@@ -8,386 +8,401 @@ msgstr ""
"Project-Id-Version: Sphinx 1.0\n"
"Report-Msgid-Bugs-To: pau.fernandez@upc.edu\n"
"POT-Creation-Date: 2009-05-22 18:51+0200\n"
-"PO-Revision-Date: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Pau Fernández \n"
"Language-Team: ca \n"
"Plural-Forms: nplurals=2; plural=(n != 1)\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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d de %B de %Y"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr "vegeu %s"
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr "vegeu també %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Mòduls Interns"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Nivell de mòdul"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b, %Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Índex General"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "índex"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "següent"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "anterior"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (a "
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Índex"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Autor de la secció:"
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Autor del mòdul: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "Autor del mòdul: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Autor: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Vegeu també"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Paràmetres"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Retorna"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Tipus de retorn"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (funció de C)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (membre de C)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (macro de C)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (tipus de C)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (variable de C)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "funció"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "membre"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr "macro"
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "tipus"
-#: sphinx/domains/c.py:175
-#, fuzzy
+#: sphinx/domains/c.py:208
msgid "variable"
-msgstr "Variable"
+msgstr "variable"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (class de C++)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (tipus de C++)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (membre de C++)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (funció de C++)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "class"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (funció interna)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (mètode %s)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (class)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (atribut %s)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "Paràmetres"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "atribut"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "Variable"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Llença"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (al mòdul %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (variable interna)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (al mòdul %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (classe interna)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (class a %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (mètode %s.%s)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (mètode estàtic %s.%s)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (mètode estàtic %s)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (mètode %s.%s)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (mètode %s)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (atribut %s.%s)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Plataformes: "
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (mòdul)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "Índex de Mòduls"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "mòduls"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Obsolet"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "excepció"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
-msgstr "%s() (mètode %s)"
+msgstr ""
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "mètode estàtic"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "mòdul"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (obsolet)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
+#: sphinx/domains/rst.py:57
+#, python-format
msgid "%s (role)"
-msgstr "%s (mòdul)"
+msgstr ""
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
-#, fuzzy
+#: sphinx/domains/rst.py:107
msgid "role"
-msgstr "mòdul"
+msgstr ""
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "variable d'entorn; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "opció de línia de comandes %s; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "variable d'entorn"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Índex"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Índex de Mòduls"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Pàgina de Cerca"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " Bases: %s"
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "àlies de :class:`%s`"
@@ -405,104 +420,104 @@ msgstr "(La <> està a %s, línia %d i.)"
msgid "original entry"
msgstr ""
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "mòdul"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Atenció"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Compte"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Perill"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Error"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Suggerència"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Important"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Nota"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Vegeu També"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Truc"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Avís"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Novetat de la versió %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Canviat a la versió %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Obsolet desde la versió %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "paraula clau"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "operador"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "objecte"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "sentència"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "funció interna"
@@ -511,8 +526,8 @@ msgstr "funció interna"
msgid "Table Of Contents"
msgstr "Taula de Contingut"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Cerca"
@@ -560,15 +575,15 @@ msgstr "accés ràpid a tots els mòduls"
msgid "all functions, classes, terms"
msgstr "totes les funcions, classes, termes"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Índes – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Índex complet en una pàgina"
@@ -580,39 +595,39 @@ msgstr "Pàgines d'índex per lletra"
msgid "can be huge"
msgstr "pot ser gegant"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navegació"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Cerca dins de %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Quant a aquests documents"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Última actualització el %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -642,7 +657,7 @@ msgstr "Tema següent"
msgid "next chapter"
msgstr "capítol següent"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
@@ -650,7 +665,7 @@ msgstr ""
"Activa JavaScript per utilitzar la funcionalitat\n"
"de cerca."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -662,16 +677,15 @@ msgstr ""
"que la cerca inclourà totes les paraules que posis. Les pàgines que no\n"
"tenen totes les paraules no sortiràn."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "cerca"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Resultats de la Cerca"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "La teva cerca no té resultats."
@@ -711,12 +725,12 @@ msgstr "Canvis a la API de C"
msgid "Other changes"
msgstr "Altres canvis"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Link permanent a aquest títol"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Link permanent a aquesta definició"
@@ -724,37 +738,12 @@ msgstr "Link permanent a aquesta definició"
msgid "Hide Search Matches"
msgstr "Oculta Resultats de Cerca"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Cercant"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Preparant la cerca..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", a "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 ""
-"La teva cerca no ha donat resultats. Assegura't que totes les paraules "
-"estan ben escrites i que has seleccionat prou categories."
-
-#: sphinx/themes/basic/static/searchtools.js:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Cerca finalitzada, s'han trobat %s pàgin(a/es) de resultats."
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -762,22 +751,49 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Versió"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "ve de la pàgina anterior"
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr "Continua a la pàgina següent"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[imatge]"
+
+#~ msgid "Platforms: "
+#~ msgstr "Plataformes: "
+
+#~ msgid "Searching"
+#~ msgstr "Cercant"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Preparant la cerca..."
+
+#~ msgid ", in "
+#~ msgstr ", a "
+
+#~ 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 ""
+#~ "La teva cerca no ha donat "
+#~ "resultats. Assegura't que totes les "
+#~ "paraules estan ben escrites i que "
+#~ "has seleccionat prou categories."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Cerca finalitzada, s'han trobat %s pàgin(a/es) de resultats."
+
diff --git a/sphinx/locale/cs/LC_MESSAGES/sphinx.js b/sphinx/locale/cs/LC_MESSAGES/sphinx.js
index 8fdd489aa..011ef5421 100644
--- a/sphinx/locale/cs/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/cs/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "cs", "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", "messages": {"Search Results": "V\u00fdsledky hled\u00e1n\u00ed", "Preparing search...": "P\u0159ipravuji vyhled\u00e1v\u00e1n\u00ed....", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Nenalezli jsme \u017e\u00e1dn\u00fd dokument. Ujist\u011bte se pros\u00edm, \u017ee v\u0161echna slova jsou spr\u00e1vn\u011b a \u017ee jste vybral dostatek kategori\u00ed.", "Search finished, found %s page(s) matching the search query.": "Vyhled\u00e1v\u00e1n\u00ed skon\u010dilo, nalezeno %s stran.", ", in ": ", v", "Expand sidebar": "", "Permalink to this headline": "Trval\u00fd odkaz na tento nadpis", "Searching": "Hled\u00e1m", "Collapse sidebar": "", "Permalink to this definition": "Trval\u00fd odkaz na tuto definici", "Hide Search Matches": "Skr\u00fdt v\u00fdsledky vyhled\u00e1v\u00e1n\u00ed"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "cs", "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", "messages": {"Hide Search Matches": "Skr\u00fdt v\u00fdsledky vyhled\u00e1v\u00e1n\u00ed", "Permalink to this definition": "Trval\u00fd odkaz na tuto definici", "Expand sidebar": "", "Permalink to this headline": "Trval\u00fd odkaz na tento nadpis", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/cs/LC_MESSAGES/sphinx.mo b/sphinx/locale/cs/LC_MESSAGES/sphinx.mo
index 8092a9927..d5b560eb0 100644
Binary files a/sphinx/locale/cs/LC_MESSAGES/sphinx.mo and b/sphinx/locale/cs/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/cs/LC_MESSAGES/sphinx.po b/sphinx/locale/cs/LC_MESSAGES/sphinx.po
index 535d4b9fb..4f3f620c8 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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Pavel Kosina \n"
"Language-Team: Pavel Kosina \n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
@@ -16,379 +16,395 @@ msgstr ""
"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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d.%m.%Y"
-#: sphinx/roles.py:174
-#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+#: sphinx/environment.py:1624
+#, fuzzy, python-format
+msgid "see %s"
+msgstr "viz %s"
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, fuzzy, python-format
+msgid "see also %s"
+msgstr "viz také %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Vestavěné funkce "
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Úroveň modulů"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d.%m.%Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Rejstřík indexů"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "index"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "další"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "předchozí"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr "(v"
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Index"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Autor sekce: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Autor modulu: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "Autor modulu: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Autor: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Viz také"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Parametry"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Vrací"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Typ navrácené hodnoty"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (C funkce)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (člen C)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C makro)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C typ)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C proměnná)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "funkce"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "člen"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr ""
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "typ"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
#, fuzzy
msgid "variable"
msgstr "Proměnná"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (C++ třída)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (C++ typ)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (člen C++)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (C++ funkce)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "třída"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (vestavěná funkce)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (metoda %s)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (třída)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s() (atribut %s)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "Parametry"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "atribut"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "Proměnná"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Vyvolá"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (v modulu %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s() (vestavěná proměnná)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s() (v modulu %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s () (vestavěná proměnná)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s() (třída v %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (metoda %s.%s)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (statická metoda %s.%s)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (statická metoda %s)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (metoda %s.%s)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (metoda %s)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s() (atribut %s.%s)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Platformy: "
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (module)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
-msgstr "Rejstřík modulů "
+msgstr "Rejstřík modulů"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "moduly"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Zastaralé"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "výjimka"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
-msgstr "%s() (metoda %s)"
+msgstr ""
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "statická metoda"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "modul"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (zastaralé)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
+#: sphinx/domains/rst.py:57
+#, python-format
msgid "%s (role)"
-msgstr "%s (module)"
+msgstr ""
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
-#, fuzzy
+#: sphinx/domains/rst.py:107
msgid "role"
-msgstr "modul"
+msgstr ""
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "promměná prostředí, %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%s parametry příkazového řádku; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "promměná prostředí"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Index"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Rejstřík modulů "
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Vyhledávací stránka"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -400,110 +416,110 @@ msgstr "Todo"
#: sphinx/ext/todo.py:109
#, fuzzy, python-format
msgid "(The <> is located in %s, line %d.)"
-msgstr "(Původní záznam je v %s, řádka %d a lze jej nalézt"
+msgstr "(Původní záznam je v %s, řádka %d.)"
#: sphinx/ext/todo.py:117
msgid "original entry"
msgstr ""
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "modul"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Výstraha"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Upozornění"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Nebezpečí"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Chyba"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Rada"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Důležité"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Poznámka"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Viz také"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Tip"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Varování"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Nové ve verzi %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Změněno ve verzi %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Zastaralé od verze %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "klíčové slovo"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "operátor"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "objekt"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "příkaz"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "vestavěná funkce"
@@ -512,8 +528,8 @@ msgstr "vestavěná funkce"
msgid "Table Of Contents"
msgstr "Obsah"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Hledání"
@@ -562,15 +578,15 @@ msgstr "rychlý přístup ke všem modulům"
msgid "all functions, classes, terms"
msgstr "všechny funkce, třídy, termíny"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Index – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Plný index na jedné stránce"
@@ -582,39 +598,39 @@ msgstr "Index podle písmene"
msgid "can be huge"
msgstr "může být obrovský"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navigace"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Hledání uvnitř %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "O těchto dokumentech"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Veškerá práva vyhrazena"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Aktualizováno dne %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -644,13 +660,13 @@ msgstr "Další téma"
msgid "next chapter"
msgstr "další kapitola"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr ""
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -662,16 +678,15 @@ msgstr ""
"Vyhledávání hledá automaticky všechna slova. Nebudou tedy nalezeny "
"stránky, obsahující méně slov."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "hledej"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Výsledky hledání"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Nic jsme nenašli."
@@ -711,12 +726,12 @@ msgstr "Změny API"
msgid "Other changes"
msgstr "Ostatní změny"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Trvalý odkaz na tento nadpis"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Trvalý odkaz na tuto definici"
@@ -724,37 +739,12 @@ msgstr "Trvalý odkaz na tuto definici"
msgid "Hide Search Matches"
msgstr "Skrýt výsledky vyhledávání"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Hledám"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Připravuji vyhledávání...."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", v"
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 ""
-"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:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Vyhledávání skončilo, nalezeno %s stran."
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -762,23 +752,50 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Vydání"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
#, fuzzy
msgid "Continued on next page"
msgstr "Plný index na jedné stránce"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[obrázek]"
+
+#~ msgid "Platforms: "
+#~ msgstr "Platformy: "
+
+#~ msgid "Searching"
+#~ msgstr "Hledám"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Připravuji vyhledávání...."
+
+#~ msgid ", in "
+#~ msgstr ", v"
+
+#~ 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 ""
+#~ "Nenalezli jsme žádný dokument. Ujistěte "
+#~ "se prosím, že všechna slova jsou "
+#~ "správně a že jste vybral dostatek "
+#~ "kategorií."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Vyhledávání skončilo, nalezeno %s stran."
+
diff --git a/sphinx/locale/da/LC_MESSAGES/sphinx.js b/sphinx/locale/da/LC_MESSAGES/sphinx.js
index d17efc474..c28fab306 100644
--- a/sphinx/locale/da/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/da/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "da", "plural_expr": "(n != 1)", "messages": {"Search Results": "S\u00f8geresultater", "Preparing search...": "Forbereder s\u00f8gning...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Din s\u00f8gning gav ingen resultater. Kontroll\u00e9r venligst at alle ord er stavet korrekt, og at du har valgt nok kategorier.", "Search finished, found %s page(s) matching the search query.": "S\u00f8gningen fuldf\u00f8rt - fandt %s sider for denne s\u00f8gning.", ", in ": ", i ", "Permalink to this headline": "Permalink til denne overskrift", "Searching": "S\u00f8ger", "Permalink to this definition": "Permalink til denne definition", "Hide Search Matches": "Skjul s\u00f8geresultater"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "da", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Skjul s\u00f8geresultater", "Permalink to this definition": "Permalink til denne definition", "Expand sidebar": "Udfold sidebj\u00e6lke", "Permalink to this headline": "Permalink til denne overskrift", "Collapse sidebar": "Sammenfold sidebj\u00e6lke"}});
\ No newline at end of file
diff --git a/sphinx/locale/da/LC_MESSAGES/sphinx.mo b/sphinx/locale/da/LC_MESSAGES/sphinx.mo
index a47f10deb..018ac7f0a 100644
Binary files a/sphinx/locale/da/LC_MESSAGES/sphinx.mo and b/sphinx/locale/da/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/da/LC_MESSAGES/sphinx.po b/sphinx/locale/da/LC_MESSAGES/sphinx.po
index c975e747e..752936bb5 100644
--- a/sphinx/locale/da/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/da/LC_MESSAGES/sphinx.po
@@ -1,509 +1,599 @@
-# Translations template for Sphinx.
-# Copyright (C) 2009 The Sphinx Team
+# Danish translations for Sphinx.
+# Copyright (C) 2009, 2011 The Sphinx Team
# This file is distributed under the same license as the Sphinx project.
#
-# Ask Hjorth Larsen , 2010.
+# Ask Hjorth Larsen , 2010, 2011.
msgid ""
msgstr ""
"Project-Id-Version: Sphinx 1.0pre/[?1034h2e1ab15e035e\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2009-11-08 16:28+0100\n"
-"PO-Revision-Date: 2010-06-03 23:47+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Ask Hjorth Larsen \n"
-"Language-Team: Danish \n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\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"
+"Generated-By: Babel 0.9.5\n"
-# 21. april, 2010
-#: sphinx/environment.py:130 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
+#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d. %B, %Y"
-#: sphinx/environment.py:348 sphinx/themes/basic/genindex-single.html:2
-#: sphinx/themes/basic/genindex-split.html:2
-#: sphinx/themes/basic/genindex-split.html:5
-#: sphinx/themes/basic/genindex.html:2 sphinx/themes/basic/genindex.html:5
-#: sphinx/themes/basic/genindex.html:48 sphinx/themes/basic/layout.html:134
-#: sphinx/writers/latex.py:190
-msgid "Index"
-msgstr "Indeks"
-
-#: sphinx/environment.py:349 sphinx/writers/latex.py:189
-msgid "Module Index"
-msgstr "Modulindeks"
-
-# Ikke 'Søg på side'
-#: sphinx/environment.py:350 sphinx/themes/basic/defindex.html:16
-msgid "Search Page"
-msgstr "Søgeside"
-
-#: sphinx/roles.py:167
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr "se %s"
-#: sphinx/builders/changes.py:70
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr "se også %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Indbyggede"
-#: sphinx/builders/changes.py:72
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Modulniveau"
-# Apr 21, 2010
-#: sphinx/builders/html.py:224
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d. %b, %Y"
-#: sphinx/builders/html.py:243 sphinx/themes/basic/defindex.html:21
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Generelt indeks"
-#: sphinx/builders/html.py:243
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "indeks"
-#: sphinx/builders/html.py:247 sphinx/builders/htmlhelp.py:220
-#: sphinx/builders/qthelp.py:133 sphinx/themes/basic/defindex.html:19
-#: sphinx/themes/basic/modindex.html:2 sphinx/themes/basic/modindex.html:13
-#: sphinx/themes/scrolls/modindex.html:2 sphinx/themes/scrolls/modindex.html:13
-msgid "Global Module Index"
-msgstr "Globalt modulindeks"
-
-#: sphinx/builders/html.py:248
-msgid "modules"
-msgstr "moduler"
-
-#: sphinx/builders/html.py:304
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "næste"
-#: sphinx/builders/html.py:313
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "forrige"
-#: sphinx/builders/latex.py:162
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (i "
-#: sphinx/directives/__init__.py:78 sphinx/directives/__init__.py:79
-#: sphinx/directives/__init__.py:80 sphinx/directives/__init__.py:81
-msgid "Raises"
-msgstr "Rejser"
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Indeks"
-#: sphinx/directives/__init__.py:82 sphinx/directives/__init__.py:83
-#: sphinx/directives/__init__.py:84
-msgid "Variable"
-msgstr "Variabel"
-
-#: sphinx/directives/__init__.py:85 sphinx/directives/__init__.py:86
-#: sphinx/directives/__init__.py:92 sphinx/directives/__init__.py:93
-msgid "Returns"
-msgstr "Returnerer"
-
-#: sphinx/directives/__init__.py:94
-msgid "Return type"
-msgstr "Returtype"
-
-#: sphinx/directives/__init__.py:169
-msgid "Parameter"
-msgstr "Parameter"
-
-#: sphinx/directives/__init__.py:173
-msgid "Parameters"
-msgstr "Parametre"
-
-#: sphinx/directives/other.py:127
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Afsnitsforfatter: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Modulforfatter: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
+msgid "Code author: "
+msgstr "Kodeforfatter: "
+
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Forfatter: "
-#: sphinx/directives/other.py:233
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Se også"
-#: sphinx/domains/c.py:124
+#: sphinx/domains/__init__.py:244
+#, python-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
+msgid "Parameters"
+msgstr "Parametre"
+
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
+msgid "Returns"
+msgstr "Returnerer"
+
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
+msgid "Return type"
+msgstr "Returtype"
+
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (C-funktion)"
-#: sphinx/domains/c.py:126
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (C-medlem)"
-#: sphinx/domains/c.py:128
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C-makro)"
-#: sphinx/domains/c.py:130
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C-type)"
-#: sphinx/domains/c.py:132
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C-variabel)"
-#: sphinx/domains/c.py:162
-msgid "C function"
-msgstr "C-funktion"
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
+msgid "function"
+msgstr "funktion"
-#: sphinx/domains/c.py:163
-msgid "C member"
-msgstr "C-medlem"
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
+msgid "member"
+msgstr "medlem"
-#: sphinx/domains/c.py:164
-msgid "C macro"
-msgstr "C-makro"
+#: sphinx/domains/c.py:206
+msgid "macro"
+msgstr "makro"
-#: sphinx/domains/c.py:165
-msgid "C type"
-msgstr "C-type"
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
+msgid "type"
+msgstr "type"
-#: sphinx/domains/c.py:166
-msgid "C variable"
-msgstr "C-variabel"
+#: sphinx/domains/c.py:208
+msgid "variable"
+msgstr "variabel"
-#: sphinx/domains/python.py:186
+#: sphinx/domains/cpp.py:897
+#, python-format
+msgid "%s (C++ class)"
+msgstr "%s (C++-klasse)"
+
+#: sphinx/domains/cpp.py:912
+#, python-format
+msgid "%s (C++ type)"
+msgstr "%s (C++-type)"
+
+#: sphinx/domains/cpp.py:931
+#, python-format
+msgid "%s (C++ member)"
+msgstr "%s (C++-medlem)"
+
+#: sphinx/domains/cpp.py:983
+#, python-format
+msgid "%s (C++ function)"
+msgstr "%s (C++-funktion)"
+
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
+msgid "class"
+msgstr "klasse"
+
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (indbygget funktion)"
-#: sphinx/domains/python.py:187 sphinx/domains/python.py:244
-#: sphinx/domains/python.py:256 sphinx/domains/python.py:269
-#, python-format
-msgid "%s() (in module %s)"
-msgstr "%s() (i modulet %s)"
-
-#: sphinx/domains/python.py:190
-#, python-format
-msgid "%s (built-in variable)"
-msgstr "%s (indbygget variabel)"
-
-#: sphinx/domains/python.py:191 sphinx/domains/python.py:282
-#, python-format
-msgid "%s (in module %s)"
-msgstr "%s (i modulet %s)"
-
-#: sphinx/domains/python.py:207
-#, python-format
-msgid "%s (built-in class)"
-msgstr "%s (indbygget klasse)"
-
-#: sphinx/domains/python.py:208
-#, python-format
-msgid "%s (class in %s)"
-msgstr "%s (klasse i %s)"
-
-#: sphinx/domains/python.py:248
-#, python-format
-msgid "%s() (%s.%s method)"
-msgstr "%s() (metode i %s.%s)"
-
-#: sphinx/domains/python.py:250
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (metode i %s)"
-#: sphinx/domains/python.py:260
+#: sphinx/domains/javascript.py:109
#, python-format
-msgid "%s() (%s.%s static method)"
-msgstr "%s() (statisk metode i %s.%s)"
+msgid "%s() (class)"
+msgstr "%s() (klasse)"
-#: sphinx/domains/python.py:263
+#: sphinx/domains/javascript.py:111
#, python-format
-msgid "%s() (%s static method)"
-msgstr "%s() (statisk metode i %s)"
+msgid "%s (global variable or constant)"
+msgstr "%s (global variabel eller konstant)"
-#: sphinx/domains/python.py:273
-#, python-format
-msgid "%s() (%s.%s class method)"
-msgstr "%s() (klassemetode i %s.%s)"
-
-#: sphinx/domains/python.py:276
-#, python-format
-msgid "%s() (%s class method)"
-msgstr "%s() (klassemetode i %s)"
-
-#: sphinx/domains/python.py:286
-#, python-format
-msgid "%s (%s.%s attribute)"
-msgstr "%s (attribut i %s.%s)"
-
-#: sphinx/domains/python.py:288
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (attribut i %s)"
-#: sphinx/domains/python.py:334
-msgid "Platforms: "
-msgstr "Platforme: "
+#: sphinx/domains/javascript.py:122
+msgid "Arguments"
+msgstr "Parametre"
-#: sphinx/domains/python.py:340
+#: sphinx/domains/javascript.py:125
+msgid "Throws"
+msgstr "Kaster"
+
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
+msgid "data"
+msgstr "data"
+
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
+msgid "attribute"
+msgstr "attribut"
+
+#: sphinx/domains/python.py:100
+msgid "Variables"
+msgstr "Variable"
+
+#: sphinx/domains/python.py:104
+msgid "Raises"
+msgstr "Rejser"
+
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
+#, python-format
+msgid "%s() (in module %s)"
+msgstr "%s() (i modulet %s)"
+
+#: sphinx/domains/python.py:258
+#, python-format
+msgid "%s (built-in variable)"
+msgstr "%s (indbygget variabel)"
+
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
+#, python-format
+msgid "%s (in module %s)"
+msgstr "%s (i modulet %s)"
+
+#: sphinx/domains/python.py:275
+#, python-format
+msgid "%s (built-in class)"
+msgstr "%s (indbygget klasse)"
+
+#: sphinx/domains/python.py:276
+#, python-format
+msgid "%s (class in %s)"
+msgstr "%s (klasse i %s)"
+
+#: sphinx/domains/python.py:316
+#, python-format
+msgid "%s() (%s.%s method)"
+msgstr "%s() (metode i %s.%s)"
+
+#: sphinx/domains/python.py:328
+#, python-format
+msgid "%s() (%s.%s static method)"
+msgstr "%s() (statisk metode i %s.%s)"
+
+#: sphinx/domains/python.py:331
+#, python-format
+msgid "%s() (%s static method)"
+msgstr "%s() (statisk metode i %s)"
+
+#: sphinx/domains/python.py:341
+#, python-format
+msgid "%s() (%s.%s class method)"
+msgstr "%s() (klassemetode i %s.%s)"
+
+#: sphinx/domains/python.py:344
+#, python-format
+msgid "%s() (%s class method)"
+msgstr "%s() (klassemetode i %s)"
+
+#: sphinx/domains/python.py:354
+#, python-format
+msgid "%s (%s.%s attribute)"
+msgstr "%s (attribut i %s.%s)"
+
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (modul)"
-#: sphinx/domains/python.py:396
-msgid "function"
-msgstr "funktion"
+#: sphinx/domains/python.py:490
+msgid "Python Module Index"
+msgstr "Python-modulindeks"
-#: sphinx/domains/python.py:397
-msgid "data"
-msgstr "data"
+#: sphinx/domains/python.py:491
+msgid "modules"
+msgstr "moduler"
-#: sphinx/domains/python.py:398
-msgid "class"
-msgstr "klasse"
+#: sphinx/domains/python.py:536
+msgid "Deprecated"
+msgstr "Forældet"
-#: sphinx/domains/python.py:399 sphinx/locale/__init__.py:161
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "undtagelse"
-#: sphinx/domains/python.py:400
+#: sphinx/domains/python.py:562
msgid "method"
msgstr "metode"
-#: sphinx/domains/python.py:401
-msgid "attribute"
-msgstr "attribut"
+#: sphinx/domains/python.py:563
+msgid "class method"
+msgstr "klassemetode"
-#: sphinx/domains/python.py:402 sphinx/locale/__init__.py:157
+#: sphinx/domains/python.py:564
+msgid "static method"
+msgstr "statisk metode"
+
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "modul"
-#: sphinx/domains/std.py:67 sphinx/domains/std.py:83
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (forældet)"
+
+#: sphinx/domains/rst.py:55
+#, python-format
+msgid "%s (directive)"
+msgstr "%s (direktiv)"
+
+#: sphinx/domains/rst.py:57
+#, python-format
+msgid "%s (role)"
+msgstr "%s (rolle)"
+
+#: sphinx/domains/rst.py:106
+msgid "directive"
+msgstr "direktiv"
+
+#: sphinx/domains/rst.py:107
+msgid "role"
+msgstr "rolle"
+
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "miljøvariabel; %s"
-#: sphinx/domains/std.py:156
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%skommandolinjetilvalg; %s"
-#: sphinx/domains/std.py:324
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr "begreb i ordliste"
-#: sphinx/domains/std.py:325
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr "grammatisk element"
-#: sphinx/domains/std.py:326
+#: sphinx/domains/std.py:395
+msgid "reference label"
+msgstr "referenceetiket"
+
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "miljøvariabel"
-#: sphinx/domains/std.py:327
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr "programtilvalg"
-#: sphinx/ext/autodoc.py:892
+#: sphinx/domains/std.py:428
+msgid "Module Index"
+msgstr "Modulindeks"
+
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
+msgid "Search Page"
+msgstr "Søgeside"
+
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " Baser: %s"
-#: sphinx/ext/autodoc.py:925
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "alias for :class:`%s`"
-#: sphinx/ext/todo.py:40
+#: sphinx/ext/todo.py:41
msgid "Todo"
msgstr "Todo"
-#: sphinx/ext/todo.py:98
+#: sphinx/ext/todo.py:109
#, python-format
-msgid "(The original entry is located in %s, line %d and can be found "
-msgstr "(Det oprindelige punkt befinder sig i %s, linje %d, og kan findes "
+msgid "(The <> is located in %s, line %d.)"
+msgstr "(Det <> befinder sig i %s, linje %d.)"
-#: sphinx/ext/todo.py:104
-msgid "here"
-msgstr "her"
+#: sphinx/ext/todo.py:117
+msgid "original entry"
+msgstr "oprindeligt punkt"
-#: sphinx/locale/__init__.py:138
+#: sphinx/ext/viewcode.py:70
+msgid "[source]"
+msgstr "[kilde]"
+
+#: sphinx/ext/viewcode.py:117
+msgid "[docs]"
+msgstr "[dok]"
+
+#: sphinx/ext/viewcode.py:131
+msgid "Module code"
+msgstr "Modulkode"
+
+#: sphinx/ext/viewcode.py:137
+#, python-format
+msgid "Source code for %s "
+msgstr "Kildekode for %s "
+
+#: sphinx/ext/viewcode.py:164
+msgid "Overview: module code"
+msgstr "Oversigt: modulkode"
+
+#: sphinx/ext/viewcode.py:165
+msgid "All modules for which code is available "
+msgstr "Alle moduler, der er kode tilgængelig for "
+
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Vær opmærksom"
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Forsigtig"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Fare"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Fejl"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Fif"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Vigtigt"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Bemærk"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Se også"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Tip"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Advarsel"
-#: sphinx/locale/__init__.py:151
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Ny i version %s"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Ændret i version %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
-msgstr "Deprecieret siden version %s"
+msgstr "Forældet siden version %s"
-#: sphinx/locale/__init__.py:158
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "nøgleord"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "operator"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "objekt"
-#: sphinx/locale/__init__.py:162
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "erklæring"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "indbygget funktion"
-#: sphinx/themes/basic/defindex.html:2
+#: sphinx/themes/agogo/layout.html:45 sphinx/themes/basic/globaltoc.html:10
+#: sphinx/themes/basic/localtoc.html:11
+msgid "Table Of Contents"
+msgstr "Indholdsfortegnelse"
+
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
+msgid "Search"
+msgstr "Søg"
+
+#: sphinx/themes/agogo/layout.html:52 sphinx/themes/basic/searchbox.html:15
+msgid "Go"
+msgstr "Søg"
+
+#: sphinx/themes/agogo/layout.html:57 sphinx/themes/basic/searchbox.html:20
+msgid "Enter search terms or a module, class or function name."
+msgstr "Indtast søgeord eller navnet på et modul, en klasse eller en funktion."
+
+#: sphinx/themes/agogo/layout.html:78 sphinx/themes/basic/sourcelink.html:14
+msgid "Show Source"
+msgstr "Vis kilde"
+
+#: sphinx/themes/basic/defindex.html:11
msgid "Overview"
msgstr "Oversigt"
-#: sphinx/themes/basic/defindex.html:11
+#: sphinx/themes/basic/defindex.html:20
msgid "Indices and tables:"
msgstr "Indeks og tabeller:"
-#: sphinx/themes/basic/defindex.html:14
+#: sphinx/themes/basic/defindex.html:23
msgid "Complete Table of Contents"
msgstr "Fuldstændig indholdsfortegnelse"
-#: sphinx/themes/basic/defindex.html:15
+#: sphinx/themes/basic/defindex.html:24
msgid "lists all sections and subsections"
msgstr "viser alle afsnit og underafsnit"
-#: sphinx/themes/basic/defindex.html:17
+#: sphinx/themes/basic/defindex.html:26
msgid "search this documentation"
msgstr "søg i denne dokumentation"
-#: sphinx/themes/basic/defindex.html:20
+#: sphinx/themes/basic/defindex.html:28
+msgid "Global Module Index"
+msgstr "Globalt modulindeks"
+
+#: sphinx/themes/basic/defindex.html:29
msgid "quick access to all modules"
msgstr "hurtig adgang til alle moduler"
-#: sphinx/themes/basic/defindex.html:22
+#: sphinx/themes/basic/defindex.html:31
msgid "all functions, classes, terms"
msgstr "alle funktioner, klasser, begreber"
-#: sphinx/themes/basic/genindex-single.html:5
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Indeks – %(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
+#: sphinx/themes/basic/genindex-single.html:63
+#: sphinx/themes/basic/genindex-split.html:24
+#: sphinx/themes/basic/genindex-split.html:38
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Fuldt indeks på én side"
-#: sphinx/themes/basic/genindex-split.html:7
+#: sphinx/themes/basic/genindex-split.html:16
msgid "Index pages by letter"
msgstr "Indeksér sider efter bogstav"
-# refererer til indeks
-#: sphinx/themes/basic/genindex-split.html:15
+#: sphinx/themes/basic/genindex-split.html:25
msgid "can be huge"
msgstr "kan være enormt"
-#: sphinx/themes/basic/layout.html:10
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navigation"
-#: sphinx/themes/basic/layout.html:42
-msgid "Table Of Contents"
-msgstr "Indholdsfortegnelse"
-
-#: sphinx/themes/basic/layout.html:48
-msgid "Previous topic"
-msgstr "Forrige emne"
-
-#: sphinx/themes/basic/layout.html:50
-msgid "previous chapter"
-msgstr "forrige kapitel"
-
-#: sphinx/themes/basic/layout.html:53
-msgid "Next topic"
-msgstr "Næste emne"
-
-#: sphinx/themes/basic/layout.html:55
-msgid "next chapter"
-msgstr "næste kapitel"
-
-#: sphinx/themes/basic/layout.html:60
-msgid "This Page"
-msgstr "Denne side"
-
-#: sphinx/themes/basic/layout.html:63
-msgid "Show Source"
-msgstr "Vis kilde"
-
-#: sphinx/themes/basic/layout.html:73
-msgid "Quick search"
-msgstr "Hurtig søgning"
-
-# Referencen fra layout.html:76 er til en søgeknap
-#: sphinx/themes/basic/layout.html:76
-msgid "Go"
-msgstr "Søg"
-
-#: sphinx/themes/basic/layout.html:81
-msgid "Enter search terms or a module, class or function name."
-msgstr "Indtast søgeord eller navnet på et modul, en klasse eller en funktion."
-
#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
@@ -513,48 +603,56 @@ msgstr "Søg i %(docstitle)s"
msgid "About these documents"
msgstr "Om disse dokumenter"
-#: sphinx/themes/basic/layout.html:137 sphinx/themes/basic/search.html:2
-#: sphinx/themes/basic/search.html:5
-msgid "Search"
-msgstr "Søg"
-
#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Ophavsret"
-#: sphinx/themes/basic/layout.html:187 sphinx/themes/scrolls/layout.html:83
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Ophavsret %(copyright)s."
-#: sphinx/themes/basic/layout.html:189 sphinx/themes/scrolls/layout.html:85
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Ophavsret %(copyright)s."
-# datoformatet passer ikke med "den %(last_updated)s"
-#: sphinx/themes/basic/layout.html:193 sphinx/themes/scrolls/layout.html:89
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Sidst opdateret %(last_updated)s."
-#: sphinx/themes/basic/layout.html:196 sphinx/themes/scrolls/layout.html:92
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
"%(sphinx_version)s."
-msgstr "Bygget med Sphinx %(sphinx_version)s."
-
-#: sphinx/themes/basic/modindex.html:36 sphinx/themes/scrolls/modindex.html:37
-msgid "Deprecated"
-msgstr "Deprecieret"
+msgstr ""
+"Bygget med Sphinx "
+"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4
#, python-format
msgid "Search %(docstitle)s"
msgstr "Søg i %(docstitle)s"
-#: sphinx/themes/basic/search.html:9
+#: sphinx/themes/basic/relations.html:11
+msgid "Previous topic"
+msgstr "Forrige emne"
+
+#: sphinx/themes/basic/relations.html:13
+msgid "previous chapter"
+msgstr "forrige kapitel"
+
+#: sphinx/themes/basic/relations.html:16
+msgid "Next topic"
+msgstr "Næste emne"
+
+#: sphinx/themes/basic/relations.html:18
+msgid "next chapter"
+msgstr "næste kapitel"
+
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
@@ -562,7 +660,7 @@ msgstr ""
"Aktivér venligst JavaScript for at aktivere\n"
" søgefunktionalitet."
-#: sphinx/themes/basic/search.html:14
+#: sphinx/themes/basic/search.html:29
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"
@@ -574,19 +672,26 @@ msgstr ""
" automatisk vil søge på alle ordene. Sider, der indeholder\n"
" færre ord, vil ikke indgå i resultaterne."
-#: sphinx/themes/basic/search.html:21
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "søg"
-#: sphinx/themes/basic/search.html:25
-#: sphinx/themes/basic/static/searchtools.js:473
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Søgeresultater"
-#: sphinx/themes/basic/search.html:27
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Din søgning gav ingen resultater."
+#: sphinx/themes/basic/searchbox.html:12
+msgid "Quick search"
+msgstr "Hurtig søgning"
+
+#: sphinx/themes/basic/sourcelink.html:11
+msgid "This Page"
+msgstr "Denne side"
+
#: sphinx/themes/basic/changes/frameset.html:5
#: sphinx/themes/basic/changes/versionchanges.html:12
#, python-format
@@ -615,64 +720,75 @@ msgstr "Ændringer i C-API"
msgid "Other changes"
msgstr "Andre ændringer"
-#: sphinx/themes/basic/static/doctools.js:138 sphinx/writers/html.py:462
-#: sphinx/writers/html.py:467
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Permalink til denne overskrift"
-#: sphinx/themes/basic/static/doctools.js:144 sphinx/writers/html.py:80
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Permalink til denne definition"
-#: sphinx/themes/basic/static/doctools.js:173
+#: sphinx/themes/basic/static/doctools.js:189
msgid "Hide Search Matches"
msgstr "Skjul søgeresultater"
-#: sphinx/themes/basic/static/searchtools.js:274
-msgid "Searching"
-msgstr "Søger"
+#: sphinx/themes/default/static/sidebar.js:69
+msgid "Expand sidebar"
+msgstr "Udfold sidebjælke"
-#: sphinx/themes/basic/static/searchtools.js:279
-msgid "Preparing search..."
-msgstr "Forbereder søgning..."
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
+msgid "Collapse sidebar"
+msgstr "Sammenfold sidebjælke"
-#: sphinx/themes/basic/static/searchtools.js:352
-msgid ", in "
-msgstr ", i "
+#: sphinx/themes/haiku/layout.html:26
+msgid "Contents"
+msgstr "Indhold"
-#: sphinx/themes/basic/static/searchtools.js:475
-msgid ""
-"Your search did not match any documents. Please make sure that all words "
-"are spelled correctly and that you've selected enough categories."
-msgstr "Din søgning gav ingen resultater. Kontrollér venligst at alle ord er stavet korrekt, og at du har valgt nok kategorier."
-
-#: sphinx/themes/basic/static/searchtools.js:477
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Søgningen fuldført - fandt %s sider for denne søgning."
-
-#: sphinx/writers/latex.py:187
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Udgave"
-#: sphinx/writers/latex.py:579
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr "Fodnoter"
-#: sphinx/writers/latex.py:647
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "fortsat fra forrige side"
-#: sphinx/writers/latex.py:652
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr "Fortsættes på næste side"
-#: sphinx/writers/text.py:166
-#, python-format
-msgid "Platform: %s"
-msgstr "Platform: %s"
-
-#: sphinx/writers/text.py:428
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[billede]"
+#~ msgid "Platforms: "
+#~ msgstr "Platforme: "
+
+#~ msgid "Searching"
+#~ msgstr "Søger"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Forbereder søgning..."
+
+#~ msgid ", in "
+#~ msgstr ", i "
+
+#~ msgid ""
+#~ "Your search did not match any "
+#~ "documents. Please make sure that all "
+#~ "words are spelled correctly and that "
+#~ "you've selected enough categories."
+#~ msgstr ""
+#~ "Din søgning gav ingen resultater. "
+#~ "Kontrollér venligst at alle ord er "
+#~ "stavet korrekt, og at du har valgt"
+#~ " nok kategorier."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Søgningen fuldført - fandt %s sider for denne søgning."
+
diff --git a/sphinx/locale/de/LC_MESSAGES/sphinx.js b/sphinx/locale/de/LC_MESSAGES/sphinx.js
index 5409d6d9d..665492b11 100644
--- a/sphinx/locale/de/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/de/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "de", "plural_expr": "(n != 1)", "messages": {"Search Results": "Suchergebnisse", "Preparing search...": "Suche wird vorbereitet...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Es wurden keine zutreffenden Dokumente gefunden. Haben Sie alle Suchbegriffe richtig geschrieben und gen\u00fcgend Kategorien ausgew\u00e4hlt?", "Search finished, found %s page(s) matching the search query.": "Suche beendet, %s zutreffende Seite(n) gefunden.", ", in ": ", in ", "Expand sidebar": "Sidebar ausklappen", "Permalink to this headline": "Permalink zu dieser \u00dcberschrift", "Searching": "Suche...", "Collapse sidebar": "Sidebar einklappen", "Permalink to this definition": "Permalink zu dieser Definition", "Hide Search Matches": "Suchergebnisse ausblenden"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "de", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Suchergebnisse ausblenden", "Permalink to this definition": "Permalink zu dieser Definition", "Expand sidebar": "Sidebar ausklappen", "Permalink to this headline": "Permalink zu dieser \u00dcberschrift", "Collapse sidebar": "Sidebar einklappen"}});
\ No newline at end of file
diff --git a/sphinx/locale/de/LC_MESSAGES/sphinx.mo b/sphinx/locale/de/LC_MESSAGES/sphinx.mo
index 5657b0ab8..357d46f08 100644
Binary files a/sphinx/locale/de/LC_MESSAGES/sphinx.mo and b/sphinx/locale/de/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/de/LC_MESSAGES/sphinx.po b/sphinx/locale/de/LC_MESSAGES/sphinx.po
index f92ba23cd..a3bebd9d3 100644
--- a/sphinx/locale/de/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/de/LC_MESSAGES/sphinx.po
@@ -7,382 +7,397 @@ 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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Georg Brandl \n"
"Language-Team: de \n"
"Plural-Forms: nplurals=2; plural=(n != 1)\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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d. %m. %Y"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr "siehe %s"
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr "siehe auch %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Builtins"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Modulebene"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d. %m. %Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Allgemeiner Index"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "Index"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "weiter"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "zurück"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (in "
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Stichwortverzeichnis"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Autor des Abschnitts: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Autor des Moduls: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
msgid "Code author: "
msgstr "Autor des Quellcode: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Autor: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Siehe auch"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr "%s-%s"
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Parameter"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Rückgabe"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Rückgabetyp"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (C-Funktion)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (C-Member)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C-Makro)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C-Typ)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C-Variable)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "Funktion"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "Member"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr "Makro"
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "Typ"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
msgid "variable"
msgstr "Variable"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (C++-Klasse)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (C++-Typ)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (C++-Member)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (C++-Funktion)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "Klasse"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (Standard-Funktion)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (Methode von %s)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (Klasse)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr "%s (globale Variable oder Konstante)"
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (Attribut von %s)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
msgid "Arguments"
msgstr "Parameter"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr "Wirft"
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr "Daten"
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
-#, python-format
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "Attribut"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
msgid "Variables"
msgstr "Variablen"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Verursacht"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (in Modul %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (Standard-Variable)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (in Modul %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (Standard-Klasse)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (Klasse in %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (Methode von %s.%s)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (statische Methode von %s.%s)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (statische Methode von %s)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (Klassenmethode von %s.%s)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, python-format
msgid "%s() (%s class method)"
msgstr "%s() (Klassenmethode von %s)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (Attribut von %s.%s)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Plattformen: "
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (Modul)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
msgid "Python Module Index"
msgstr "Python-Modulindex"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "Module"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Veraltet"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "Exception"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr "Methode"
-#: sphinx/domains/python.py:502
-#, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
msgstr "Klassenmethode"
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "statische Methode"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "Module"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (veraltet)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr "%s (Direktive)"
-#: sphinx/domains/rst.py:55
+#: sphinx/domains/rst.py:57
#, python-format
msgid "%s (role)"
msgstr "%s (Rolle)"
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr "Direktive"
-#: sphinx/domains/rst.py:104
+#: sphinx/domains/rst.py:107
msgid "role"
msgstr "Rolle"
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "Umgebungsvariable; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%sKommandozeilenoption; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr "Glossareintrag"
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr "Grammatik-Token"
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr "Referenz-Label"
-#: sphinx/domains/std.py:331
-#, python-format
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "Umgebungsvariable"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr "Programmoption"
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Stichwortverzeichnis"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Modulindex"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Suche"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " Basisklassen: %s"
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "Alias von :class:`%s`"
@@ -400,103 +415,103 @@ msgstr "(Der <> steht in %s, Zeile %d.)"
msgid "original entry"
msgstr "ursprüngliche Eintrag"
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr "[Quelle]"
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr "[Doku]"
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
msgid "Module code"
msgstr "Modul-Quellcode"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr "Quellcode für %s "
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr "Überblick: Modul-Quellcode"
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr "Alle Module, für die Quellcode verfügbar ist "
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Achtung"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Vorsicht"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Gefahr"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Fehler"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Hinweis"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Wichtig"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Bemerkung"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Siehe auch"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Tipp"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Warnung"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Neu in Version %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Geändert in Version %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Veraltet ab Version %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "Schlüsselwort"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "Operator"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "Objekt"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "Anweisung"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "Standard-Funktion"
@@ -505,8 +520,8 @@ msgstr "Standard-Funktion"
msgid "Table Of Contents"
msgstr "Inhalt"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Suche"
@@ -556,15 +571,15 @@ msgstr "Schneller Zugriff auf alle Module"
msgid "all functions, classes, terms"
msgstr "Alle Funktionen, Klassen, Begriffe"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Stichwortverzeichnis – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Gesamtes Stichwortverzeichnis auf einer Seite"
@@ -576,39 +591,39 @@ msgstr "Stichwortverzeichnis nach Anfangsbuchstabe"
msgid "can be huge"
msgstr "kann groß sein"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navigation"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Suche in %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Über diese Dokumentation"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Zuletzt aktualisiert am %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -638,13 +653,13 @@ msgstr "Nächstes Thema"
msgid "next chapter"
msgstr "nächstes Kapitel"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr "Bitte aktivieren Sie JavaScript, wenn Sie die Suchfunktion nutzen wollen."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -657,16 +672,15 @@ msgstr ""
"all diesen Worten suchen wird. Seiten, die nicht alle Worte enthalten, "
"werden nicht in der Ergebnisliste erscheinen."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "suchen"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Suchergebnisse"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Deine Suche ergab leider keine Treffer."
@@ -706,12 +720,12 @@ msgstr "C API-Änderungen"
msgid "Other changes"
msgstr "Andere Änderungen"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Permalink zu dieser Überschrift"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Permalink zu dieser Definition"
@@ -719,37 +733,12 @@ msgstr "Permalink zu dieser Definition"
msgid "Hide Search Matches"
msgstr "Suchergebnisse ausblenden"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Suche..."
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Suche wird vorbereitet..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", in "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 ""
-"Es wurden keine zutreffenden Dokumente gefunden. Haben Sie alle "
-"Suchbegriffe richtig geschrieben und genügend Kategorien ausgewählt?"
-
-#: sphinx/themes/basic/static/searchtools.js:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Suche beendet, %s zutreffende Seite(n) gefunden."
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr "Sidebar ausklappen"
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr "Sidebar einklappen"
@@ -757,23 +746,49 @@ msgstr "Sidebar einklappen"
msgid "Contents"
msgstr "Inhalt"
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Release"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr "Fußnoten"
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "Fortsetzung der vorherigen Seite"
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr "Fortsetzung auf der nächsten Seite"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[Bild]"
+#~ msgid "Platforms: "
+#~ msgstr "Plattformen: "
+
+#~ msgid "Searching"
+#~ msgstr "Suche..."
+
+#~ msgid "Preparing search..."
+#~ msgstr "Suche wird vorbereitet..."
+
+#~ msgid ", in "
+#~ msgstr ", in "
+
+#~ 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 ""
+#~ "Es wurden keine zutreffenden Dokumente "
+#~ "gefunden. Haben Sie alle Suchbegriffe "
+#~ "richtig geschrieben und genügend Kategorien"
+#~ " ausgewählt?"
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Suche beendet, %s zutreffende Seite(n) gefunden."
+
diff --git a/sphinx/locale/es/LC_MESSAGES/sphinx.js b/sphinx/locale/es/LC_MESSAGES/sphinx.js
index 098e8b5df..8ccbc0ca8 100644
--- a/sphinx/locale/es/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/es/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "es", "plural_expr": "(n != 1)", "messages": {"Search Results": "Resultados de la b\u00fasqueda", "Preparing search...": "Preparando la b\u00fasqueda", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "La b\u00fasqueda no dio ning\u00fan resultado. Por favor aseg\u00farese que escribi\u00f3 todas las palabras correctamente y que ha seleccionado suficientes categor\u00edas", "Search finished, found %s page(s) matching the search query.": "B\u00fasqueda finalizada, se han encontrado %s p\u00e1gina(s) que concuerdan con su consulta", ", in ": "", "Expand sidebar": "", "Permalink to this headline": "Enlazar permanentemente con este t\u00edtulo", "Searching": "Buscando", "Collapse sidebar": "", "Permalink to this definition": "Enlazar permanentemente con esta definici\u00f3n", "Hide Search Matches": "Coincidencias de la b\u00fasqueda"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "es", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Coincidencias de la b\u00fasqueda", "Permalink to this definition": "Enlazar permanentemente con esta definici\u00f3n", "Expand sidebar": "", "Permalink to this headline": "Enlazar permanentemente con este t\u00edtulo", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/es/LC_MESSAGES/sphinx.mo b/sphinx/locale/es/LC_MESSAGES/sphinx.mo
index c1ee0bfe1..b897ad435 100644
Binary files a/sphinx/locale/es/LC_MESSAGES/sphinx.mo and b/sphinx/locale/es/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/es/LC_MESSAGES/sphinx.po b/sphinx/locale/es/LC_MESSAGES/sphinx.po
index a380a416f..52ed0b74f 100644
--- a/sphinx/locale/es/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/es/LC_MESSAGES/sphinx.po
@@ -8,389 +8,408 @@ 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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Guillem Borrell \n"
"Language-Team: es \n"
"Plural-Forms: nplurals=2; plural=(n != 1)\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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
-#, fuzzy, python-format
+#, python-format
msgid "%B %d, %Y"
msgstr "%d de %B de %Y"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr "ver %s"
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr "ver también %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
#, fuzzy
msgid "Builtins"
msgstr "Funciones de base"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
#, fuzzy
msgid "Module level"
msgstr "Módulos"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b, %Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Índice General"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "índice"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "siguiente"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "anterior"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr ""
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Índice"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Autor de la sección: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Autor del módulo: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "Autor del módulo: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Autor:"
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Ver también"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Parámetros"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Devuelve"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
#, fuzzy
msgid "Return type"
msgstr "Tipo del argumento devuelto"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (función C)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (miembro C)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (macro C)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (tipo C)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (variable C)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "función"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "miembro"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr ""
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "tipo"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
#, fuzzy
msgid "variable"
msgstr "Variable"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (clase C++)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (tipo C++)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, fuzzy, python-format
msgid "%s (C++ member)"
msgstr "%s (miembro C++)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, fuzzy, python-format
msgid "%s (C++ function)"
msgstr "%s (función C++)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "clase"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, fuzzy, python-format
msgid "%s() (built-in function)"
msgstr "%s() (función de base)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s método)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, fuzzy, python-format
+msgid "%s() (class)"
+msgstr "%s (clase C++)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s atributo)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "Parámetros"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "atributo"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "Variable"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Muestra"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (en el módulo %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, fuzzy, python-format
msgid "%s (built-in variable)"
msgstr "%s (variable de base)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (en el módulo %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, fuzzy, python-format
msgid "%s (built-in class)"
msgstr "%s (variable de base)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (clase en %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s método)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (%s.%s método estático)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (%s método estático)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s método)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s método)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (%s.%s atributo)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Plataformas:"
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (módulo)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "Índice de Módulos"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "módulos"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Obsoleto"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "excepción"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
+#, fuzzy
msgid "class method"
msgstr "%s() (%s método)"
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "método estático"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "módulo"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+#, fuzzy
+msgid " (deprecated)"
+msgstr "Obsoleto"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
+#: sphinx/domains/rst.py:57
#, fuzzy, python-format
msgid "%s (role)"
msgstr "%s (módulo)"
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
+#: sphinx/domains/rst.py:107
#, fuzzy
msgid "role"
msgstr "módulo"
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "variables de entorno; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, fuzzy, python-format
msgid "%scommand line option; %s"
msgstr "%sOpciones en línea de comandos; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "variables de entorno"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Índice"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Índice de Módulos"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Página de Búsqueda"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -408,104 +427,104 @@ msgstr ""
msgid "original entry"
msgstr ""
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "módulo"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Atención"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Prudencia"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Peligro"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Error"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Consejo"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Importante"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Nota"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Ver También"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Truco"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Advertencia"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Nuevo en la versión %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Distinto en la versión %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Obsoleto desde la versión %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "palabra clave"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "operador"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "objeto"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "sentencia"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
#, fuzzy
msgid "built-in function"
msgstr "función de base"
@@ -515,8 +534,8 @@ msgstr "función de base"
msgid "Table Of Contents"
msgstr "Contenidos"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Búsqueda"
@@ -565,15 +584,15 @@ msgstr "acceso rápido a todos los módulos"
msgid "all functions, classes, terms"
msgstr "todas las funciones, clases, términos"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Índice – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Índice completo en una página"
@@ -585,39 +604,39 @@ msgstr "Índice alfabético"
msgid "can be huge"
msgstr "puede ser muy grande"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navegación"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Buscar en %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Sobre este documento"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Actualizado por última vez en %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -647,13 +666,13 @@ msgstr "Próximo tema"
msgid "next chapter"
msgstr "Próximo capítulo"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr ""
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
#, fuzzy
msgid ""
"From here you can search these documents. Enter your search\n"
@@ -666,16 +685,15 @@ msgstr ""
" las palabras. Las páginas que contengan menos palabras no aparecerán en"
" la lista de resultados."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "buscar"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Resultados de la búsqueda"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Tu consulta no obtuvo ningún resultado"
@@ -715,12 +733,12 @@ msgstr "Cambios en la API C"
msgid "Other changes"
msgstr "Otros cambios"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Enlazar permanentemente con este título"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Enlazar permanentemente con esta definición"
@@ -729,40 +747,12 @@ msgstr "Enlazar permanentemente con esta definición"
msgid "Hide Search Matches"
msgstr "Coincidencias de la búsqueda"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Buscando"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Preparando la búsqueda"
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ""
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 ""
-"La búsqueda no dio ningún resultado. Por favor asegúrese que escribió "
-"todas las palabras correctamente y que ha seleccionado suficientes "
-"categorías"
-
-#: sphinx/themes/basic/static/searchtools.js:493
-#, 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/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -770,24 +760,54 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
#, fuzzy
msgid "Release"
msgstr "Versión"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
#, fuzzy
msgid "Continued on next page"
msgstr "Índice completo en una página"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[imagen]"
+
+#~ msgid "Platforms: "
+#~ msgstr "Plataformas:"
+
+#~ msgid "Searching"
+#~ msgstr "Buscando"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Preparando la búsqueda"
+
+#~ msgid ", in "
+#~ msgstr ""
+
+#~ 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 ""
+#~ "La búsqueda no dio ningún resultado."
+#~ " Por favor asegúrese que escribió "
+#~ "todas las palabras correctamente y que"
+#~ " ha seleccionado suficientes categorías"
+
+#~ 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"
+
diff --git a/sphinx/locale/fa/LC_MESSAGES/sphinx.js b/sphinx/locale/fa/LC_MESSAGES/sphinx.js
new file mode 100644
index 000000000..72b0ee94d
--- /dev/null
+++ b/sphinx/locale/fa/LC_MESSAGES/sphinx.js
@@ -0,0 +1 @@
+Documentation.addTranslations({"locale": "fa", "plural_expr": "(n > 1)", "messages": {"Hide Search Matches": "\u0639\u062f\u0645 \u0646\u0645\u0627\u06cc\u0634 \u0646\u062a\u0627\u06cc\u062c \u06cc\u0627\u0641\u062a \u0634\u062f\u0647", "Permalink to this definition": "\u0644\u06cc\u0646\u06a9 \u062b\u0627\u0628\u062a \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0639\u0631\u06cc\u0641", "Expand sidebar": "", "Permalink to this headline": "\u0644\u06cc\u0646\u06a9 \u062b\u0627\u0628\u062a \u0628\u0647 \u0627\u06cc\u0646 \u0633\u0631 \u0645\u0642\u0627\u0644\u0647", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/fa/LC_MESSAGES/sphinx.mo b/sphinx/locale/fa/LC_MESSAGES/sphinx.mo
new file mode 100644
index 000000000..040cf00a8
Binary files /dev/null and b/sphinx/locale/fa/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/fa/LC_MESSAGES/sphinx.po b/sphinx/locale/fa/LC_MESSAGES/sphinx.po
new file mode 100644
index 000000000..8f75c591e
--- /dev/null
+++ b/sphinx/locale/fa/LC_MESSAGES/sphinx.po
@@ -0,0 +1,836 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Sphinx 1.0.3\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2008-11-09 19:46+0100\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
+"Last-Translator: Omid Raha \n"
+"Language-Team: Omid Raha \n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.5\n"
+
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
+#: sphinx/writers/manpage.py:67
+#, python-format
+msgid "%B %d, %Y"
+msgstr ""
+
+#: sphinx/environment.py:1624
+#, python-format
+msgid "see %s"
+msgstr ""
+
+#: sphinx/environment.py:1627
+#, fuzzy, python-format
+msgid "see also %s"
+msgstr "همچنین ملاحظه نمائید %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
+msgid "Builtins"
+msgstr "درونی سازی"
+
+#: sphinx/builders/changes.py:75
+msgid "Module level"
+msgstr "در سطح ماژول"
+
+#: sphinx/builders/html.py:274
+#, python-format
+msgid "%b %d, %Y"
+msgstr ""
+
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
+msgid "General Index"
+msgstr "فهرست کلی"
+
+#: sphinx/builders/html.py:293
+msgid "index"
+msgstr "فهرست"
+
+#: sphinx/builders/html.py:353
+msgid "next"
+msgstr "بعدی"
+
+#: sphinx/builders/html.py:362
+msgid "previous"
+msgstr "قبلی"
+
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
+msgid " (in "
+msgstr ""
+
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "فهرست"
+
+#: sphinx/directives/other.py:136
+msgid "Section author: "
+msgstr ":نویسنده این بخش"
+
+#: sphinx/directives/other.py:138
+msgid "Module author: "
+msgstr "نویسنده این ماژول:"
+
+#: sphinx/directives/other.py:140
+#, fuzzy
+msgid "Code author: "
+msgstr "نویسنده این ماژول:"
+
+#: sphinx/directives/other.py:142
+msgid "Author: "
+msgstr ":نویسنده"
+
+#: sphinx/directives/other.py:215
+msgid "See also"
+msgstr "همچنین ملاحظه نمائید"
+
+#: sphinx/domains/__init__.py:244
+#, python-format
+msgid "%s %s"
+msgstr ""
+
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
+msgid "Parameters"
+msgstr "پارامترها"
+
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
+msgid "Returns"
+msgstr ""
+
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
+msgid "Return type"
+msgstr "نوع برگشتی"
+
+#: sphinx/domains/c.py:141
+#, python-format
+msgid "%s (C function)"
+msgstr "%s (C تابع)"
+
+#: sphinx/domains/c.py:143
+#, python-format
+msgid "%s (C member)"
+msgstr "%s (C عضو)"
+
+#: sphinx/domains/c.py:145
+#, python-format
+msgid "%s (C macro)"
+msgstr "%s (C ماکرو)"
+
+#: sphinx/domains/c.py:147
+#, python-format
+msgid "%s (C type)"
+msgstr "%s (C نوع)"
+
+#: sphinx/domains/c.py:149
+#, python-format
+msgid "%s (C variable)"
+msgstr "%s (C متغیر)"
+
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
+#, fuzzy, python-format
+msgid "function"
+msgstr "تابع"
+
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
+#, fuzzy, python-format
+msgid "member"
+msgstr "عضو"
+
+#: sphinx/domains/c.py:206
+msgid "macro"
+msgstr ""
+
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
+msgid "type"
+msgstr ""
+
+#: sphinx/domains/c.py:208
+#, fuzzy
+msgid "variable"
+msgstr "متغیر"
+
+#: sphinx/domains/cpp.py:897
+#, fuzzy, python-format
+msgid "%s (C++ class)"
+msgstr "%s (C++ کلاس در)"
+
+#: sphinx/domains/cpp.py:912
+#, fuzzy, python-format
+msgid "%s (C++ type)"
+msgstr "%s (C++ نوع)"
+
+#: sphinx/domains/cpp.py:931
+#, fuzzy, python-format
+msgid "%s (C++ member)"
+msgstr "%s (C++ عضو)"
+
+#: sphinx/domains/cpp.py:983
+#, fuzzy, python-format
+msgid "%s (C++ function)"
+msgstr "%s (C++ تابع)"
+
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
+msgid "class"
+msgstr ""
+
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
+#, python-format
+msgid "%s() (built-in function)"
+msgstr "%s() (توابع درونی)"
+
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
+#, python-format
+msgid "%s() (%s method)"
+msgstr "%s() (%s متد)"
+
+#: sphinx/domains/javascript.py:109
+#, fuzzy, python-format
+msgid "%s() (class)"
+msgstr "%s() (کلاس در)"
+
+#: sphinx/domains/javascript.py:111
+#, python-format
+msgid "%s (global variable or constant)"
+msgstr ""
+
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
+#, python-format
+msgid "%s (%s attribute)"
+msgstr "%s (%s مشخصه)"
+
+#: sphinx/domains/javascript.py:122
+#, fuzzy
+msgid "Arguments"
+msgstr "پارامترها"
+
+#: sphinx/domains/javascript.py:125
+msgid "Throws"
+msgstr ""
+
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
+msgid "data"
+msgstr ""
+
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
+#, python-format
+msgid "attribute"
+msgstr ""
+
+#: sphinx/domains/python.py:100
+#, fuzzy
+msgid "Variables"
+msgstr "متغیر"
+
+#: sphinx/domains/python.py:104
+msgid "Raises"
+msgstr "برانگیختن"
+
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
+#, python-format
+msgid "%s() (in module %s)"
+msgstr "%s() (در ماژول %s)"
+
+#: sphinx/domains/python.py:258
+#, python-format
+msgid "%s (built-in variable)"
+msgstr "%s (متغیر درونی)"
+
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
+#, python-format
+msgid "%s (in module %s)"
+msgstr "%s (در ماژول %s)"
+
+#: sphinx/domains/python.py:275
+#, python-format
+msgid "%s (built-in class)"
+msgstr "%s (کلاس درونی)"
+
+#: sphinx/domains/python.py:276
+#, python-format
+msgid "%s (class in %s)"
+msgstr "%s (کلاس در %s)"
+
+#: sphinx/domains/python.py:316
+#, python-format
+msgid "%s() (%s.%s method)"
+msgstr "%s() (%s.%s متد)"
+
+#: sphinx/domains/python.py:328
+#, python-format
+msgid "%s() (%s.%s static method)"
+msgstr "%s() (%s.%s متد استاتیک)"
+
+#: sphinx/domains/python.py:331
+#, python-format
+msgid "%s() (%s static method)"
+msgstr "%s() (%s متد استاتیک)"
+
+#: sphinx/domains/python.py:341
+#, fuzzy, python-format
+msgid "%s() (%s.%s class method)"
+msgstr "%s() (%s.%s متد)"
+
+#: sphinx/domains/python.py:344
+#, fuzzy, python-format
+msgid "%s() (%s class method)"
+msgstr "%s() (%s متد)"
+
+#: sphinx/domains/python.py:354
+#, python-format
+msgid "%s (%s.%s attribute)"
+msgstr "%s (%s.%s مشخصه)"
+
+#: sphinx/domains/python.py:433
+#, python-format
+msgid "%s (module)"
+msgstr "%s (ماژول)"
+
+#: sphinx/domains/python.py:490
+#, fuzzy
+msgid "Python Module Index"
+msgstr "فهرست ماژول ها"
+
+#: sphinx/domains/python.py:491
+msgid "modules"
+msgstr "ماژول ها"
+
+#: sphinx/domains/python.py:536
+msgid "Deprecated"
+msgstr "منسوخ شده"
+
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
+msgid "exception"
+msgstr "استثناء"
+
+#: sphinx/domains/python.py:562
+msgid "method"
+msgstr ""
+
+#: sphinx/domains/python.py:563
+#, python-format
+msgid "class method"
+msgstr ""
+
+#: sphinx/domains/python.py:564
+#, python-format
+msgid "static method"
+msgstr ""
+
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
+msgid "module"
+msgstr "ماژول"
+
+#: sphinx/domains/python.py:694
+#, fuzzy
+msgid " (deprecated)"
+msgstr " (منسوخ شده)"
+
+#: sphinx/domains/rst.py:55
+#, python-format
+msgid "%s (directive)"
+msgstr ""
+
+#: sphinx/domains/rst.py:57
+#, python-format
+msgid "%s (role)"
+msgstr ""
+
+#: sphinx/domains/rst.py:106
+msgid "directive"
+msgstr ""
+
+#: sphinx/domains/rst.py:107
+msgid "role"
+msgstr ""
+
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
+#, python-format
+msgid "environment variable; %s"
+msgstr "%s متغیرهای عمومی؛"
+
+#: sphinx/domains/std.py:162
+#, python-format
+msgid "%scommand line option; %s"
+msgstr "%sگزینه خط فرمان; %s"
+
+#: sphinx/domains/std.py:393
+msgid "glossary term"
+msgstr ""
+
+#: sphinx/domains/std.py:394
+msgid "grammar token"
+msgstr ""
+
+#: sphinx/domains/std.py:395
+msgid "reference label"
+msgstr ""
+
+#: sphinx/domains/std.py:396
+#, fuzzy, python-format
+msgid "environment variable"
+msgstr "متغیرهای عمومی؛"
+
+#: sphinx/domains/std.py:397
+msgid "program option"
+msgstr ""
+
+#: sphinx/domains/std.py:428
+msgid "Module Index"
+msgstr "فهرست ماژول ها"
+
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
+msgid "Search Page"
+msgstr "صفحه جستجو"
+
+#: sphinx/ext/autodoc.py:998
+#, python-format
+msgid " Bases: %s"
+msgstr ""
+
+#: sphinx/ext/autodoc.py:1034
+#, python-format
+msgid "alias of :class:`%s`"
+msgstr ""
+
+#: sphinx/ext/todo.py:41
+msgid "Todo"
+msgstr "در دست انجام"
+
+#: sphinx/ext/todo.py:109
+#, python-format
+msgid "(The <> is located in %s, line %d.)"
+msgstr ""
+
+#: sphinx/ext/todo.py:117
+msgid "original entry"
+msgstr ""
+
+#: sphinx/ext/viewcode.py:70
+msgid "[source]"
+msgstr ""
+
+#: sphinx/ext/viewcode.py:117
+msgid "[docs]"
+msgstr ""
+
+#: sphinx/ext/viewcode.py:131
+#, fuzzy
+msgid "Module code"
+msgstr "ماژول"
+
+#: sphinx/ext/viewcode.py:137
+#, python-format
+msgid "Source code for %s "
+msgstr ""
+
+#: sphinx/ext/viewcode.py:164
+msgid "Overview: module code"
+msgstr ""
+
+#: sphinx/ext/viewcode.py:165
+msgid "All modules for which code is available "
+msgstr ""
+
+#: sphinx/locale/__init__.py:155
+msgid "Attention"
+msgstr "دقت"
+
+#: sphinx/locale/__init__.py:156
+msgid "Caution"
+msgstr "ملاحظه"
+
+#: sphinx/locale/__init__.py:157
+msgid "Danger"
+msgstr "خطر"
+
+#: sphinx/locale/__init__.py:158
+msgid "Error"
+msgstr "خطا"
+
+#: sphinx/locale/__init__.py:159
+msgid "Hint"
+msgstr "تذکر"
+
+#: sphinx/locale/__init__.py:160
+msgid "Important"
+msgstr "مهم"
+
+#: sphinx/locale/__init__.py:161
+msgid "Note"
+msgstr "توجه"
+
+#: sphinx/locale/__init__.py:162
+msgid "See Also"
+msgstr "همچنین ملاحظه نمائید"
+
+#: sphinx/locale/__init__.py:163
+msgid "Tip"
+msgstr "نکته"
+
+#: sphinx/locale/__init__.py:164
+msgid "Warning"
+msgstr "هشدار"
+
+#: sphinx/locale/__init__.py:168
+#, python-format
+msgid "New in version %s"
+msgstr "جدید در نسخه %s"
+
+#: sphinx/locale/__init__.py:169
+#, python-format
+msgid "Changed in version %s"
+msgstr "تغییر داده شده در نسخه %s"
+
+#: sphinx/locale/__init__.py:170
+#, python-format
+msgid "Deprecated since version %s"
+msgstr "منسوخ شده از نسخه %s"
+
+#: sphinx/locale/__init__.py:176
+msgid "keyword"
+msgstr "کلمه کلیدی"
+
+#: sphinx/locale/__init__.py:177
+msgid "operator"
+msgstr "عملگر"
+
+#: sphinx/locale/__init__.py:178
+msgid "object"
+msgstr "شیء"
+
+#: sphinx/locale/__init__.py:180
+msgid "statement"
+msgstr "گذاره"
+
+#: sphinx/locale/__init__.py:181
+msgid "built-in function"
+msgstr "توابع درونی"
+
+#: sphinx/themes/agogo/layout.html:45 sphinx/themes/basic/globaltoc.html:10
+#: sphinx/themes/basic/localtoc.html:11
+msgid "Table Of Contents"
+msgstr "فهرست عناوین"
+
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
+msgid "Search"
+msgstr "جستجو"
+
+#: sphinx/themes/agogo/layout.html:52 sphinx/themes/basic/searchbox.html:15
+msgid "Go"
+msgstr "برو"
+
+#: sphinx/themes/agogo/layout.html:57 sphinx/themes/basic/searchbox.html:20
+#, fuzzy
+msgid "Enter search terms or a module, class or function name."
+msgstr "نام یک ماژول ، کلاس و یا تابع را وارد نمائید"
+
+#: sphinx/themes/agogo/layout.html:78 sphinx/themes/basic/sourcelink.html:14
+msgid "Show Source"
+msgstr "نمایش سورس"
+
+#: sphinx/themes/basic/defindex.html:11
+msgid "Overview"
+msgstr "بررسی اجمالی"
+
+#: sphinx/themes/basic/defindex.html:20
+msgid "Indices and tables:"
+msgstr "ایندکس ها و جداول:"
+
+#: sphinx/themes/basic/defindex.html:23
+msgid "Complete Table of Contents"
+msgstr "فهرست کامل مطالب"
+
+#: sphinx/themes/basic/defindex.html:24
+msgid "lists all sections and subsections"
+msgstr "فهرست تمامی بخش ها و زیر مجموعه ها"
+
+#: sphinx/themes/basic/defindex.html:26
+msgid "search this documentation"
+msgstr "جستجو در این اسناد"
+
+#: sphinx/themes/basic/defindex.html:28
+msgid "Global Module Index"
+msgstr "فهرست کلی ماژول ها"
+
+#: sphinx/themes/basic/defindex.html:29
+msgid "quick access to all modules"
+msgstr "دسترسی سریع به تمامی متدها"
+
+#: sphinx/themes/basic/defindex.html:31
+msgid "all functions, classes, terms"
+msgstr "تمامی توابع ، کلاس ها ، اصطلاحات"
+
+#: sphinx/themes/basic/genindex-single.html:35
+#, python-format
+msgid "Index – %(key)s"
+msgstr "فهرست – %(key)s"
+
+#: sphinx/themes/basic/genindex-single.html:63
+#: sphinx/themes/basic/genindex-split.html:24
+#: sphinx/themes/basic/genindex-split.html:38
+#: sphinx/themes/basic/genindex.html:74
+msgid "Full index on one page"
+msgstr "فهرست کامل در یک صفحه"
+
+#: sphinx/themes/basic/genindex-split.html:16
+msgid "Index pages by letter"
+msgstr "فهرست صفحات بر اساس حروف"
+
+#: sphinx/themes/basic/genindex-split.html:25
+msgid "can be huge"
+msgstr ""
+
+#: sphinx/themes/basic/layout.html:29
+msgid "Navigation"
+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:140
+msgid "Copyright"
+msgstr "کپی رایت"
+
+#: sphinx/themes/basic/layout.html:189
+#, python-format
+msgid "© Copyright %(copyright)s."
+msgstr ""
+
+#: sphinx/themes/basic/layout.html:191
+#, python-format
+msgid "© Copyright %(copyright)s."
+msgstr ""
+
+#: sphinx/themes/basic/layout.html:195
+#, python-format
+msgid "Last updated on %(last_updated)s."
+msgstr ". %(last_updated)s آخرین بروز رسانی در"
+
+#: sphinx/themes/basic/layout.html:198
+#, python-format
+msgid ""
+"Created using Sphinx "
+"%(sphinx_version)s."
+msgstr ""
+". Sphinx %(sphinx_version)s "
+"ایجاد شده با"
+
+#: sphinx/themes/basic/opensearch.xml:4
+#, python-format
+msgid "Search %(docstitle)s"
+msgstr "جستجو %(docstitle)s"
+
+#: sphinx/themes/basic/relations.html:11
+msgid "Previous topic"
+msgstr "موضوع قبلی"
+
+#: sphinx/themes/basic/relations.html:13
+msgid "previous chapter"
+msgstr "فصل قبلی"
+
+#: sphinx/themes/basic/relations.html:16
+msgid "Next topic"
+msgstr "موضوع بعدی"
+
+#: sphinx/themes/basic/relations.html:18
+msgid "next chapter"
+msgstr "فصل بعدی"
+
+#: sphinx/themes/basic/search.html:24
+msgid ""
+"Please activate JavaScript to enable the search\n"
+" functionality."
+msgstr ""
+
+#: sphinx/themes/basic/search.html:29
+#, 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 ""
+"در اینجا شما می توانید مستندات را جستجو نمائید ، کلماتی را در کادر جستجو "
+"وارد کنید و سپس بر روی دکمه جستجو کلیک نمائید ، توجه کنید که تابع جستجو "
+"گر امر جستجو را بطور خودکار برای تمامی کلمات دنبال خواهد کرد .صفحاتی که "
+"شامل کلمات کمتری هستند ، در لیست جستجو نمایش داده نخواهند شد."
+
+#: sphinx/themes/basic/search.html:36
+msgid "search"
+msgstr "جستجو"
+
+#: sphinx/themes/basic/search.html:40
+msgid "Search Results"
+msgstr "نتایج جستجو"
+
+#: sphinx/themes/basic/search.html:42
+msgid "Your search did not match any results."
+msgstr ".جستجوی شما نتیجه ایی در بر نداشت"
+
+#: sphinx/themes/basic/searchbox.html:12
+msgid "Quick search"
+msgstr "جستجو سریع"
+
+#: sphinx/themes/basic/sourcelink.html:11
+msgid "This Page"
+msgstr "صفحه فعلی"
+
+#: sphinx/themes/basic/changes/frameset.html:5
+#: sphinx/themes/basic/changes/versionchanges.html:12
+#, python-format
+msgid "Changes in Version %(version)s — %(docstitle)s"
+msgstr "تغییرات در نسخه %(version)s — %(docstitle)s"
+
+#: sphinx/themes/basic/changes/rstsource.html:5
+#, python-format
+msgid "%(filename)s — %(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:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
+msgid "Permalink to this headline"
+msgstr "لینک ثابت به این سر مقاله"
+
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
+msgid "Permalink to this definition"
+msgstr "لینک ثابت به این تعریف"
+
+#: sphinx/themes/basic/static/doctools.js:189
+msgid "Hide Search Matches"
+msgstr "عدم نمایش نتایج یافت شده"
+
+#: sphinx/themes/default/static/sidebar.js:69
+msgid "Expand sidebar"
+msgstr ""
+
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
+msgid "Collapse sidebar"
+msgstr ""
+
+#: sphinx/themes/haiku/layout.html:26
+msgid "Contents"
+msgstr ""
+
+#: sphinx/writers/latex.py:176
+msgid "Release"
+msgstr "انتشار"
+
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
+msgid "Footnotes"
+msgstr ""
+
+#: sphinx/writers/latex.py:672
+msgid "continued from previous page"
+msgstr ""
+
+#: sphinx/writers/latex.py:677
+#, fuzzy
+msgid "Continued on next page"
+msgstr "فهرست کامل در یک صفحه"
+
+#: sphinx/writers/text.py:430
+msgid "[image]"
+msgstr ""
+
+#~ msgid "Python Enhancement Proposals!PEP %s"
+#~ msgstr ""
+
+#~ msgid "Platform: %s"
+#~ msgstr "%s:پلتفرم"
+
+#~ msgid "Platforms: "
+#~ msgstr ":پلتفرم ها"
+
+#~ msgid "here"
+#~ msgstr "اینجا"
+
+#~ msgid "Searching"
+#~ msgstr "در حال جستجو"
+
+#~ msgid "Preparing search..."
+#~ msgstr "...آماده جستجو"
+
+#~ msgid "module, in "
+#~ msgstr "ماژول, در"
+
+#~ msgid ", in "
+#~ msgstr ", در"
+
+#~ 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 ""
+#~ ". هیچ سندی برای جستجوی شما یافت"
+#~ " نشد، لطفا اطمینان حاصل نمائید که"
+#~ " املای تمامی کلمات صحیح می باشد "
+#~ "و همچنین موضوعات کافی را برای این"
+#~ " جستجو انتخاب نموده اید"
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "جستجو انجام شد ، %s صفحه مطابق با پرس و جو پیدا شد"
+
+#~ msgid "Suggest Change"
+#~ msgstr ""
+
+#~ msgid "Keyword search"
+#~ msgstr "جستجو کلید واژه"
+
+#~ msgid "Most popular modules:"
+#~ msgstr "متداول ترین ماژول ها:"
+
+#~ msgid "Show modules only available on these platforms"
+#~ msgstr "تنها ماژول هایی که در این پلتفرم در دسترس هستند را نشان بده"
+
+#~ msgid ""
+#~ "Note: You requested an "
+#~ "out-of-date URL from this server. "
+#~ "We've tried to redirect you to the"
+#~ " new location of this page, but "
+#~ "it may not be the right one."
+#~ msgstr ""
+
diff --git a/sphinx/locale/fi/LC_MESSAGES/sphinx.js b/sphinx/locale/fi/LC_MESSAGES/sphinx.js
index 9d2cc6f47..1f1600377 100644
--- a/sphinx/locale/fi/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/fi/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "fi", "plural_expr": "(n != 1)", "messages": {"Search Results": "Etsinn\u00e4n tulos", "Preparing search...": "Valmistellaan etsint\u00e4\u00e4...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Ei l\u00f6ytynyt yht\u00e4\u00e4n. Tarkista hakuehdot, sanahaku, ei sen osia", "Search finished, found %s page(s) matching the search query.": "Etsint\u00e4 tehty, l\u00f6ydetty %s sivu(a).", ", in ": "", "Expand sidebar": "", "Permalink to this headline": "", "Searching": "Etsit\u00e4\u00e4n", "Collapse sidebar": "", "Permalink to this definition": "", "Hide Search Matches": "Piilota l\u00f6ydetyt"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "fi", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Piilota l\u00f6ydetyt", "Permalink to this definition": "", "Expand sidebar": "", "Permalink to this headline": "", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/fi/LC_MESSAGES/sphinx.mo b/sphinx/locale/fi/LC_MESSAGES/sphinx.mo
index 7c3000060..b0dfff474 100644
Binary files a/sphinx/locale/fi/LC_MESSAGES/sphinx.mo and b/sphinx/locale/fi/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/fi/LC_MESSAGES/sphinx.po b/sphinx/locale/fi/LC_MESSAGES/sphinx.po
index 04839bba6..1b45f6905 100644
--- a/sphinx/locale/fi/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/fi/LC_MESSAGES/sphinx.po
@@ -8,383 +8,400 @@ 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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Jukka Inkeri \n"
"Language-Team: fi \n"
"Plural-Forms: nplurals=2; plural=(n != 1)\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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d.%m.%Y"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
msgstr ""
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, fuzzy, python-format
+msgid "see also %s"
+msgstr "katso myös %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr ""
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Moduulitaso"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d.%m.%Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Yleinen sisällysluettelo"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "hakemisto"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr ">"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "<"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr ""
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Sisällysluettelo"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Luvun kirjoittaja: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Moduulin kirjoittaja: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "Moduulin kirjoittaja: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Tekijä: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Katso myös"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr ""
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr ""
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr ""
-#: sphinx/domains/c.py:133
-#, python-format
-msgid "%s (C function)"
-msgstr ""
-
-#: sphinx/domains/c.py:135
-#, python-format
-msgid "%s (C member)"
-msgstr ""
-
-#: sphinx/domains/c.py:137
-#, python-format
-msgid "%s (C macro)"
-msgstr ""
-
-#: sphinx/domains/c.py:139
-#, python-format
-msgid "%s (C type)"
-msgstr ""
-
#: sphinx/domains/c.py:141
#, python-format
+msgid "%s (C function)"
+msgstr ""
+
+#: sphinx/domains/c.py:143
+#, python-format
+msgid "%s (C member)"
+msgstr ""
+
+#: sphinx/domains/c.py:145
+#, python-format
+msgid "%s (C macro)"
+msgstr ""
+
+#: sphinx/domains/c.py:147
+#, python-format
+msgid "%s (C type)"
+msgstr ""
+
+#: sphinx/domains/c.py:149
+#, python-format
msgid "%s (C variable)"
msgstr ""
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
#, fuzzy
msgid "function"
msgstr "Varoitus"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr ""
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr ""
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr ""
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
msgid "variable"
msgstr ""
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr ""
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr ""
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr ""
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr ""
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr ""
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr ""
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr ""
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr ""
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr ""
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
msgid "Arguments"
msgstr ""
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr ""
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
msgid "Variables"
msgstr ""
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr ""
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr ""
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr ""
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr ""
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr ""
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr ""
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr ""
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr ""
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr ""
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, python-format
msgid "%s() (%s.%s class method)"
msgstr ""
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, python-format
msgid "%s() (%s class method)"
msgstr ""
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr ""
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Ympäristö"
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (moduuli)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "Moduuli sisällysluettelo"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "moduulit"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Poistettu"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr ""
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
+#: sphinx/domains/python.py:563
msgid "class method"
msgstr ""
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr ""
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "moduuli"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (poistettu)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
+#: sphinx/domains/rst.py:57
+#, python-format
msgid "%s (role)"
-msgstr "%s (moduuli)"
+msgstr ""
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
-#, fuzzy
+#: sphinx/domains/rst.py:107
msgid "role"
-msgstr "moduuli"
+msgstr ""
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr ""
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr ""
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr ""
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Sisällysluettelo"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Moduuli sisällysluettelo"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Etsi sivu"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -402,104 +419,104 @@ msgstr ""
msgid "original entry"
msgstr ""
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "moduuli"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Huom"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Varoitus"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Vaara"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Virhe"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Vihje"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Tärkeä"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Muista"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Katso myös"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Vihje"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Varoitus"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Uusi versiossa %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Muutettu versiossa %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Poistettu versiosta %s alkaen"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr ""
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr ""
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr ""
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr ""
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr ""
@@ -508,8 +525,8 @@ msgstr ""
msgid "Table Of Contents"
msgstr "Sisällysluettelo"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Etsi"
@@ -557,15 +574,15 @@ msgstr ""
msgid "all functions, classes, terms"
msgstr ""
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr ""
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Hakemisto yhtenä luettelona"
@@ -577,39 +594,39 @@ msgstr "Hakemisto aakkostus sivuttain"
msgid "can be huge"
msgstr "voi olla iso"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navikointi"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr ""
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Tietoja tästä documentistä"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr ""
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -637,13 +654,13 @@ msgstr ">>"
msgid "next chapter"
msgstr ">>"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr "Javascript pitää olla sallittu, jotta etsintä toimii."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -651,16 +668,15 @@ msgid ""
" containing fewer words won't appear in the result list."
msgstr "Anna hakusanat kokonaan, osasanoilla ei haeta."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "etsi"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Etsinnän tulos"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Ei löytynyt ko. ehdoilla yhtään."
@@ -700,12 +716,12 @@ msgstr ""
msgid "Other changes"
msgstr ""
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr ""
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr ""
@@ -713,35 +729,12 @@ msgstr ""
msgid "Hide Search Matches"
msgstr "Piilota löydetyt"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Etsitään"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Valmistellaan etsintää..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ""
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Etsintä tehty, löydetty %s sivu(a)."
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -749,24 +742,49 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr ""
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
#, fuzzy
msgid "Continued on next page"
msgstr ""
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr ""
+#~ msgid "Python Enhancement Proposals!PEP %s"
+#~ msgstr ""
+
+#~ msgid "Platforms: "
+#~ msgstr "Ympäristö"
+
+#~ msgid "Searching"
+#~ msgstr "Etsitään"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Valmistellaan etsintää..."
+
+#~ msgid ", in "
+#~ msgstr ""
+
+#~ 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"
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Etsintä tehty, löydetty %s sivu(a)."
+
diff --git a/sphinx/locale/fr/LC_MESSAGES/sphinx.js b/sphinx/locale/fr/LC_MESSAGES/sphinx.js
index e482673f0..5d6fafbde 100644
--- a/sphinx/locale/fr/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/fr/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "fr", "plural_expr": "(n > 1)", "messages": {"Search Results": "R\u00e9sultats de la recherche", "Preparing search...": "Pr\u00e9paration de la recherche...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Votre recherche ne correspond \u00e0 aucun document. V\u00e9rifiez l'orthographe des termes de recherche et que vous avez s\u00e9lectionn\u00e9 suffisamment de cat\u00e9gories.", "Search finished, found %s page(s) matching the search query.": "La recherche est termin\u00e9e, %s page(s) correspond(ent) \u00e0 la requ\u00eate.", ", in ": ", dans", "Expand sidebar": "Agrandir le menu", "Permalink to this headline": "Lien permanent vers ce titre", "Searching": "En cours de recherche", "Collapse sidebar": "R\u00e9duire le menu", "Permalink to this definition": "Lien permanent vers cette d\u00e9finition", "Hide Search Matches": "Cacher les r\u00e9sultats de la recherche"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "fr", "plural_expr": "(n > 1)", "messages": {"Hide Search Matches": "Cacher les r\u00e9sultats de la recherche", "Permalink to this definition": "Lien permanent vers cette d\u00e9finition", "Expand sidebar": "Agrandir le menu", "Permalink to this headline": "Lien permanent vers ce titre", "Collapse sidebar": "R\u00e9duire le menu"}});
\ No newline at end of file
diff --git a/sphinx/locale/fr/LC_MESSAGES/sphinx.mo b/sphinx/locale/fr/LC_MESSAGES/sphinx.mo
index bfa97b193..a4d35a8be 100644
Binary files a/sphinx/locale/fr/LC_MESSAGES/sphinx.mo and b/sphinx/locale/fr/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/fr/LC_MESSAGES/sphinx.po b/sphinx/locale/fr/LC_MESSAGES/sphinx.po
index 8afcf435a..c4e1105cb 100644
--- a/sphinx/locale/fr/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/fr/LC_MESSAGES/sphinx.po
@@ -11,386 +11,403 @@ 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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Sébastien Douche \n"
"Language-Team: French Translation Team \n"
"Plural-Forms: nplurals=2; plural=(n > 1)\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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d %B %Y"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr "voir %s"
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr "voir aussi %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Fonctions de base"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Module"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b %Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Index général"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "index"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "suivant"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "précédent"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr "(dans"
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Index"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Auteur de la section : "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Auteur du module : "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "Auteur du module : "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Auteur : "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Voir aussi"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Paramètres"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Retourne"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Type retourné"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (fonction C)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (membre C)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (macro C)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (type C)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (variable C)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "fonction"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "membre"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr ""
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "type"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
#, fuzzy
msgid "variable"
msgstr "Variable"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (classe C++)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (type C++)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (membre C++)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (fonction C++)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "classe"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (fonction de base)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (méthode %s)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (classe)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr "%s (variable globale ou constante)"
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (attribut %s)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "Paramètres"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr "Lance"
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr "données"
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "attribut"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "Variable"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Lève"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (dans le module %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (variable de base)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (dans le module %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (classe de base)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (classe dans %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (méthode %s.%s)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (méthode statique %s.%s)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (méthode statique %s)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
-msgstr "%s() (méthode %s.%s)"
+msgstr "%s() (méthode de classe %s.%s)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
-msgstr "%s() (méthode %s)"
+msgstr "%s() (méthode de classe %s)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (attribut %s.%s)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Plateformes : "
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (module)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "Index du module"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "modules"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Obsolète"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "exception"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr "méthode"
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
+#, fuzzy
msgid "class method"
-msgstr "%s() (méthode %s)"
+msgstr "méthode de classe"
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "méthode statique"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "module"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (obsolète)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
+#: sphinx/domains/rst.py:57
+#, python-format
msgid "%s (role)"
-msgstr "%s (module)"
+msgstr ""
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
-#, fuzzy
+#: sphinx/domains/rst.py:107
msgid "role"
-msgstr "module"
+msgstr ""
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "variable d'environnement; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%soption de ligne de commande; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr "terme du glossaire"
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr "élément de grammaire"
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr "étiquette de référence"
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "variable d'environnement"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr "option du programme"
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Index"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Index du module"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Page de recherche"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "alias de :class:`%s`"
@@ -408,104 +425,104 @@ msgstr "(L'<> se trouve dans %s, à la ligne %d.)"
msgid "original entry"
msgstr "entrée orginale"
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "module"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr "Code source de %s "
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr "Vue d'ensemble : code du module"
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr "Modules pour lesquels le code est disponible "
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Attention"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Prudence"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Danger"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Erreur"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Indice"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Important"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Note"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Voir aussi"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Astuce"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Warning"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Introduit dans la version %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Modifié dans la version %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Obsolète depuis la version %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "mot-clé"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "opérateur"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "objet"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "état"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "fonction de base"
@@ -514,8 +531,8 @@ msgstr "fonction de base"
msgid "Table Of Contents"
msgstr "Table des matières"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Recherche"
@@ -564,15 +581,15 @@ msgstr "accès rapide à l'ensemble des modules"
msgid "all functions, classes, terms"
msgstr "toutes les fonctions, classes, termes"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Index – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Index complet sur une seule page"
@@ -584,39 +601,39 @@ msgstr "Indexer les pages par lettre"
msgid "can be huge"
msgstr "peut être énorme"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navigation"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Recherchez dans %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "À propos de ces documents"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Mis à jour le %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -646,13 +663,13 @@ msgstr "Sujet suivant"
msgid "next chapter"
msgstr "Chapitre suivant"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr "Activez le JavaScript pour que la recherche fonctionne\n"
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
#, fuzzy
msgid ""
"From here you can search these documents. Enter your search\n"
@@ -668,16 +685,15 @@ msgstr ""
" contenant moins de mots n'apparaîtront pas dans la liste des "
"résultats."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "rechercher"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Résultats de la recherche"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Votre recherche n'a retourné aucun résultat"
@@ -717,12 +733,12 @@ msgstr "Modifications de l'API C"
msgid "Other changes"
msgstr "Autres modifications"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Lien permanent vers ce titre"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Lien permanent vers cette définition"
@@ -730,38 +746,12 @@ msgstr "Lien permanent vers cette définition"
msgid "Hide Search Matches"
msgstr "Cacher les résultats de la recherche"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "En cours de recherche"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Préparation de la recherche..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", dans"
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 ""
-"Votre recherche ne correspond à aucun document. Vérifiez l'orthographe "
-"des termes de recherche et que vous avez sélectionné suffisamment de "
-"catégories."
-
-#: sphinx/themes/basic/static/searchtools.js:493
-#, 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/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr "Agrandir le menu"
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr "Réduire le menu"
@@ -769,36 +759,50 @@ msgstr "Réduire le menu"
msgid "Contents"
msgstr "Contenu"
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Version"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr "Notes de bas de page"
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "Suite de la page précédente"
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
#, fuzzy
msgid "Continued on next page"
msgstr "Suite sur la page suivante"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[image]"
-#~ msgid "Parameter"
-#~ msgstr "Paramètres"
+#~ msgid "Platforms: "
+#~ msgstr "Plateformes : "
-#~ msgid "here"
-#~ msgstr "ici"
+#~ msgid "Searching"
+#~ msgstr "En cours de recherche"
-#~ msgid "module, in "
-#~ msgstr "module, dans"
+#~ msgid "Preparing search..."
+#~ msgstr "Préparation de la recherche..."
-#~ msgid "Platform: %s"
-#~ msgstr "Plateforme : %s"
+#~ msgid ", in "
+#~ msgstr ", dans"
+
+#~ 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 ""
+#~ "Votre recherche ne correspond à aucun"
+#~ " document. Vérifiez l'orthographe des "
+#~ "termes de recherche et que vous "
+#~ "avez sélectionné suffisamment de catégories."
+
+#~ 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."
diff --git a/sphinx/locale/hr/LC_MESSAGES/sphinx.js b/sphinx/locale/hr/LC_MESSAGES/sphinx.js
index b9d1f7af9..d4284716f 100644
--- a/sphinx/locale/hr/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/hr/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "hr", "plural_expr": "0", "messages": {"Search Results": "Rezultati pretrage", "Preparing search...": "Pripremam pretra\u017eivanje...", "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\u0161u pretragu nema rezultata. Molimo pregledajte da li so sve rije\u010di ispravno napisane i da li ste izbrali dovoljno kategorija.", "Search finished, found %s page(s) matching the search query.": "Pretra\u017eivanje je zaklju\u010deno, prona\u0111eno %s stranica, koje odgovaraju tra\u017eenom nizu.", ", in ": ", u ", "Expand sidebar": "", "Permalink to this headline": "Link na taj naslov", "Searching": "Tra\u017eim", "Collapse sidebar": "", "Permalink to this definition": "Link na tu definiciju", "Hide Search Matches": "Sakrij rezultate pretrage"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "hr", "plural_expr": "0", "messages": {"Hide Search Matches": "Sakrij rezultate pretrage", "Permalink to this definition": "Link na tu definiciju", "Expand sidebar": "", "Permalink to this headline": "Link na taj naslov", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/hr/LC_MESSAGES/sphinx.mo b/sphinx/locale/hr/LC_MESSAGES/sphinx.mo
index e032adeb1..6e74304d6 100644
Binary files a/sphinx/locale/hr/LC_MESSAGES/sphinx.mo and b/sphinx/locale/hr/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/hr/LC_MESSAGES/sphinx.po b/sphinx/locale/hr/LC_MESSAGES/sphinx.po
index ddcf2299a..d41dcab1e 100644
--- a/sphinx/locale/hr/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/hr/LC_MESSAGES/sphinx.po
@@ -1,390 +1,404 @@
-
msgid ""
msgstr ""
"Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2010-09-11 23:58+0200\n"
-"PO-Revision-Date: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Bojan Mihelač \n"
"Language-Team: Bojan Mihelač \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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d %B, %Y"
-#: sphinx/roles.py:174
-#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+#: sphinx/environment.py:1624
+#, fuzzy, python-format
+msgid "see %s"
+msgstr "pogledaj %s"
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, fuzzy, python-format
+msgid "see also %s"
+msgstr "pogledaj i %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Ugrađeni dijelovi"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Nivo modula"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b, %Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Opceniti abecedni indeks"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "abecedni indeks"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "naprijed"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "nazad"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (u "
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Abecedni popis"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
-msgstr "Autor sekcije:"
+msgstr "Autor sekcije: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
-msgstr "Autor modula:"
+msgstr "Autor modula: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
-msgstr "Autor modula:"
+msgstr "Autor modula: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Autor:"
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Pogledaj i"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Parametri"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Vraća"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Vraća tip"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (C funkcija)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (C član)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C makro)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C tip)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C varijabla)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "funkcija"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "član"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr ""
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "tip"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
#, fuzzy
msgid "variable"
msgstr "Varijabla"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (C++ razred)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (C++ tip)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (C++ član)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (C++ funkcija)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
-#, fuzzy
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "razred"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (ugrađene funkcije)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s metoda)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (razred)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s atribut)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "Parametri"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "atribut"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "Varijabla"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Podiže"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (u modulu %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (ugrađene variable)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (u modulu %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (ugrađen razred)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (razred u %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s metoda)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (%s.%s statična metoda)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (%s statična metoda)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s metoda)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s metoda)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (%s.%s atribut)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Platforme:"
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (modul)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "Popis modula"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "Moduli"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Zastarjelo"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "izuzetak"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
-msgstr "%s() (%s metoda)"
+msgstr ""
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "statična metoda"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "modul"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (zastarjelo)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
+#: sphinx/domains/rst.py:57
+#, python-format
msgid "%s (role)"
-msgstr "%s (modul)"
+msgstr ""
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
-#, fuzzy
+#: sphinx/domains/rst.py:107
msgid "role"
-msgstr "modul"
+msgstr ""
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "varijabla okruženja; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%scommand line parameter; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "varijabla okruženja"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Abecedni popis"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Popis modula"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Tražilica"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " Osnove: %s"
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "nadimak za :class:`%s`"
@@ -396,110 +410,110 @@ msgstr "Todo"
#: sphinx/ext/todo.py:109
#, fuzzy, python-format
msgid "(The <> is located in %s, line %d.)"
-msgstr "(Originalan unos se nalazi u %s, u retku %d, i može biti pronađen "
+msgstr "(Originalan unos se nalazi u %s, u retku %d.)"
#: sphinx/ext/todo.py:117
msgid "original entry"
msgstr ""
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "modul"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Pozor"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Pažnja"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Opasnost"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Greška"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Savjet"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Važno"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Napomena"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Pogledaj i"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Savjet"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Upozorenje"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Novo u verziji %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Promijenjeno u verziji %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Zastarijelo od verzije %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "ključna riječ"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "operator"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "objekt"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "izjava"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "ugrađen funkcije"
@@ -508,8 +522,8 @@ msgstr "ugrađen funkcije"
msgid "Table Of Contents"
msgstr "Pregled sadržaja"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Traži"
@@ -557,15 +571,15 @@ msgstr "brz dostup do svih modulov"
msgid "all functions, classes, terms"
msgstr "sve funkcije, razredi, izrazi"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Index – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Potpun indeks na jednoj strani"
@@ -577,39 +591,39 @@ msgstr "Indeksiraj stranice po slovu"
msgid "can be huge"
msgstr "može biti veliko"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navigacija"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Traži između %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "O ovim dokumentima"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Sva prava zadržana"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Sva prava zadržana %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Sva prava zadržana %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Zadnji put ažurirano %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -639,7 +653,7 @@ msgstr "Slijedeća tema"
msgid "next chapter"
msgstr "slijedeće poglavje"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
@@ -647,7 +661,7 @@ msgstr ""
"Molimo omogućite JavaScript\n"
" za djelovanje tražilice."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -659,16 +673,15 @@ msgstr ""
" function will automatically search for all of the words. Pages\n"
" containing fewer words won't appear in the result list."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "traži"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Rezultati pretrage"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Your search did not match any results."
@@ -708,12 +721,12 @@ msgstr "C API changes"
msgid "Other changes"
msgstr "Ostale promjene"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Link na taj naslov"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Link na tu definiciju"
@@ -721,39 +734,12 @@ msgstr "Link na tu definiciju"
msgid "Hide Search Matches"
msgstr "Sakrij rezultate pretrage"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Tražim"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Pripremam pretraživanje..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", u "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 ""
-"Za vašu pretragu nema rezultata. Molimo pregledajte da li so sve riječi "
-"ispravno napisane i da li ste izbrali dovoljno kategorija."
-
-#: sphinx/themes/basic/static/searchtools.js:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr ""
-"Pretraživanje je zaključeno, pronađeno %s stranica, koje odgovaraju "
-"traženom nizu."
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -761,35 +747,51 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Distribucija"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "nastavak sa prethodne stranice"
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr "nastavak na slijedećoj stranici"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[slika]"
-#~ msgid "Parameter"
-#~ msgstr "Parametar"
+#~ msgid "Platforms: "
+#~ msgstr "Platforme:"
-#~ msgid "here"
-#~ msgstr "ovdje"
+#~ msgid "Searching"
+#~ msgstr "Tražim"
-#~ msgid "module, in "
-#~ msgstr "modul, u "
+#~ msgid "Preparing search..."
+#~ msgstr "Pripremam pretraživanje..."
-#~ msgid "Platform: %s"
-#~ msgstr "Platforma: %s"
+#~ msgid ", in "
+#~ msgstr ", u "
+
+#~ 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 ""
+#~ "Za vašu pretragu nema rezultata. Molimo"
+#~ " pregledajte da li so sve riječi "
+#~ "ispravno napisane i da li ste "
+#~ "izbrali dovoljno kategorija."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr ""
+#~ "Pretraživanje je zaključeno, pronađeno %s "
+#~ "stranica, koje odgovaraju traženom nizu."
diff --git a/sphinx/locale/it/LC_MESSAGES/sphinx.js b/sphinx/locale/it/LC_MESSAGES/sphinx.js
index f9b193fe3..590de16ee 100644
--- a/sphinx/locale/it/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/it/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "it", "plural_expr": "(n != 1)", "messages": {"Search Results": "Risultati della ricerca", "Preparing search...": "Preparazione della ricerca", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "La tua ricerca non ha trovato alcun risultato. Controlla la correttezza dei termini di ricerca e di avere selezionato un numero sufficiente di categorie", "Search finished, found %s page(s) matching the search query.": "Ricerca terminata, trovate %s pagine corrispondenti alla ricerca.", ", in ": ", in ", "Expand sidebar": "", "Permalink to this headline": "link permanente per questa intestazione", "Searching": "Ricerca in corso", "Collapse sidebar": "", "Permalink to this definition": "link permanente per questa definizione", "Hide Search Matches": "Nascondi i risultati della ricerca"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "it", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Nascondi i risultati della ricerca", "Permalink to this definition": "link permanente per questa definizione", "Expand sidebar": "", "Permalink to this headline": "link permanente per questa intestazione", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/it/LC_MESSAGES/sphinx.mo b/sphinx/locale/it/LC_MESSAGES/sphinx.mo
index 10ca29a50..09c7fdfdc 100644
Binary files a/sphinx/locale/it/LC_MESSAGES/sphinx.mo and b/sphinx/locale/it/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/it/LC_MESSAGES/sphinx.po b/sphinx/locale/it/LC_MESSAGES/sphinx.po
index 40a2ca2a3..04e2e3813 100644
--- a/sphinx/locale/it/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/it/LC_MESSAGES/sphinx.po
@@ -7,386 +7,402 @@ 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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Sandro Dentella \n"
"Language-Team: \n"
"Plural-Forms: nplurals=2; plural=(n != 1)\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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d %B %Y"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr "vedi %s"
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr "vedi anche %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Builtin"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Modulo"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d/%b/%Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Indice generale"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "indice"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "successivo"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "precedente"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (in "
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Indice"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Autore della sezione: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Autore del modulo: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "Autore del modulo: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Autore: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Vedi anche"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Parametri"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Ritorna"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Tipo di ritorno"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (funzione C)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (membro C )"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (macro C)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (tipo C)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (variabile C)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "funzione"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "membro"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr ""
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "tipo"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
#, fuzzy
msgid "variable"
msgstr "Variabile"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (classe C++)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (tipo C++)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (membro C++)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (funzione C++)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr ""
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (funzione built-in)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s metodo)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (classe)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s attributo)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "Parametri"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "attributo"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "Variabile"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Solleva"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (nel modulo %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (variabile built-in)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (nel modulo %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (classe built-in)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (classe in %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s metodo)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (%s.%s metodo statico)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (%s metodo statico)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s metodo)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s metodo)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (%s.%s attributo)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Piattaforme:"
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (modulo)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "Indice dei Moduli"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "moduli"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Deprecato"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "eccezione"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
-msgstr "%s() (%s metodo)"
+msgstr ""
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "metodo statico"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "modulo"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (deprecato)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
+#: sphinx/domains/rst.py:57
+#, python-format
msgid "%s (role)"
-msgstr "%s (modulo)"
+msgstr ""
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
-#, fuzzy
+#: sphinx/domains/rst.py:107
msgid "role"
-msgstr "modulo"
+msgstr ""
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "variabile d'ambiente, %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%sopzione di linea di comando; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "variabile d'ambiente"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Indice"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Indice dei Moduli"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Cerca"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "alias per :class:`%s`"
@@ -404,104 +420,104 @@ msgstr "(La <> si trova in %s, linea %d.)"
msgid "original entry"
msgstr "riga originale"
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "modulo"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Attenzione"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Attenzione"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Pericolo"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Errore"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Consiglio"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Importante"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Nota"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Vedi anche"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Suggerimento"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Avvertimento"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Nuovo nella versione %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Cambiato nella versione %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Deprecato dalla versione %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "keyword"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "operatore"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "oggetto"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "statement"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "funzione built-in"
@@ -510,8 +526,8 @@ msgstr "funzione built-in"
msgid "Table Of Contents"
msgstr "Tabella dei contenuti"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Cerca"
@@ -559,15 +575,15 @@ msgstr "accesso veloce ai moduli"
msgid "all functions, classes, terms"
msgstr "tutte le funzioni, classi e moduli"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Indice – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Indice completo in una pagina"
@@ -579,39 +595,39 @@ msgstr "Indice delle pagine per lettera"
msgid "can be huge"
msgstr "può essere enorme"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navigazione"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Cerca in %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "A proposito di questi documenti"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Ultimo aggiornamento %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -641,13 +657,13 @@ msgstr "Argomento successivo"
msgid "next chapter"
msgstr "capitolo successivo"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr ""
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -661,16 +677,15 @@ msgstr ""
" di ricerca cerca automaticamente per tutte le parole. Le pagine\n"
" che contendono meno parole non compariranno nei risultati di ricerca."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "cerca"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Risultati della ricerca"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "La tua ricerca non ha ottenuto risultati"
@@ -710,12 +725,12 @@ msgstr "Modifiche nelle API C"
msgid "Other changes"
msgstr "Altre modifiche"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "link permanente per questa intestazione"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "link permanente per questa definizione"
@@ -723,38 +738,12 @@ msgstr "link permanente per questa definizione"
msgid "Hide Search Matches"
msgstr "Nascondi i risultati della ricerca"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Ricerca in corso"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Preparazione della ricerca"
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", in "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 ""
-"La tua ricerca non ha trovato alcun risultato. Controlla la correttezza "
-"dei termini di ricerca e di avere selezionato un numero sufficiente di "
-"categorie"
-
-#: sphinx/themes/basic/static/searchtools.js:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Ricerca terminata, trovate %s pagine corrispondenti alla ricerca."
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -762,23 +751,51 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Release"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
#, fuzzy
msgid "Continued on next page"
msgstr "Indice completo in una pagina"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[immagine]"
+
+#~ msgid "Platforms: "
+#~ msgstr "Piattaforme:"
+
+#~ msgid "Searching"
+#~ msgstr "Ricerca in corso"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Preparazione della ricerca"
+
+#~ msgid ", in "
+#~ msgstr ", in "
+
+#~ 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 ""
+#~ "La tua ricerca non ha trovato "
+#~ "alcun risultato. Controlla la correttezza "
+#~ "dei termini di ricerca e di avere"
+#~ " selezionato un numero sufficiente di "
+#~ "categorie"
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Ricerca terminata, trovate %s pagine corrispondenti alla ricerca."
+
diff --git a/sphinx/locale/ja/LC_MESSAGES/sphinx.js b/sphinx/locale/ja/LC_MESSAGES/sphinx.js
index 6b63245ef..feb321596 100644
--- a/sphinx/locale/ja/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/ja/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "ja", "plural_expr": "0", "messages": {"Search Results": "\u691c\u7d22\u7d50\u679c", "Preparing search...": "\u691c\u7d22\u306e\u6e96\u5099\u4e2d...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u691c\u7d22\u6761\u4ef6\u306b\u4e00\u81f4\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u691c\u7d22\u3057\u305f\u3044\u8a00\u8449\u3092\u6b63\u3057\u3044\u3064\u3065\u308a\u3067\u5165\u529b\u3057\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u307e\u305f\u3001\u6b63\u3057\u3044\u30ab\u30c6\u30b4\u30ea\u306e\u691c\u7d22\u3092\u884c\u3063\u3066\u3044\u308b\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002", "Search finished, found %s page(s) matching the search query.": "\u691c\u7d22\u304c\u7d42\u4e86\u3057\u3001\u6761\u4ef6\u306b\u4e00\u81f4\u3059\u308b\u30da\u30fc\u30b8\u304c %s \u500b\u307f\u3064\u304b\u308a\u307e\u3057\u305f\u3002", ", in ": "", "Expand sidebar": "", "Permalink to this headline": "\u3053\u306e\u30d8\u30c3\u30c9\u30e9\u30a4\u30f3\u3078\u306e\u30d1\u30fc\u30de\u30ea\u30f3\u30af", "Searching": "\u691c\u7d22\u4e2d", "Collapse sidebar": "", "Permalink to this definition": "\u3053\u306e\u5b9a\u7fa9\u3078\u306e\u30d1\u30fc\u30de\u30ea\u30f3\u30af", "Hide Search Matches": "\u691c\u7d22\u7d50\u679c\u3092\u96a0\u3059"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "ja", "plural_expr": "0", "messages": {"Hide Search Matches": "\u691c\u7d22\u7d50\u679c\u3092\u96a0\u3059", "Permalink to this definition": "\u3053\u306e\u5b9a\u7fa9\u3078\u306e\u30d1\u30fc\u30de\u30ea\u30f3\u30af", "Expand sidebar": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u5c55\u958b", "Permalink to this headline": "\u3053\u306e\u30d8\u30c3\u30c9\u30e9\u30a4\u30f3\u3078\u306e\u30d1\u30fc\u30de\u30ea\u30f3\u30af", "Collapse sidebar": "\u30b5\u30a4\u30c9\u30d0\u30fc\u3092\u305f\u305f\u3080"}});
\ No newline at end of file
diff --git a/sphinx/locale/ja/LC_MESSAGES/sphinx.mo b/sphinx/locale/ja/LC_MESSAGES/sphinx.mo
index b0284f918..c60fd6dbb 100644
Binary files a/sphinx/locale/ja/LC_MESSAGES/sphinx.mo and b/sphinx/locale/ja/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/ja/LC_MESSAGES/sphinx.po b/sphinx/locale/ja/LC_MESSAGES/sphinx.po
index 5f65a6c3e..e8f84f418 100644
--- a/sphinx/locale/ja/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/ja/LC_MESSAGES/sphinx.po
@@ -8,386 +8,402 @@ 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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Yasushi MASUDA \n"
"Language-Team: ja \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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%Y 年 %m 月 %d 日"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr ""
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr ""
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "組み込み"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "モジュールレベル"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%Y 年 %m 月 %d 日"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "総合索引"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "索引"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "次へ"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "前へ"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr ""
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "索引"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "この節の作者: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "モジュールの作者: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "モジュールの作者: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "作者: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "参考"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "パラメタ"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "戻り値"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "戻り値の型"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (C の関数)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (C のメンバ変数)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C のマクロ)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C のデータ型)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C の変数)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "の関数"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "のメンバ変数"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr "のマクロ"
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "のデータ型"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
#, fuzzy
msgid "variable"
msgstr "変数"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, fuzzy, python-format
msgid "%s (C++ class)"
-msgstr "%s (のクラス)"
+msgstr "%s (C++ のクラス)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (C++ のデータ型)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (C++ のメンバ変数)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (C++ の関数)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
-msgstr ""
+msgstr "クラス"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (組み込み関数)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s のメソッド)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, fuzzy, python-format
+msgid "%s() (class)"
+msgstr "%s() (のクラス)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
-msgstr ""
+msgstr "%s (グローバル変数または定数)"
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s の属性)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "パラメタ"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
-msgstr ""
+msgstr "例外"
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
-msgstr ""
+msgstr "データ"
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "の属性"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "変数"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "例外"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (%s モジュール)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (組み込み変数)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (%s モジュール)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (組み込み変数)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (%s のクラス)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s のメソッド)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (%s.%s の静的メソッド)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (%s の静的メソッド)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s のメソッド)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s のメソッド)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (%s.%s の属性)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "プラットフォーム: "
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (モジュール)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "モジュール索引"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "モジュール"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "撤廃"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "例外"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
+msgstr "メソッド"
+
+#: sphinx/domains/python.py:563
+msgid "class method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
-msgid "class method"
-msgstr "%s() (%s のメソッド)"
-
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "の静的メソッド"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "モジュール"
-#: sphinx/domains/rst.py:53
-#, python-format
-msgid "%s (directive)"
-msgstr ""
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (撤廃)"
#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
-msgid "%s (role)"
-msgstr "%s (モジュール)"
+#, python-format
+msgid "%s (directive)"
+msgstr "%s (ディレクティブ)"
-#: sphinx/domains/rst.py:103
-msgid "directive"
+#: sphinx/domains/rst.py:57
+#, python-format
+msgid "%s (role)"
msgstr ""
-#: sphinx/domains/rst.py:104
-#, fuzzy
-msgid "role"
-msgstr "モジュール"
+#: sphinx/domains/rst.py:106
+msgid "directive"
+msgstr "ディレクティブ"
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/rst.py:107
+msgid "role"
+msgstr ""
+
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "環境変数; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%sコマンドラインオプション; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
-msgstr ""
+msgstr "用語集の項目"
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
-msgstr ""
+msgstr "文法トークン"
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
-msgstr ""
+msgstr "参照ラベル"
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "環境変数"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
-msgstr ""
+msgstr "プログラムオプション"
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "索引"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "モジュール索引"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "検索ページ"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " ベースクラス: %s"
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr ":class:`%s` のエイリアス"
@@ -399,110 +415,110 @@ msgstr "課題"
#: sphinx/ext/todo.py:109
#, python-format
msgid "(The <> is located in %s, line %d.)"
-msgstr ""
+msgstr "(<<元のエントリ>> は、 %s の %d 行目です)"
#: sphinx/ext/todo.py:117
msgid "original entry"
-msgstr ""
+msgstr "元のエントリ"
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
-msgstr ""
+msgstr "[ソース]"
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
-msgstr ""
+msgstr "[ドキュメント]"
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
-msgstr "モジュール"
+msgstr "モジュールコード"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
-msgstr ""
+msgstr "%s のソースコード "
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
-msgstr ""
+msgstr "概要: モジュールコード"
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
-msgstr ""
+msgstr "全モジュールのうち、コードを読めるもの "
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "注意"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "ご用心"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "危険"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "エラー"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "ヒント"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "重要"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "ノート"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "参考"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "ちなみに"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "警告"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "バージョン %s で追加"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "バージョン %s で変更"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "バージョン %s で撤廃"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "キーワード"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "演算子"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "オブジェクト"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "文"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "組み込み関数"
@@ -511,8 +527,8 @@ msgstr "組み込み関数"
msgid "Table Of Contents"
msgstr "目次"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "検索"
@@ -560,15 +576,15 @@ msgstr "全モジュール早見表"
msgid "all functions, classes, terms"
msgstr "関数、クラスおよび用語総覧"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "索引 – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "総索引"
@@ -580,39 +596,39 @@ msgstr "頭文字別索引"
msgid "can be huge"
msgstr "大きい場合があるので注意"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "ナビゲーション"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "%(docstitle)s 内を検索"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "このドキュメントについて"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "著作権"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "最終更新: %(last_updated)s"
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -642,13 +658,13 @@ msgstr "次のトピックへ"
msgid "next chapter"
msgstr "次の章へ"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr "検索機能を使うには JavaScript を有効にしてください。"
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -656,16 +672,15 @@ msgid ""
" containing fewer words won't appear in the result list."
msgstr "このページからドキュメントを検索できます。キーワードを下のボックスに入力して、「検索」をクリックしてください。入力された全てのキーワードを含むページが検索されます。一部のキーワードしか含まないページは検索結果に表示されないので注意してください。"
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "検索"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "検索結果"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "検索条件に一致する項目がありませんでした。"
@@ -705,12 +720,12 @@ msgstr "C API に関する変更"
msgid "Other changes"
msgstr "その多の変更"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "このヘッドラインへのパーマリンク"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "この定義へのパーマリンク"
@@ -718,58 +733,58 @@ msgstr "この定義へのパーマリンク"
msgid "Hide Search Matches"
msgstr "検索結果を隠す"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "検索中"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "検索の準備中..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ""
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "検索が終了し、条件に一致するページが %s 個みつかりました。"
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
-msgstr ""
+msgstr "サイドバーを展開"
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
-msgstr ""
+msgstr "サイドバーをたたむ"
#: sphinx/themes/haiku/layout.html:26
msgid "Contents"
-msgstr ""
+msgstr "コンテンツ"
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "リリース"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr "注記"
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "前のページからの続き"
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr "総索引"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[画像]"
+
+#~ msgid "Platforms: "
+#~ msgstr "プラットフォーム: "
+
+#~ msgid "Searching"
+#~ msgstr "検索中"
+
+#~ msgid "Preparing search..."
+#~ msgstr "検索の準備中..."
+
+#~ msgid ", in "
+#~ msgstr ""
+
+#~ 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 "検索条件に一致するドキュメントはありませんでした。検索したい言葉を正しいつづりで入力しているか確認してください。また、正しいカテゴリの検索を行っているか確認してください。"
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "検索が終了し、条件に一致するページが %s 個みつかりました。"
+
diff --git a/sphinx/locale/lt/LC_MESSAGES/sphinx.js b/sphinx/locale/lt/LC_MESSAGES/sphinx.js
index daf4f89b5..2ab4266bb 100644
--- a/sphinx/locale/lt/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/lt/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "lt", "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)", "messages": {"Search Results": "Paie\u0161kos rezultatai", "Preparing search...": "Ruo\u0161iama paie\u0161ka...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "J\u016bs\u0173 paie\u0161ka neatitiko joki\u0173 dokument\u0173. Pra\u0161om patikrinti ar visi \u017eod\u017eiai teisingai \u012fvesti ir ar pasirinkote pakankamai kategorij\u0173.", "Search finished, found %s page(s) matching the search query.": "Paie\u0161ka baigta, paie\u0161kos rezultatus atitiko %s puslapis(-iai,-i\u0173)", ", in ": ", kuris yra ", "Expand sidebar": "I\u0161pl\u0117sti \u0161onin\u0119 juost\u0105", "Permalink to this headline": "Nuoroda \u012f \u0161i\u0105 antra\u0161t\u0119", "Searching": "Ie\u0161koma", "Collapse sidebar": "Pasl\u0117pti \u0161onin\u0119 juost\u0105", "Permalink to this definition": "Nuoroda \u012f \u0161\u012f apibr\u0117\u017eim\u0105", "Hide Search Matches": "Pasl\u0117pti paie\u0161kos rezultatus"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "lt", "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2)", "messages": {"Hide Search Matches": "Pasl\u0117pti paie\u0161kos rezultatus", "Permalink to this definition": "Nuoroda \u012f \u0161\u012f apibr\u0117\u017eim\u0105", "Expand sidebar": "I\u0161pl\u0117sti \u0161onin\u0119 juost\u0105", "Permalink to this headline": "Nuoroda \u012f \u0161i\u0105 antra\u0161t\u0119", "Collapse sidebar": "Pasl\u0117pti \u0161onin\u0119 juost\u0105"}});
\ No newline at end of file
diff --git a/sphinx/locale/lt/LC_MESSAGES/sphinx.mo b/sphinx/locale/lt/LC_MESSAGES/sphinx.mo
index 794ae655f..c895af1fb 100644
Binary files a/sphinx/locale/lt/LC_MESSAGES/sphinx.mo and b/sphinx/locale/lt/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/lt/LC_MESSAGES/sphinx.po b/sphinx/locale/lt/LC_MESSAGES/sphinx.po
index 48618e306..6a9021263 100644
--- a/sphinx/locale/lt/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/lt/LC_MESSAGES/sphinx.po
@@ -7,8 +7,9 @@ msgstr ""
"Project-Id-Version: Sphinx 1.0pre/8b971dbc7d36\n"
"Report-Msgid-Bugs-To: dalius@sandbox.lt\n"
"POT-Creation-Date: 2010-05-24 23:53+0200\n"
-"PO-Revision-Date: 2010-06-19 12:02+0300\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Dalius Dobravolskas \n"
+"Language-Team: lt \n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"(n%100<10 || n%100>=20) ? 1 : 2)\n"
"MIME-Version: 1.0\n"
@@ -16,370 +17,388 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%Y-%m-%d"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
msgstr ""
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr ""
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Įtaisytieji"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Modulio lygis"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%Y-%m-%d"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Bendras indeksas"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "indeksas"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "kitas"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "praeitas"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (kuris yra "
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Indeksas"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Skyriaus autorius: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Modulio autorius: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
msgid "Code author: "
msgstr "Kodo autorius: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Autorius: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Taip pat žiūrėkite"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr "%s %s"
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Parametrai"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Grąžinamos reikšmės"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Grąžinamos reikšmės tipas"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (C funkcija)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (C narys)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C makrokomanda)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C tipas)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C kintamasis)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "funkcija"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "narys"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr "makrokomanda"
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "tipas"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
msgid "variable"
msgstr "kintamasis"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr ""
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (C++ tipas)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (C++ narys)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (C++ funkcija)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "klasė"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (itaisytoji funkcija)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s metodas)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (klasė)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr "%s (globalus kintamasis arba konstanta)"
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s atributas)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
msgid "Arguments"
msgstr "Argumentais"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr "Išmeta"
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr "duomenys"
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "atribudas"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
msgid "Variables"
msgstr "Kintamieji"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Sukelia"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (modulyje %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (įtaisytasis kintamasis)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (modulje %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (įtaisytoji klasė)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (klasė iš %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s metodas)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (%s.%s statinis metodas)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (%s statinis metodas)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s klasės metodas)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s klasės metodas)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (%s.%s atributas)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Platformos: "
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (modulis)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
msgid "Python Module Index"
msgstr ""
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "moduliai"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Atmestas"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "išimtis"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr "metodas"
-#: sphinx/domains/python.py:502
+#: sphinx/domains/python.py:563
msgid "class method"
msgstr "klasės metodas"
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "statinis metodas"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "modulis"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (atmestas)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr "%s (direktyva)"
-#: sphinx/domains/rst.py:55
+#: sphinx/domains/rst.py:57
#, python-format
msgid "%s (role)"
msgstr "%s (rolė)"
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr "direktyva"
-#: sphinx/domains/rst.py:104
+#: sphinx/domains/rst.py:107
msgid "role"
msgstr "rolė"
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "aplinkos kintamasis; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%skomandinės eilutės parinktis; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr "aiškinamasis terminas"
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr "gramatinė leksema"
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr "nuorodos požymis"
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "aplinkos kintamasis"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr "programos parinktis"
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Indeksas"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Modulio indeksas"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Paieškos puslapis"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " Bazės: %s"
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr ":class:`%s` alternatyvus vardas"
@@ -397,103 +416,103 @@ msgstr "(<> galima rasti %s, eilutėje %d.)"
msgid "original entry"
msgstr "originalus įrašas"
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr "[šaltinis]"
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr "[dokumentai]"
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
msgid "Module code"
msgstr "Modulio kodas"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr "Kodas %s "
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr "Apžvalga: modulio kodas"
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr "Visi moduliai turintys kodą "
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Dėmesio"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Atsargiai"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Pavojinga"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Klaida"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Patarimas"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Svarbu"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Pastaba"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Taip pat žiūrėkite"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Patarimas"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Įspėjimas"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Nauja %s versijoje"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Pakeista %s versijoje"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Nebepalaikoma nuo %s versijos"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "bazinis žodis"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "operatorius"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "objektas"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "sakinis"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "įtaisytoji funkcija"
@@ -502,8 +521,8 @@ msgstr "įtaisytoji funkcija"
msgid "Table Of Contents"
msgstr "Turinys"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Paieška"
@@ -551,15 +570,15 @@ msgstr "greitas visų modulių pasiekimas"
msgid "all functions, classes, terms"
msgstr "visos funkcijos, klasės ir terminai"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Indeksas – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Pilnas indeksas viename puslapyje"
@@ -571,39 +590,39 @@ msgstr "Indekso puslapiai pagal raidę"
msgid "can be huge"
msgstr "gali būti didelis"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navigacija"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Ieškoti tarp %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Apie šiuos dokumentus"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Autoriaus teisės"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Autoriaus teisės %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Autoriaus teisės %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Paskutinis atnaujinimas %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -633,7 +652,7 @@ msgstr "Kita tema"
msgid "next chapter"
msgstr "kita dalis"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
@@ -641,25 +660,28 @@ msgstr ""
"Prašome aktyvuoti JavaScript, kad veiktų paieškos\n"
" funkcionalumas."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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 ""
-"Čia jūs galite ieškoti šiuose dokumentuose. Įveskite savo paieškos\n žodžius į lauką apačioje ir paspauskite \"ieškoti\". Pastebėsime, kad paieškos\n funkcija automatiškai ieškos visų žodžių. Puslapiai,\n kuriuose yra mažiau žodžių nepasirodys tarp paieškos rezultatų."
+"Čia jūs galite ieškoti šiuose dokumentuose. Įveskite savo paieškos\n"
+" žodžius į lauką apačioje ir paspauskite \"ieškoti\". Pastebėsime, kad"
+" paieškos\n"
+" funkcija automatiškai ieškos visų žodžių. Puslapiai,\n"
+" kuriuose yra mažiau žodžių nepasirodys tarp paieškos rezultatų."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "ieškoti"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Paieškos rezultatai"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Jūsų paieška neatitiko jokių rezultatų"
@@ -699,12 +721,12 @@ msgstr "C API pakeitimai"
msgid "Other changes"
msgstr "Kiti pakeitimai"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Nuoroda į šią antraštę"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Nuoroda į šį apibrėžimą"
@@ -712,35 +734,12 @@ msgstr "Nuoroda į šį apibrėžimą"
msgid "Hide Search Matches"
msgstr "Paslėpti paieškos rezultatus"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Ieškoma"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Ruošiama paieška..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", kuris yra "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 "Jūsų paieška neatitiko jokių dokumentų. Prašom patikrinti ar visi žodžiai teisingai įvesti ir ar pasirinkote pakankamai kategorijų."
-
-#: sphinx/themes/basic/static/searchtools.js:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Paieška baigta, paieškos rezultatus atitiko %s puslapis(-iai,-ių)"
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr "Išplėsti šoninę juostą"
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr "Paslėpti šoninę juostą"
@@ -748,23 +747,52 @@ msgstr "Paslėpti šoninę juostą"
msgid "Contents"
msgstr "Turinys"
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Leidimas"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr "Išnašos"
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "tęsinys iš praeito puslapio"
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr "Tęsinys kitame puslapyje"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[paveiksliukas]"
+#~ msgid "Python Enhancement Proposals!PEP %s"
+#~ msgstr ""
+
+#~ msgid "Platforms: "
+#~ msgstr "Platformos: "
+
+#~ msgid "Searching"
+#~ msgstr "Ieškoma"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Ruošiama paieška..."
+
+#~ msgid ", in "
+#~ msgstr ", kuris yra "
+
+#~ 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 ""
+#~ "Jūsų paieška neatitiko jokių dokumentų. "
+#~ "Prašom patikrinti ar visi žodžiai "
+#~ "teisingai įvesti ir ar pasirinkote "
+#~ "pakankamai kategorijų."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Paieška baigta, paieškos rezultatus atitiko %s puslapis(-iai,-ių)"
+
diff --git a/sphinx/locale/nl/LC_MESSAGES/sphinx.js b/sphinx/locale/nl/LC_MESSAGES/sphinx.js
index e21ff948b..e33900afb 100644
--- a/sphinx/locale/nl/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/nl/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "nl", "plural_expr": "(n != 1)", "messages": {"Search Results": "Zoekresultaten", "Preparing search...": "Het zoeken wordt voorbereid...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Uw zoekopdracht leverde geen resultaten op. Controleer of alle woorden correct gespeld zijn en dat u genoeg categori\u00ebn hebt geselecteerd.", "Search finished, found %s page(s) matching the search query.": "Zoeken voltooid, %s pagina(s) gevonden.", ", in ": ", in ", "Expand sidebar": "", "Permalink to this headline": "Permalink naar deze titel", "Searching": "Zoeken", "Collapse sidebar": "", "Permalink to this definition": "Permalink naar deze definitie", "Hide Search Matches": "Zoekresultaten verbergen"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "nl", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Zoekresultaten verbergen", "Permalink to this definition": "Permalink naar deze definitie", "Expand sidebar": "", "Permalink to this headline": "Permalink naar deze titel", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/nl/LC_MESSAGES/sphinx.mo b/sphinx/locale/nl/LC_MESSAGES/sphinx.mo
index 2002607ff..f7afad063 100644
Binary files a/sphinx/locale/nl/LC_MESSAGES/sphinx.mo and b/sphinx/locale/nl/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/nl/LC_MESSAGES/sphinx.po b/sphinx/locale/nl/LC_MESSAGES/sphinx.po
index 8683db4f8..c9065504c 100644
--- a/sphinx/locale/nl/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/nl/LC_MESSAGES/sphinx.po
@@ -7,411 +7,402 @@ msgstr ""
"Project-Id-Version: Sphinx 0.5\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2009-08-06 23:04+0200\n"
-"PO-Revision-Date: 2010-05-29 16:22+0100\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Marijn van der Zee \n"
"Language-Team: nl \n"
"Plural-Forms: nplurals=2; plural=(n != 1)\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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106
-#: sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d. %B %Y"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr "zie %s"
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr "zie %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Builtins"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Moduleniveau"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d.%b.%Y"
-#: sphinx/builders/html.py:285
-#: sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Algemene index"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "Index"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "volgende"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "vorige"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr ""
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Index"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Auteur van deze sectie: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Auteur van deze module: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "Auteur van deze module: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Auteur: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Zie ook"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51
-#: sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Parameters"
-#: sphinx/domains/c.py:54
-#: sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Returns"
-#: sphinx/domains/c.py:56
-#: sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Return type"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (C-functie)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (C member)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C-macro)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C type)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C-variabele)"
-#: sphinx/domains/c.py:171
-#: sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166
-#: sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "functie"
-#: sphinx/domains/c.py:172
-#: sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "member"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr "macro"
-#: sphinx/domains/c.py:174
-#: sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "type"
-#: sphinx/domains/c.py:175
-#, fuzzy
+#: sphinx/domains/c.py:208
msgid "variable"
msgstr "variabele"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (C++ klasse)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (C++ type)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (C++ member)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (C++ functie)"
-#: sphinx/domains/cpp.py:1030
-#: sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "klasse"
-#: sphinx/domains/javascript.py:117
-#: sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (geïntegreerde functie)"
-#: sphinx/domains/javascript.py:118
-#: sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s methode)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (klasse)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr "%s (globale variabele of constante)"
-#: sphinx/domains/javascript.py:122
-#: sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s attribuut)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "Parameters"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167
-#: sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168
-#: sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "attribuut"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "Variabele"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Veroorzaakt"
-#: sphinx/domains/python.py:222
-#: sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291
-#: sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (in module %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (geïntegreerde variabele)"
-#: sphinx/domains/python.py:226
-#: sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (in module %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (geïntegreerde klasse)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (klasse in %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s methode)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (%s.%s statische methode)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (%s statische methode)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s methode)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s methode)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (%s.%s attribuut)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Platformen: "
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (module)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "Module-index"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "modules"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Verouderd"
-#: sphinx/domains/python.py:500
-#: sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "exceptie"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
-msgstr "%s() (%s methode)"
+msgstr ""
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "statische methode"
-#: sphinx/domains/python.py:505
-#: sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "module"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (verouderd)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
+#: sphinx/domains/rst.py:57
#, fuzzy, python-format
msgid "%s (role)"
-msgstr "%s (module)"
+msgstr "%s (rolle)"
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
+#: sphinx/domains/rst.py:107
#, fuzzy
msgid "role"
-msgstr "module"
+msgstr "rolle"
-#: sphinx/domains/std.py:68
-#: sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "omgevingsvariabele; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%sopdrachtregel optie; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "omgevingsvariabele"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360
-#: sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11
-#: sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50
-#: sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Index"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Module-index"
-#: sphinx/domains/std.py:362
-#: sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Zoekpagina"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -429,132 +420,125 @@ msgstr "(Het <> is te vinden in %s, regel %d.)"
msgid "original entry"
msgstr "originele item"
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
-#, fuzzy
+#: sphinx/ext/viewcode.py:131
msgid "Module code"
-msgstr "module"
+msgstr ""
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Let op"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Pas op"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Gevaar"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Fout"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Hint"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Belangrijk"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Notitie"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Zie ook"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Tip"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Waarschuwing"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Nieuw in versie %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Veranderd in versie %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Verouderd sinds versie %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "trefwoord"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "operator"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "object"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "statement"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "ingebouwde functie"
-#: sphinx/themes/agogo/layout.html:45
-#: sphinx/themes/basic/globaltoc.html:10
+#: sphinx/themes/agogo/layout.html:45 sphinx/themes/basic/globaltoc.html:10
#: sphinx/themes/basic/localtoc.html:11
msgid "Table Of Contents"
msgstr "Inhoudsopgave"
-#: sphinx/themes/agogo/layout.html:49
-#: sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11
-#: sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Zoeken"
-#: sphinx/themes/agogo/layout.html:52
-#: sphinx/themes/basic/searchbox.html:15
+#: sphinx/themes/agogo/layout.html:52 sphinx/themes/basic/searchbox.html:15
msgid "Go"
msgstr "Ga"
-#: sphinx/themes/agogo/layout.html:57
-#: sphinx/themes/basic/searchbox.html:20
+#: sphinx/themes/agogo/layout.html:57 sphinx/themes/basic/searchbox.html:20
msgid "Enter search terms or a module, class or function name."
msgstr "Geef zoekterm of de naam van een module, klasse of functie."
-#: sphinx/themes/agogo/layout.html:78
-#: sphinx/themes/basic/sourcelink.html:14
+#: sphinx/themes/agogo/layout.html:78 sphinx/themes/basic/sourcelink.html:14
msgid "Show Source"
msgstr "Broncode weergeven"
@@ -590,15 +574,15 @@ msgstr "sneltoegang naar alle modules"
msgid "all functions, classes, terms"
msgstr "alle functies, klasses en begrippen"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Index – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Volledige index op een pagina"
@@ -610,42 +594,46 @@ msgstr "Index pagineerd per letter"
msgid "can be huge"
msgstr "kan heel groot zijn"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navigatie"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Zoeken in %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Over deze documenten"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Laatste aanpassing op %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
-msgid "Created using Sphinx %(sphinx_version)s."
-msgstr "Aangemaakt met Sphinx %(sphinx_version)s."
+msgid ""
+"Created using Sphinx "
+"%(sphinx_version)s."
+msgstr ""
+"Aangemaakt met Sphinx "
+"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4
#, python-format
@@ -668,13 +656,13 @@ msgstr "Volgend onderwerp"
msgid "next chapter"
msgstr "volgend hoofdstuk"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr "Activeer JavaSscript om de zoekfunctionaliteit in te schakelen."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -682,20 +670,21 @@ msgid ""
" containing fewer words won't appear in the result list."
msgstr ""
"Hier kan u de documenten doorzoeken. Geef enkele trefwoorden\n"
-" in het veld hieronder en klik \"zoeken\". Merk op dat de zoekfunctie\n"
-" steeds naar alle woorden zoekt. Pagina's die minder woorden bevatten\n"
+" in het veld hieronder en klik \"zoeken\". Merk op dat de zoekfunctie"
+"\n"
+" steeds naar alle woorden zoekt. Pagina's die minder woorden bevatten"
+"\n"
" zullen niet tussen de resultaten verschijnen."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "zoeken"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Zoekresultaten"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Uw zoekopdracht leverde geen resultaten op."
@@ -735,14 +724,12 @@ msgstr "Veranderingen in de C-API"
msgid "Other changes"
msgstr "Andere veranderingen"
-#: sphinx/themes/basic/static/doctools.js:154
-#: sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Permalink naar deze titel"
-#: sphinx/themes/basic/static/doctools.js:160
-#: sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Permalink naar deze definitie"
@@ -750,33 +737,12 @@ msgstr "Permalink naar deze definitie"
msgid "Hide Search Matches"
msgstr "Zoekresultaten verbergen"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Zoeken"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Het zoeken wordt voorbereid..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", in "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 "Uw zoekopdracht leverde geen resultaten op. Controleer of alle woorden correct gespeld zijn en dat u genoeg categoriën hebt geselecteerd."
-
-#: sphinx/themes/basic/static/searchtools.js:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Zoeken voltooid, %s pagina(s) gevonden."
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -784,33 +750,49 @@ msgstr ""
msgid "Contents"
msgstr "Inhoud"
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Release"
-#: sphinx/writers/latex.py:572
-#: sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr "Voetnoten"
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "Vervolgd van vorige pagina"
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr "Vervolgd op volgende pagina"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[afbeelding]"
-#~ msgid "Parameter"
-#~ msgstr "Parameter"
-#~ msgid "here"
-#~ msgstr "hier"
-#~ msgid "module, in "
-#~ msgstr "module, in"
-#~ msgid "Platform: %s"
-#~ msgstr "Platform: %s"
+#~ msgid "Platforms: "
+#~ msgstr "Platformen: "
+
+#~ msgid "Searching"
+#~ msgstr "Zoeken"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Het zoeken wordt voorbereid..."
+
+#~ msgid ", in "
+#~ msgstr ", in "
+
+#~ 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 ""
+#~ "Uw zoekopdracht leverde geen resultaten "
+#~ "op. Controleer of alle woorden correct"
+#~ " gespeld zijn en dat u genoeg "
+#~ "categoriën hebt geselecteerd."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Zoeken voltooid, %s pagina(s) gevonden."
diff --git a/sphinx/locale/pl/LC_MESSAGES/sphinx.js b/sphinx/locale/pl/LC_MESSAGES/sphinx.js
index 5823053fe..6a3f5f311 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": {"Search Results": "Wyniki wyszukiwania", "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 ", "Expand sidebar": "", "Permalink to this headline": "Sta\u0142y odno\u015bnik do tego nag\u0142\u00f3wka", "Searching": "Wyszukiwanie", "Collapse sidebar": "", "Permalink to this definition": "Sta\u0142y odno\u015bnik do tej definicji", "Hide Search Matches": "Ukryj 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": {"Hide Search Matches": "Ukryj wyniki wyszukiwania", "Permalink to this definition": "Sta\u0142y odno\u015bnik do tej definicji", "Expand sidebar": "Rozwi\u0144 pasek boczny", "Permalink to this headline": "Sta\u0142y odno\u015bnik do tego nag\u0142\u00f3wka", "Collapse sidebar": "Zwi\u0144 pasek boczny"}});
\ 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 3c6105cdb..4f91a8c7e 100644
Binary files a/sphinx/locale/pl/LC_MESSAGES/sphinx.mo and b/sphinx/locale/pl/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/pl/LC_MESSAGES/sphinx.po b/sphinx/locale/pl/LC_MESSAGES/sphinx.po
index 6044e8eef..adf4f3cc5 100644
--- a/sphinx/locale/pl/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/pl/LC_MESSAGES/sphinx.po
@@ -1,507 +1,512 @@
-
msgid ""
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: 2010-05-24 23:54+0200\n"
-"Last-Translator: Michał Kandulski \n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
+"Last-Translator: Michał Kandulski \n"
"Language-Team: \n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && "
"(n%100<10 || n%100>=20) ? 1 : 2)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 0.9.4\n"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%B %d %Y"
-#: sphinx/roles.py:174
-#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+#: sphinx/environment.py:1624
+#, fuzzy, python-format
+msgid "see %s"
+msgstr "zobacz %s"
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, fuzzy, python-format
+msgid "see also %s"
+msgstr "zobacz także %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Wbudowane"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Poziom modułu"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%b %d %Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Indeks ogólny"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "indeks"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "dalej"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "wstecz"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (w "
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Indeks"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Autor rozdziału: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Autor modułu: "
-#: sphinx/directives/other.py:131
-#, fuzzy
+#: sphinx/directives/other.py:140
msgid "Code author: "
-msgstr "Autor modułu: "
+msgstr "Autor kodu: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Autor: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Zobacz także"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
-msgstr ""
+msgstr "%s %s"
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Parametry"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Zwraca"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Typ zwracany"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (funkcja C)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (pole C)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (makro C)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (typ C)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (zmienna C)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "funkcja"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "pole"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
-msgstr ""
+msgstr "makro"
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "typ"
-#: sphinx/domains/c.py:175
-#, fuzzy
+#: sphinx/domains/c.py:208
msgid "variable"
-msgstr "Zmienna"
+msgstr "zmienna"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
-msgstr "%s (klasie C++)"
+msgstr "%s (klasa C++)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (typ C++)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (pole C++)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (funkcja C++)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
-msgstr "klasie"
+msgstr "klasa"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (funkcja wbudowana)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s metoda)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (klasa)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
-msgstr ""
+msgstr "%s (zmienna lub stała globalna)"
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s atrybut)"
-#: sphinx/domains/javascript.py:131
-#, fuzzy
+#: sphinx/domains/javascript.py:122
msgid "Arguments"
-msgstr "Parametry"
+msgstr "Argumenty"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
-msgstr ""
+msgstr "Wyrzuca"
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
-msgstr ""
+msgstr "dane"
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "atrybut"
-#: sphinx/domains/python.py:53
-#, fuzzy
+#: sphinx/domains/python.py:100
msgid "Variables"
-msgstr "Zmienna"
+msgstr "Zmienne"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Wyrzuca"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (w module %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (zmienna wbudowana)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (w module %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (klasa wbudowana)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
-msgstr "%s (w klasie %s)"
+msgstr "%s (klasa w module %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s metoda)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
-msgstr "%s() (%s.%s statyczna metoda)"
+msgstr "%s() (%s.%s metoda statyczna)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
-msgstr "%s() (%s statyczna metoda)"
+msgstr "%s() (%s metoda statyczna)"
-#: sphinx/domains/python.py:308
-#, fuzzy, python-format
+#: sphinx/domains/python.py:341
+#, python-format
msgid "%s() (%s.%s class method)"
-msgstr "%s() (%s.%s metoda)"
+msgstr "%s() (%s.%s metoda klasy)"
-#: sphinx/domains/python.py:311
-#, fuzzy, python-format
+#: sphinx/domains/python.py:344
+#, python-format
msgid "%s() (%s class method)"
-msgstr "%s() (%s metoda)"
+msgstr "%s() (%s metoda klasy)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
-msgstr "%s (%s.%s atrybut)"
+msgstr "%s (atrybut %s.%s)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Platformy: "
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (moduł)"
-#: sphinx/domains/python.py:429
-#, fuzzy
+#: sphinx/domains/python.py:490
msgid "Python Module Index"
-msgstr "Indeks modułów"
+msgstr "Indeks modułów pythona"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "moduły"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Niezalecane"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "wyjątek"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
-msgstr ""
+msgstr "metoda"
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
-msgstr "%s() (%s metoda)"
+msgstr "metoda klasy"
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "statyczna metoda"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "moduł"
-#: sphinx/domains/rst.py:53
-#, python-format
-msgid "%s (directive)"
-msgstr ""
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (niezalecane)"
#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
+#, python-format
+msgid "%s (directive)"
+msgstr "%s (dyrektywa)"
+
+#: sphinx/domains/rst.py:57
msgid "%s (role)"
-msgstr "%s (moduł)"
+msgstr "%s (rola)"
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
-msgstr ""
+msgstr "dyrektywa"
-#: sphinx/domains/rst.py:104
-#, fuzzy
+#: sphinx/domains/rst.py:107
msgid "role"
-msgstr "moduł"
+msgstr "rola"
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "zmienna środowiskowa; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%sopcja linii komend; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
-msgstr ""
+msgstr "termin glosariusza"
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
-msgstr ""
+msgstr "symbol gramatyki"
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
-msgstr ""
+msgstr "etykieta odsyłacza"
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "zmienna środowiskowa"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
-msgstr ""
+msgstr "opcja programu"
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Indeks"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Indeks modułów"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Wyszukiwanie"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " Klasy bazowe: %s"
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "alias klasy :class:`%s`"
#: sphinx/ext/todo.py:41
msgid "Todo"
-msgstr "Do zrobienia"
+msgstr "Todo"
#: sphinx/ext/todo.py:109
-#, fuzzy, python-format
msgid "(The <> is located in %s, line %d.)"
-msgstr ""
-"(Oryginalny wpis znajduje się w pliku %s, w linii %d i może być "
-"odnaleziony "
+msgstr "(<> znajduje się w pliku %s, w linii %d.)"
#: sphinx/ext/todo.py:117
msgid "original entry"
-msgstr ""
+msgstr "oryginalny wpis"
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
-msgstr ""
+msgstr "[źródło]"
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
-msgstr ""
+msgstr "[dokumenty]"
-#: sphinx/ext/viewcode.py:123
-#, fuzzy
+#: sphinx/ext/viewcode.py:131
msgid "Module code"
-msgstr "moduł"
+msgstr "Kod modułu"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
-msgstr ""
+msgstr "Kod źródłowy modułu %s "
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
-msgstr ""
+msgstr "Przeglądanie: kod modułu"
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
-msgstr ""
+msgstr "Wszystkie moduły, dla których jest dostępny kod "
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Uwaga"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Ostrożnie"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Niebezpieczeństwo"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Błąd"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Podpowiedź"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Ważne"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Uwaga"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Zobacz także"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Wskazówka"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Ostrzeżenie"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Nowe w wersji %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Zmienione w wersji %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Niezalecane od wersji %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "słowo kluczowe"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "operator"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "obiekt"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "instrukcja"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "funkcja wbudowana"
@@ -510,8 +515,8 @@ msgstr "funkcja wbudowana"
msgid "Table Of Contents"
msgstr "Spis treści"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Szukaj"
@@ -541,15 +546,15 @@ msgstr "Kompletny spis treści"
#: sphinx/themes/basic/defindex.html:24
msgid "lists all sections and subsections"
-msgstr "wymień wszystkie rozdziały i podrozdziały"
+msgstr "wszystkie rozdziały i podrozdziały"
#: sphinx/themes/basic/defindex.html:26
msgid "search this documentation"
-msgstr "wyszukaj w dokumentacji"
+msgstr "przyszukaj tę dokumentację"
#: sphinx/themes/basic/defindex.html:28
msgid "Global Module Index"
-msgstr "Indeks modułów"
+msgstr "Globalny indeks modułów"
#: sphinx/themes/basic/defindex.html:29
msgid "quick access to all modules"
@@ -559,15 +564,15 @@ msgstr "szybki dostęp do wszystkich modułów"
msgid "all functions, classes, terms"
msgstr "wszystkie funkcje, klasy, terminy"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Indeks – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Cały indeks na jednej stronie"
@@ -579,39 +584,39 @@ msgstr "Strony indeksu alfabetycznie"
msgid "can be huge"
msgstr "może być ogromny"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Nawigacja"
-#: sphinx/themes/basic/layout.html:113
+#: 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:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "O tych dokumentach"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Ostatnia modyfikacja %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -641,13 +646,13 @@ msgstr "Następny temat"
msgid "next chapter"
msgstr "następny rozdział"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr "Aby umożliwić wuszukiwanie, proszę włączyć JavaScript."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -661,16 +666,15 @@ msgstr ""
" nie zawierające wszystkich wpisanych słów nie znajdą się na wynikowej"
" liście."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
-msgstr "Szukaj"
+msgstr "szukaj"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Wyniki wyszukiwania"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Nie znaleziono żadnych pasujących stron."
@@ -710,12 +714,12 @@ msgstr "Zmiany w C API"
msgid "Other changes"
msgstr "Inne zmiany"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Stały odnośnik do tego nagłówka"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Stały odnośnik do tej definicji"
@@ -723,73 +727,62 @@ msgstr "Stały odnośnik do tej definicji"
msgid "Hide Search Matches"
msgstr "Ukryj wyniki wyszukiwania"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Wyszukiwanie"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Przygotowanie wyszukiwania..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", w "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 ""
-"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:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Przeszukiwanie zakończone, znaleziono %s pasujących stron."
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
-msgstr ""
+msgstr "Rozwiń pasek boczny"
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
-msgstr ""
+msgstr "Zwiń pasek boczny"
#: sphinx/themes/haiku/layout.html:26
msgid "Contents"
-msgstr ""
+msgstr "Treść"
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Wydanie"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr "Przypisy"
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "kontynuacja poprzedniej strony"
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr "Kontynuacja na następnej stronie"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
-msgstr "[obrazek]"
+msgstr "[obraz]"
-#~ msgid "Parameter"
-#~ msgstr "Parametr"
+#~ msgid "Platforms: "
+#~ msgstr "Platformy: "
-#~ msgid "here"
-#~ msgstr "tutaj"
+#~ msgid "Searching"
+#~ msgstr "Wyszukiwanie"
-#~ msgid "module, in "
-#~ msgstr "moduł, w "
+#~ msgid "Preparing search..."
+#~ msgstr "Przygotowanie wyszukiwania..."
-#~ msgid "Platform: %s"
-#~ msgstr "Platforma: %s"
+#~ msgid ", in "
+#~ msgstr ", w "
+
+#~ 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 ""
+#~ "Nie znaleziono żadnych pasujących dokumentów."
+#~ " Upewnij się, że wszystkie słowa są"
+#~ " poprawnie wpisane i że wybrałeś "
+#~ "wystarczającą liczbę kategorii."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Przeszukiwanie zakończone, znaleziono %s pasujących stron."
diff --git a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js
index 312d0fc7a..288c9692c 100644
--- a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "pt_BR", "plural_expr": "(n > 1)", "messages": {"Search Results": "Resultados da Pesquisa", "Preparing search...": "Preparando pesquisa...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Sua pesquisa n\u00e3o encontrou nenhum documento. Por favor assegure-se de que todas as palavras foram digitadas corretamente e de que voc\u00ea tenha selecionado o m\u00ednimo de categorias.", "Search finished, found %s page(s) matching the search query.": "Pesquisa finalizada, foram encontrada(s) %s p\u00e1gina(s) que conferem com o crit\u00e9rio de pesquisa.", ", in ": ", em ", "Expand sidebar": "Expandir painel lateral", "Permalink to this headline": "Link permanente para este t\u00edtulo", "Searching": "Pesquisando", "Collapse sidebar": "Recolher painel lateral", "Permalink to this definition": "Link permanente para esta defini\u00e7\u00e3o", "Hide Search Matches": "Esconder Resultados da Pesquisa"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "pt_BR", "plural_expr": "(n > 1)", "messages": {"Hide Search Matches": "Esconder Resultados da Pesquisa", "Permalink to this definition": "Link permanente para esta defini\u00e7\u00e3o", "Expand sidebar": "Expandir painel lateral", "Permalink to this headline": "Link permanente para este t\u00edtulo", "Collapse sidebar": "Recolher painel lateral"}});
\ No newline at end of file
diff --git a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo
index 67c1ce549..bb7d8d203 100644
Binary files a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo and b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po
index 7df9013e7..1906a7c7d 100644
--- a/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/pt_BR/LC_MESSAGES/sphinx.po
@@ -8,405 +8,397 @@ 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: 2010-06-20 18:34-0300\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Roger Demetrescu \n"
"Language-Team: pt_BR \n"
"Plural-Forms: nplurals=2; plural=(n > 1)\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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106
-#: sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d/%m/%Y"
-#: sphinx/roles.py:174
-#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+#: sphinx/environment.py:1624
+#, fuzzy, python-format
+msgid "see %s"
+msgstr "veja %s"
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, fuzzy, python-format
+msgid "see also %s"
+msgstr "veja também %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Internos"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Módulo"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d/%m/%Y"
-#: sphinx/builders/html.py:285
-#: sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Índice Geral"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "índice"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "próximo"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "anterior"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (em "
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Índice"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Autor da seção: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Autor do módulo: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
msgid "Code author: "
msgstr "Autor do código: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Autor: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Veja também"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr "%s %s"
-#: sphinx/domains/c.py:51
-#: sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Parâmetros"
-#: sphinx/domains/c.py:54
-#: sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Retorna"
-#: sphinx/domains/c.py:56
-#: sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Tipo de retorno"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (função C)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (membro C)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (macro C)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (tipo C)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (variável C)"
-#: sphinx/domains/c.py:171
-#: sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166
-#: sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "função"
-#: sphinx/domains/c.py:172
-#: sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "membro"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr "macro"
-#: sphinx/domains/c.py:174
-#: sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "tipo"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
msgid "variable"
msgstr "variável"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (classe C++)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (tipo C++)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (membro C++)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (função C++)"
-#: sphinx/domains/cpp.py:1030
-#: sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "classe"
-#: sphinx/domains/javascript.py:117
-#: sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (função interna)"
-#: sphinx/domains/javascript.py:118
-#: sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (método %s)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (classe)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr "%s (variável global ou constante)"
-#: sphinx/domains/javascript.py:122
-#: sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (atributo %s)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
msgid "Arguments"
msgstr "Parâmetros"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr "Gera"
-#: sphinx/domains/javascript.py:167
-#: sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr "dado"
-#: sphinx/domains/javascript.py:168
-#: sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "atributo"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
msgid "Variables"
msgstr "Variáveis"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Levanta"
-#: sphinx/domains/python.py:222
-#: sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291
-#: sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (no módulo %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (variável interna)"
-#: sphinx/domains/python.py:226
-#: sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (no módulo %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (classe interna)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (classe em %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (método %s.%s)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (método estático %s.%s)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (método estático %s)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (método de classe %s.%s)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, python-format
msgid "%s() (%s class method)"
msgstr "%s() (método de classe %s)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (atributo %s.%s)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Plataformas: "
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (módulo)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
msgid "Python Module Index"
msgstr "Índice de Módulos do Python"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "módulos"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Obsoleto"
-#: sphinx/domains/python.py:500
-#: sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "exceção"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr "método"
-#: sphinx/domains/python.py:502
-#, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
msgstr "método de classe"
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "método estático"
-#: sphinx/domains/python.py:505
-#: sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "módulo"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (obsoleto)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr "%s (diretiva)"
-#: sphinx/domains/rst.py:55
+#: sphinx/domains/rst.py:57
#, python-format
msgid "%s (role)"
msgstr "%s (papel)"
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr "diretiva"
-#: sphinx/domains/rst.py:104
+#: sphinx/domains/rst.py:107
msgid "role"
msgstr "papel"
-#: sphinx/domains/std.py:68
-#: sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "váriavel de ambiente; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%sopção de linha de comando; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr "Termo de glossário"
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr "token de gramática"
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr "rótulo de referência"
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "váriavel de ambiente"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr "opção de programa"
-#: sphinx/domains/std.py:360
-#: sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11
-#: sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50
-#: sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Índice"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Índice do Módulo"
-#: sphinx/domains/std.py:362
-#: sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Página de Pesquisa"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " Bases: %s"
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "apelido de :class:`%s`"
@@ -424,131 +416,125 @@ msgstr "(A <> está localizada em %s, linha %d.)"
msgid "original entry"
msgstr "entrada original"
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr "[código fonte]"
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr "[documentos]"
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
msgid "Module code"
msgstr "Código do módulo"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr "Código fonte de %s "
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr "Visão geral: código do módulo"
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr "Todos os módulos onde este código está disponível "
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Atenção"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Cuidado"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Perigo"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Erro"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Dica"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Importante"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Nota"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Veja Também"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Dica"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Aviso"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Novo na versão %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Alterado na versão %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Obsoleto desde a versão %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "palavra-chave"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "operador"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "objeto"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "comando"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "função interna"
-#: sphinx/themes/agogo/layout.html:45
-#: sphinx/themes/basic/globaltoc.html:10
+#: sphinx/themes/agogo/layout.html:45 sphinx/themes/basic/globaltoc.html:10
#: sphinx/themes/basic/localtoc.html:11
msgid "Table Of Contents"
msgstr "Tabela de Conteúdo"
-#: sphinx/themes/agogo/layout.html:49
-#: sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11
-#: sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Pesquisar"
-#: sphinx/themes/agogo/layout.html:52
-#: sphinx/themes/basic/searchbox.html:15
+#: sphinx/themes/agogo/layout.html:52 sphinx/themes/basic/searchbox.html:15
msgid "Go"
msgstr "Ir"
-#: sphinx/themes/agogo/layout.html:57
-#: sphinx/themes/basic/searchbox.html:20
+#: sphinx/themes/agogo/layout.html:57 sphinx/themes/basic/searchbox.html:20
msgid "Enter search terms or a module, class or function name."
msgstr "Digite os termos da busca ou o nome de um módulo, classe ou função."
-#: sphinx/themes/agogo/layout.html:78
-#: sphinx/themes/basic/sourcelink.html:14
+#: sphinx/themes/agogo/layout.html:78 sphinx/themes/basic/sourcelink.html:14
msgid "Show Source"
msgstr "Exibir Fonte"
@@ -584,15 +570,15 @@ msgstr "acesso rápido para todos os módulos"
msgid "all functions, classes, terms"
msgstr "todas funções, classes, termos"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Índice – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Índice completo em uma página"
@@ -604,42 +590,46 @@ msgstr "Paginas de índice por letra"
msgid "can be huge"
msgstr "pode ser enorme"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navegação"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Pesquisar dentro de %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Sobre estes documentos"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Última atualização em %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
-msgid "Created using Sphinx %(sphinx_version)s."
-msgstr "Criado com Sphinx %(sphinx_version)s."
+msgid ""
+"Created using Sphinx "
+"%(sphinx_version)s."
+msgstr ""
+"Criado com Sphinx "
+"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4
#, python-format
@@ -662,13 +652,13 @@ msgstr "Próximo tópico"
msgid "next chapter"
msgstr "próximo capítulo"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr "Por favor ative o JavaScript para habilitar a funcionalidade de pesquisa."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -676,20 +666,21 @@ msgid ""
" containing fewer words won't appear in the result list."
msgstr ""
"A partir daqui você pode pesquisar estes documentos. Preencha suas \n"
-" palavras de pesquisa na caixa abaixo e clique em \"pesquisar\". Observe que a função de pesquisa\n"
+" palavras de pesquisa na caixa abaixo e clique em \"pesquisar\". "
+"Observe que a função de pesquisa\n"
" irá pesquisar automaticamente por todas as palavras.\n"
-" Páginas contendo menos palavras não irão aparecer na lista de resultado."
+" Páginas contendo menos palavras não irão aparecer na lista de "
+"resultado."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "pesquisar"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Resultados da Pesquisa"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Sua pesquisa não encontrou nenhum resultado."
@@ -729,14 +720,12 @@ msgstr "Alterações na API C"
msgid "Other changes"
msgstr "Outras alterações"
-#: sphinx/themes/basic/static/doctools.js:154
-#: sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Link permanente para este título"
-#: sphinx/themes/basic/static/doctools.js:160
-#: sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Link permanente para esta definição"
@@ -744,33 +733,12 @@ msgstr "Link permanente para esta definição"
msgid "Hide Search Matches"
msgstr "Esconder Resultados da Pesquisa"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Pesquisando"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Preparando pesquisa..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", em "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 "Sua pesquisa não encontrou nenhum documento. Por favor assegure-se de que todas as palavras foram digitadas corretamente e de que você tenha selecionado o mínimo de categorias."
-
-#: sphinx/themes/basic/static/searchtools.js:493
-#, 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/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr "Expandir painel lateral"
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr "Recolher painel lateral"
@@ -778,24 +746,53 @@ msgstr "Recolher painel lateral"
msgid "Contents"
msgstr "Conteúdo"
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Versão"
-#: sphinx/writers/latex.py:572
-#: sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr "Notas de rodapé"
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "continuação da página anterior"
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr "Continua na próxima página"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[imagem]"
+#~ msgid "Platforms: "
+#~ msgstr "Plataformas: "
+
+#~ msgid "Searching"
+#~ msgstr "Pesquisando"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Preparando pesquisa..."
+
+#~ msgid ", in "
+#~ msgstr ", em "
+
+#~ 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 ""
+#~ "Sua pesquisa não encontrou nenhum "
+#~ "documento. Por favor assegure-se de "
+#~ "que todas as palavras foram digitadas"
+#~ " corretamente e de que você tenha "
+#~ "selecionado o mínimo de categorias."
+
+#~ 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."
+
diff --git a/sphinx/locale/ru/LC_MESSAGES/sphinx.js b/sphinx/locale/ru/LC_MESSAGES/sphinx.js
index e597cfad9..ca0376ac6 100644
--- a/sphinx/locale/ru/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/ru/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "ru", "plural_expr": "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", "messages": {"Search Results": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043f\u043e\u0438\u0441\u043a\u0430", "Preparing search...": "\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a \u043f\u043e\u0438\u0441\u043a\u0443...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u041d\u0435\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432\u0430\u0448\u0435\u043c\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u0443. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043b\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u0438 \u043d\u0435\u0442 \u043b\u0438 \u043e\u043f\u0435\u0447\u0430\u0442\u043e\u043a \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435.", "Search finished, found %s page(s) matching the search query.": "\u041f\u043e\u0438\u0441\u043a \u043e\u043a\u043e\u043d\u0447\u0435\u043d, \u043d\u0430\u0439\u0434\u0435\u043d\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446: %s.", ", in ": ", \u0432 ", "Expand sidebar": "", "Permalink to this headline": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", "Searching": "\u041f\u043e\u0438\u0441\u043a", "Collapse sidebar": "", "Permalink to this definition": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435", "Hide Search Matches": "\u0421\u043d\u044f\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "ru", "plural_expr": "n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2", "messages": {"Hide Search Matches": "\u0421\u043d\u044f\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435", "Permalink to this definition": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435", "Expand sidebar": "", "Permalink to this headline": "\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/ru/LC_MESSAGES/sphinx.mo b/sphinx/locale/ru/LC_MESSAGES/sphinx.mo
index ecdc68604..dae20a23a 100644
Binary files a/sphinx/locale/ru/LC_MESSAGES/sphinx.mo and b/sphinx/locale/ru/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/ru/LC_MESSAGES/sphinx.po b/sphinx/locale/ru/LC_MESSAGES/sphinx.po
index e2b1e3a13..327152d12 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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: alexander smishlajev \n"
"Language-Team: ru \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
@@ -15,379 +15,396 @@ msgstr ""
"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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d %B %Y"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr ""
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr ""
+
+#: sphinx/roles.py:175
+#, fuzzy, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Встроенные функции"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Модуль"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b %Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Словарь-указатель"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "словарь"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "следующий"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "предыдущий"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (в "
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Алфавитный указатель"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Автор секции: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Автор модуля: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "Автор модуля: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Автор: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "См.также"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Параметры"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Результат"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Тип результата"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (функция C)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (поле C)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (макроподстановка C)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (тип C)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (переменная C)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "функция"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "поле"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr ""
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "тип"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
#, fuzzy
msgid "variable"
msgstr "Переменная"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (класс C++)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (тип C++)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (поле C++)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (функция C++)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "класс"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (встроенная функция)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (метод %s)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (класс)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (атрибут %s)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "Параметры"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "атрибут"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "Переменная"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Исключение"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (в модуле %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (встроенная переменная)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (в модуле %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (встроенный класс)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (класс в %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (метод %s.%s)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (статический метод %s.%s)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (статический метод %s)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (метод %s.%s)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (метод %s)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (атрибут %s.%s)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Платформы: "
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (модуль)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "Состав модуля"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "модули"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Не рекомендуется"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "исключение"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
-msgstr "%s() (метод %s)"
+msgstr ""
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "статический метод"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "модуль"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+#, fuzzy
+msgid " (deprecated)"
+msgstr " (не рекомендуется)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
+#: sphinx/domains/rst.py:57
+#, python-format
msgid "%s (role)"
-msgstr "%s (модуль)"
+msgstr ""
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
-#, fuzzy
+#: sphinx/domains/rst.py:107
msgid "role"
-msgstr "модуль"
+msgstr ""
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "переменная окружения; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "Опция командной строки %s; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "переменная окружения"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Алфавитный указатель"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Состав модуля"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Поиск"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " Базовые классы: %s"
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "псевдоним класса :class:`%s`"
@@ -399,110 +416,110 @@ msgstr "План"
#: sphinx/ext/todo.py:109
#, fuzzy, python-format
msgid "(The <> is located in %s, line %d.)"
-msgstr "(Исходный элемент находится в %s, в строке %d, и может быть найден "
+msgstr "(Исходный элемент находится в %s, в строке %d.)"
#: sphinx/ext/todo.py:117
msgid "original entry"
msgstr ""
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "модуль"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Внимание"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Осторожно"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Опасно"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Ошибка"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Подсказка"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Важно"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Примечание"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "См.также"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Совет"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Предупреждение"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Добавлено в версии %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Изменено в версии %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Не рекомендуется, начиная с версии %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "ключевое слово"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "оператор"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "объект"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "команда"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "базовая функция"
@@ -511,8 +528,8 @@ msgstr "базовая функция"
msgid "Table Of Contents"
msgstr "Содержание"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Поиск"
@@ -560,15 +577,15 @@ msgstr "сводный список всех модулей"
msgid "all functions, classes, terms"
msgstr "все функции, классы, переменные и константы"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Алфавитный указатель – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Полный алфавитный указатель на одной странице"
@@ -580,39 +597,39 @@ msgstr "Указатели по буквам алфавита"
msgid "can be huge"
msgstr "может быть очень большим"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Просмотр"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Поиск в документе «%(docstitle)s»"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Об этих документах…"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Дата последнего обновления: %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -642,13 +659,13 @@ msgstr "Следующий раздел"
msgid "next chapter"
msgstr "следующая глава"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr "Для выполнения поиска необходима поддержка JavaScript в браузере."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -661,16 +678,15 @@ msgstr ""
"упомянуты все указанные слова. Страницы, в которых встречается только "
"часть этих слов, отобраны не будут."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "искать"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Результаты поиска"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Результатов по вашему запросу не найдено."
@@ -710,12 +726,12 @@ msgstr "Изменения в C API"
msgid "Other changes"
msgstr "Другие изменения"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Ссылка на этот заголовок"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Ссылка на это определение"
@@ -723,37 +739,12 @@ msgstr "Ссылка на это определение"
msgid "Hide Search Matches"
msgstr "Снять выделение"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Поиск"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Подготовка к поиску..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", в "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Поиск окончен, найдено страниц: %s."
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -761,23 +752,50 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Выпуск"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
#, fuzzy
msgid "Continued on next page"
msgstr "Полный алфавитный указатель на одной странице"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[рисунок]"
+
+#~ msgid "Platforms: "
+#~ msgstr "Платформы: "
+
+#~ msgid "Searching"
+#~ msgstr "Поиск"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Подготовка к поиску..."
+
+#~ msgid ", in "
+#~ msgstr ", в "
+
+#~ 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 ""
+#~ "Нет документов, соответствующих вашему "
+#~ "запросу. Проверьте, правильно ли выбраны "
+#~ "категории и нет ли опечаток в "
+#~ "запросе."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Поиск окончен, найдено страниц: %s."
+
diff --git a/sphinx/locale/sl/LC_MESSAGES/sphinx.js b/sphinx/locale/sl/LC_MESSAGES/sphinx.js
index 2a2f960a6..2bcb33dad 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": {"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 ", "Expand sidebar": "", "Permalink to this headline": "Povezava na naslov", "Searching": "I\u0161\u010dem", "Collapse sidebar": "", "Permalink to this definition": "Povezava na to definicijo", "Hide Search Matches": "Skrij resultate iskanja"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "sl", "plural_expr": "0", "messages": {"Hide Search Matches": "Skrij resultate iskanja", "Permalink to this definition": "Povezava na to definicijo", "Expand sidebar": "", "Permalink to this headline": "Povezava na naslov", "Collapse sidebar": ""}});
\ 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 21e64ffd5..0535cf6e2 100644
Binary files a/sphinx/locale/sl/LC_MESSAGES/sphinx.mo and b/sphinx/locale/sl/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/sl/LC_MESSAGES/sphinx.po b/sphinx/locale/sl/LC_MESSAGES/sphinx.po
index 6028c35c8..ad0ef4323 100644
--- a/sphinx/locale/sl/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/sl/LC_MESSAGES/sphinx.po
@@ -1,389 +1,404 @@
-
msgid ""
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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Luka Marinko \n"
"Language-Team: Rok Garbas \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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d %B, %Y"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr ""
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr ""
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Vgrajeni deli"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Nivo modula"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b, %Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Splošni abecedni seznam"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "abecedni seznam"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "naprej"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "nazaj"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (v "
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Abecedni seznam"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Avtor sekcije: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Avtor modula: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "Avtor modula: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Avtor: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Poglej Tudi"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Parametri"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Vrne"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Vrne tip"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (C funkcija)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (C član)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C makro)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C tip)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C spremenljivka)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "funkcija"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "član"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr ""
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "tip"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
#, fuzzy
msgid "variable"
msgstr "Spremenljivka"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (C++ razred)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (C++ tip)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (C++ član)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (C++ funkcija)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "razred"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (vgrajene funkcije)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s metoda)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (razred)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s atribut)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "Parametri"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "atribut"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "Spremenljivka"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Sproži izjemo"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (v modulu %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (vgrajene spremenljivke)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (v modulu %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (vgrajen razred)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (razred v %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s metoda)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (%s.%s statična metoda)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (%s statična metoda)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s metoda)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s metoda)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (%s.%s atribut)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Platforme:"
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (modul)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "Seznam modulov"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "Moduli"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Zastarelo"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "izjema"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
-msgstr "%s() (%s metoda)"
+msgstr ""
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "statična metoda"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "modul"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (zastarelo)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
+#: sphinx/domains/rst.py:57
+#, python-format
msgid "%s (role)"
-msgstr "%s (modul)"
+msgstr ""
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
-#, fuzzy
+#: sphinx/domains/rst.py:107
msgid "role"
-msgstr "modul"
+msgstr ""
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "okoljska spremenljivka; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%scommand line parameter; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "okoljska spremenljivka"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Abecedni seznam"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Seznam modulov"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Iskalnik"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " Baza: %s"
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "vzdevek za :class:`%s`"
@@ -395,110 +410,110 @@ msgstr "Todo"
#: sphinx/ext/todo.py:109
#, fuzzy, python-format
msgid "(The <> is located in %s, line %d.)"
-msgstr "(Originalen vnos se nahaja v %s, v vrstici %d, in ga je moč poiskati "
+msgstr "(<> se nahaja v %s, v vrstici %d.)"
#: sphinx/ext/todo.py:117
msgid "original entry"
msgstr ""
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "modul"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Pozor"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Previdno"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Nevarno"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Napaka"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Nasvet"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Pomembno"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Opomba"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Poglej Tudi"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Nasvet"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Opozorilo"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Novo v verziji %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Spremenjeno v verziji %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Zastarelo od verzije %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "ključna beseda"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "operator"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "objekt"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "izjava"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "vgrajene funkcije"
@@ -507,8 +522,8 @@ msgstr "vgrajene funkcije"
msgid "Table Of Contents"
msgstr "Seznam Vsebine"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Išči"
@@ -556,15 +571,15 @@ msgstr "hiter dostop do vseh modulov"
msgid "all functions, classes, terms"
msgstr "vse funkcije, razredi, izrazi"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Seznam – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Poln indeks na eni strani"
@@ -576,39 +591,39 @@ msgstr "Indeksiraj strani po črki"
msgid "can be huge"
msgstr "lahko je veliko"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Navigacija"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Išči med %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "O dokumentih"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Vse pravice pridržane"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Vse pravice pridržane %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Vse pravice pridržane %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Zadnjič posodobljeno %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -638,7 +653,7 @@ msgstr "Naslednja tema"
msgid "next chapter"
msgstr "naslednje poglavje"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
@@ -646,7 +661,7 @@ msgstr ""
"Za pravilno delovanje Iskanja morete vklopiti\n"
" JavaScript."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -658,16 +673,15 @@ msgstr ""
" bo iskalo po vseh besedah v iskalnem nizu. Strani, ki ne\n"
" vsebujejo vseh besed ne bodo prikazane na seznamu rezultatov."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "išči"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Rezultati Iskanja"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Vaše iskanje ni imelo nobenega zadetka."
@@ -707,12 +721,12 @@ msgstr "C API spremembe"
msgid "Other changes"
msgstr "Ostale spremembe"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Povezava na naslov"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Povezava na to definicijo"
@@ -720,37 +734,12 @@ msgstr "Povezava na to definicijo"
msgid "Hide Search Matches"
msgstr "Skrij resultate iskanja"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Iščem"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Pripravljam iskanje..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", v "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 ""
-"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:493
-#, 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/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -758,22 +747,49 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Izdaja"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr "Opombe"
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "nadaljevanje iz prejšnje strani"
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr "Nadaljevanje na naslednji strani"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[slika]"
+
+#~ msgid "Platforms: "
+#~ msgstr "Platforme:"
+
+#~ msgid "Searching"
+#~ msgstr "Iščem"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Pripravljam iskanje..."
+
+#~ msgid ", in "
+#~ msgstr ", v "
+
+#~ 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 ""
+#~ "Za vaše iskanje ni rezultatov. Prosimo"
+#~ " preglejte ali so vse besede pravilno"
+#~ " črkovane in ali ste izbrali dovolj"
+#~ " kategorij."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Iskanje končano, najdeno %s strani, ki ustrezajo iskalnemu nizu."
+
diff --git a/sphinx/locale/sphinx.pot b/sphinx/locale/sphinx.pot
index 955663aa7..1b9ea2f37 100644
--- a/sphinx/locale/sphinx.pot
+++ b/sphinx/locale/sphinx.pot
@@ -1,386 +1,404 @@
# Translations template for Sphinx.
-# Copyright (C) 2010 ORGANIZATION
+# Copyright (C) 2011 ORGANIZATION
# This file is distributed under the same license as the Sphinx project.
-# FIRST AUTHOR , 2010.
+# FIRST AUTHOR , 2011.
#
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: Sphinx 1.0pre/8b971dbc7d36\n"
+"Project-Id-Version: Sphinx 1.1pre/339c7a794c1a\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2010-05-24 23:53+0200\n"
+"POT-Creation-Date: 2011-01-22 14:40+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr ""
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
msgstr ""
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr ""
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr ""
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr ""
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr ""
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr ""
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr ""
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr ""
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr ""
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr ""
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr ""
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr ""
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr ""
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr ""
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
msgid "Code author: "
msgstr ""
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr ""
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr ""
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr ""
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr ""
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr ""
-#: sphinx/domains/c.py:133
-#, python-format
-msgid "%s (C function)"
-msgstr ""
-
-#: sphinx/domains/c.py:135
-#, python-format
-msgid "%s (C member)"
-msgstr ""
-
-#: sphinx/domains/c.py:137
-#, python-format
-msgid "%s (C macro)"
-msgstr ""
-
-#: sphinx/domains/c.py:139
-#, python-format
-msgid "%s (C type)"
-msgstr ""
-
#: sphinx/domains/c.py:141
#, python-format
+msgid "%s (C function)"
+msgstr ""
+
+#: sphinx/domains/c.py:143
+#, python-format
+msgid "%s (C member)"
+msgstr ""
+
+#: sphinx/domains/c.py:145
+#, python-format
+msgid "%s (C macro)"
+msgstr ""
+
+#: sphinx/domains/c.py:147
+#, python-format
+msgid "%s (C type)"
+msgstr ""
+
+#: sphinx/domains/c.py:149
+#, python-format
msgid "%s (C variable)"
msgstr ""
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr ""
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr ""
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr ""
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr ""
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
msgid "variable"
msgstr ""
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr ""
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr ""
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr ""
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr ""
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr ""
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr ""
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr ""
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr ""
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr ""
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
msgid "Arguments"
msgstr ""
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr ""
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
msgid "Variables"
msgstr ""
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr ""
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr ""
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr ""
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr ""
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr ""
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr ""
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr ""
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr ""
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr ""
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, python-format
msgid "%s() (%s.%s class method)"
msgstr ""
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, python-format
msgid "%s() (%s class method)"
msgstr ""
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr ""
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr ""
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr ""
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
msgid "Python Module Index"
msgstr ""
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr ""
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr ""
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr ""
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
+#: sphinx/domains/python.py:563
msgid "class method"
msgstr ""
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr ""
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr ""
-#: sphinx/domains/rst.py:53
-#, python-format
-msgid "%s (directive)"
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
msgstr ""
#: sphinx/domains/rst.py:55
#, python-format
+msgid "%s (directive)"
+msgstr ""
+
+#: sphinx/domains/rst.py:57
+#, python-format
msgid "%s (role)"
msgstr ""
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
+#: sphinx/domains/rst.py:107
msgid "role"
msgstr ""
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr ""
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr ""
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr ""
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr ""
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr ""
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr ""
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -398,103 +416,103 @@ msgstr ""
msgid "original entry"
msgstr ""
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
msgid "Module code"
msgstr ""
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr ""
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr ""
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr ""
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr ""
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr ""
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr ""
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr ""
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr ""
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr ""
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr ""
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr ""
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr ""
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr ""
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr ""
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr ""
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr ""
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr ""
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr ""
@@ -503,8 +521,8 @@ msgstr ""
msgid "Table Of Contents"
msgstr ""
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr ""
@@ -552,15 +570,15 @@ msgstr ""
msgid "all functions, classes, terms"
msgstr ""
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr ""
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr ""
@@ -572,39 +590,39 @@ msgstr ""
msgid "can be huge"
msgstr ""
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr ""
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr ""
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr ""
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr ""
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -632,13 +650,13 @@ msgstr ""
msgid "next chapter"
msgstr ""
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr ""
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -646,16 +664,15 @@ msgid ""
" containing fewer words won't appear in the result list."
msgstr ""
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr ""
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr ""
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr ""
@@ -695,12 +712,12 @@ msgstr ""
msgid "Other changes"
msgstr ""
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr ""
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr ""
@@ -708,35 +725,12 @@ msgstr ""
msgid "Hide Search Matches"
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr ""
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr ""
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ""
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr ""
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -744,23 +738,23 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr ""
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr ""
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr ""
diff --git a/sphinx/locale/sv/LC_MESSAGES/sphinx.js b/sphinx/locale/sv/LC_MESSAGES/sphinx.js
new file mode 100644
index 000000000..15821abac
--- /dev/null
+++ b/sphinx/locale/sv/LC_MESSAGES/sphinx.js
@@ -0,0 +1 @@
+Documentation.addTranslations({"locale": "sv", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "D\u00f6lj S\u00f6kresultat", "Permalink to this definition": "Permalink till denna definition", "Expand sidebar": "Expandera sidolist", "Permalink to this headline": "Permalink till denna rubrik", "Collapse sidebar": "D\u00f6lj sidolist"}});
\ No newline at end of file
diff --git a/sphinx/locale/sv/LC_MESSAGES/sphinx.mo b/sphinx/locale/sv/LC_MESSAGES/sphinx.mo
new file mode 100644
index 000000000..aed6bf5c7
Binary files /dev/null and b/sphinx/locale/sv/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/sv/LC_MESSAGES/sphinx.po b/sphinx/locale/sv/LC_MESSAGES/sphinx.po
new file mode 100644
index 000000000..42aaa5fe6
--- /dev/null
+++ b/sphinx/locale/sv/LC_MESSAGES/sphinx.po
@@ -0,0 +1,786 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2010-05-24 23:53+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
+"Last-Translator: Henrik Holmboe \n"
+"Language-Team: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.5\n"
+
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
+#: sphinx/writers/manpage.py:67
+#, python-format
+msgid "%B %d, %Y"
+msgstr "%B %d, %Y"
+
+#: sphinx/environment.py:1624
+#, python-format
+msgid "see %s"
+msgstr "se %s"
+
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr "se även %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
+msgid "Builtins"
+msgstr "Inbyggda"
+
+#: sphinx/builders/changes.py:75
+msgid "Module level"
+msgstr "Modulnivå"
+
+#: sphinx/builders/html.py:274
+#, python-format
+msgid "%b %d, %Y"
+msgstr "%b %d, %Y"
+
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
+msgid "General Index"
+msgstr "Huvudindex"
+
+#: sphinx/builders/html.py:293
+msgid "index"
+msgstr "index"
+
+#: sphinx/builders/html.py:353
+msgid "next"
+msgstr "nästa"
+
+#: sphinx/builders/html.py:362
+msgid "previous"
+msgstr "föregående"
+
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
+msgid " (in "
+msgstr "(i "
+
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Index"
+
+#: sphinx/directives/other.py:136
+msgid "Section author: "
+msgstr "Sektionsförfattare"
+
+#: sphinx/directives/other.py:138
+msgid "Module author: "
+msgstr "Modulförfattare"
+
+#: sphinx/directives/other.py:140
+msgid "Code author: "
+msgstr "Källkodsförfattare"
+
+#: sphinx/directives/other.py:142
+msgid "Author: "
+msgstr "Upphovsman:"
+
+#: sphinx/directives/other.py:215
+msgid "See also"
+msgstr "Se även"
+
+#: sphinx/domains/__init__.py:244
+#, python-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
+msgid "Parameters"
+msgstr "Parametrar"
+
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
+msgid "Returns"
+msgstr "Returnerar"
+
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
+msgid "Return type"
+msgstr "Returtyp"
+
+#: sphinx/domains/c.py:141
+#, python-format
+msgid "%s (C function)"
+msgstr "%s (C-funktion)"
+
+#: sphinx/domains/c.py:143
+#, python-format
+msgid "%s (C member)"
+msgstr "%s (C-medlem)"
+
+#: sphinx/domains/c.py:145
+#, python-format
+msgid "%s (C macro)"
+msgstr "%s (C-makro)"
+
+#: sphinx/domains/c.py:147
+#, python-format
+msgid "%s (C type)"
+msgstr "%s (C-typ)"
+
+#: sphinx/domains/c.py:149
+#, python-format
+msgid "%s (C variable)"
+msgstr "%s (C-variabel)"
+
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
+msgid "function"
+msgstr "funktion"
+
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
+msgid "member"
+msgstr "medlem"
+
+#: sphinx/domains/c.py:206
+msgid "macro"
+msgstr "makro"
+
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
+msgid "type"
+msgstr "typ"
+
+#: sphinx/domains/c.py:208
+msgid "variable"
+msgstr "variabel"
+
+#: sphinx/domains/cpp.py:897
+#, python-format
+msgid "%s (C++ class)"
+msgstr "%s (C++-klass)"
+
+#: sphinx/domains/cpp.py:912
+#, python-format
+msgid "%s (C++ type)"
+msgstr "%s (C++-typ)"
+
+#: sphinx/domains/cpp.py:931
+#, python-format
+msgid "%s (C++ member)"
+msgstr "%s (C++-medlem)"
+
+#: sphinx/domains/cpp.py:983
+#, python-format
+msgid "%s (C++ function)"
+msgstr "%s (C++-funktion)"
+
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
+msgid "class"
+msgstr "klass"
+
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
+#, python-format
+msgid "%s() (built-in function)"
+msgstr "%s() (inbyggd funktion)"
+
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
+#, python-format
+msgid "%s() (%s method)"
+msgstr "%s() (%s metod)"
+
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (klass)"
+
+#: sphinx/domains/javascript.py:111
+#, python-format
+msgid "%s (global variable or constant)"
+msgstr "%s (global variabel eller konstant)"
+
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
+#, python-format
+msgid "%s (%s attribute)"
+msgstr "%s (%s attribut)"
+
+#: sphinx/domains/javascript.py:122
+msgid "Arguments"
+msgstr "Argument"
+
+#: sphinx/domains/javascript.py:125
+msgid "Throws"
+msgstr "Kastar"
+
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
+msgid "data"
+msgstr "data"
+
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
+msgid "attribute"
+msgstr "attribut"
+
+#: sphinx/domains/python.py:100
+msgid "Variables"
+msgstr "Variabler"
+
+#: sphinx/domains/python.py:104
+msgid "Raises"
+msgstr "Väcker"
+
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
+#, python-format
+msgid "%s() (in module %s)"
+msgstr "%s() (i modul %s)"
+
+#: sphinx/domains/python.py:258
+#, python-format
+msgid "%s (built-in variable)"
+msgstr "%s (inbyggd variabel)"
+
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
+#, python-format
+msgid "%s (in module %s)"
+msgstr "%s (i modul %s)"
+
+#: sphinx/domains/python.py:275
+#, python-format
+msgid "%s (built-in class)"
+msgstr "%s (inbyggd klass)"
+
+#: sphinx/domains/python.py:276
+#, python-format
+msgid "%s (class in %s)"
+msgstr "%s (klass i %s)"
+
+#: sphinx/domains/python.py:316
+#, python-format
+msgid "%s() (%s.%s method)"
+msgstr "%s() (%s.%s metod)"
+
+#: sphinx/domains/python.py:328
+#, python-format
+msgid "%s() (%s.%s static method)"
+msgstr "%s() (%s.%s statisk metod)"
+
+#: sphinx/domains/python.py:331
+#, python-format
+msgid "%s() (%s static method)"
+msgstr "%s() (%s statisk metod)"
+
+#: sphinx/domains/python.py:341
+#, python-format
+msgid "%s() (%s.%s class method)"
+msgstr "%s() (%s.%s klassmetod)"
+
+#: sphinx/domains/python.py:344
+#, python-format
+msgid "%s() (%s class method)"
+msgstr "%s() (%s klassmetod)"
+
+#: sphinx/domains/python.py:354
+#, python-format
+msgid "%s (%s.%s attribute)"
+msgstr "%s (%s.%s attribut)"
+
+#: sphinx/domains/python.py:433
+#, python-format
+msgid "%s (module)"
+msgstr "%s (modul)"
+
+#: sphinx/domains/python.py:490
+msgid "Python Module Index"
+msgstr "Python Modulindex"
+
+#: sphinx/domains/python.py:491
+msgid "modules"
+msgstr "moduler"
+
+#: sphinx/domains/python.py:536
+msgid "Deprecated"
+msgstr "Ersatt"
+
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
+msgid "exception"
+msgstr "undantag"
+
+#: sphinx/domains/python.py:562
+msgid "method"
+msgstr "metod"
+
+#: sphinx/domains/python.py:563
+msgid "class method"
+msgstr "klassmetod"
+
+#: sphinx/domains/python.py:564
+msgid "static method"
+msgstr "statisk metod"
+
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
+msgid "module"
+msgstr "modul"
+
+#: sphinx/domains/python.py:694
+#, fuzzy
+msgid " (deprecated)"
+msgstr " (ersatt)"
+
+#: sphinx/domains/rst.py:55
+#, python-format
+msgid "%s (directive)"
+msgstr "%s (direktiv)"
+
+#: sphinx/domains/rst.py:57
+#, python-format
+msgid "%s (role)"
+msgstr "%s (roll)"
+
+#: sphinx/domains/rst.py:106
+msgid "directive"
+msgstr "direktiv"
+
+#: sphinx/domains/rst.py:107
+msgid "role"
+msgstr "roll"
+
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
+#, python-format
+msgid "environment variable; %s"
+msgstr "miljövariabel; %s"
+
+#: sphinx/domains/std.py:162
+#, python-format
+msgid "%scommand line option; %s"
+msgstr "%skommandorad växel; %s"
+
+#: sphinx/domains/std.py:393
+msgid "glossary term"
+msgstr "ordlista"
+
+#: sphinx/domains/std.py:394
+msgid "grammar token"
+msgstr "grammatisk token"
+
+#: sphinx/domains/std.py:395
+msgid "reference label"
+msgstr "referensetikett"
+
+#: sphinx/domains/std.py:396
+msgid "environment variable"
+msgstr "miljövariabel"
+
+#: sphinx/domains/std.py:397
+msgid "program option"
+msgstr "programväxel"
+
+#: sphinx/domains/std.py:428
+msgid "Module Index"
+msgstr "Modulindex"
+
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
+msgid "Search Page"
+msgstr "Söksida"
+
+#: sphinx/ext/autodoc.py:998
+#, python-format
+msgid " Bases: %s"
+msgstr " Baserad: %s"
+
+#: sphinx/ext/autodoc.py:1034
+#, python-format
+msgid "alias of :class:`%s`"
+msgstr "alias för :class:`%s`"
+
+#: sphinx/ext/todo.py:41
+msgid "Todo"
+msgstr "Att göra"
+
+#: sphinx/ext/todo.py:109
+#, python-format
+msgid "(The <> is located in %s, line %d.)"
+msgstr "(<> finns i %s, på rad %d.)"
+
+#: sphinx/ext/todo.py:117
+msgid "original entry"
+msgstr "ursprungsvärde"
+
+#: sphinx/ext/viewcode.py:70
+msgid "[source]"
+msgstr "[source]"
+
+#: sphinx/ext/viewcode.py:117
+msgid "[docs]"
+msgstr "[docs]"
+
+#: sphinx/ext/viewcode.py:131
+msgid "Module code"
+msgstr "Modulkällkod"
+
+#: sphinx/ext/viewcode.py:137
+#, python-format
+msgid "Source code for %s "
+msgstr "Källkod för %s "
+
+#: sphinx/ext/viewcode.py:164
+msgid "Overview: module code"
+msgstr "Översikt: modulkällkod"
+
+#: sphinx/ext/viewcode.py:165
+msgid "All modules for which code is available "
+msgstr "Alla moduler där källkod finns "
+
+#: sphinx/locale/__init__.py:155
+msgid "Attention"
+msgstr "Uppmärksamma"
+
+#: sphinx/locale/__init__.py:156
+msgid "Caution"
+msgstr "Varning"
+
+#: sphinx/locale/__init__.py:157
+msgid "Danger"
+msgstr "Risk"
+
+#: sphinx/locale/__init__.py:158
+msgid "Error"
+msgstr "Fel"
+
+#: sphinx/locale/__init__.py:159
+msgid "Hint"
+msgstr "Råd"
+
+#: sphinx/locale/__init__.py:160
+msgid "Important"
+msgstr "Viktigt"
+
+#: sphinx/locale/__init__.py:161
+msgid "Note"
+msgstr "Observera"
+
+#: sphinx/locale/__init__.py:162
+msgid "See Also"
+msgstr "Se även"
+
+#: sphinx/locale/__init__.py:163
+msgid "Tip"
+msgstr "Tips"
+
+#: sphinx/locale/__init__.py:164
+msgid "Warning"
+msgstr "Varning"
+
+#: sphinx/locale/__init__.py:168
+#, python-format
+msgid "New in version %s"
+msgstr "Nyheter i version %s"
+
+#: sphinx/locale/__init__.py:169
+#, python-format
+msgid "Changed in version %s"
+msgstr "Förändrat i version %s"
+
+#: sphinx/locale/__init__.py:170
+#, python-format
+msgid "Deprecated since version %s"
+msgstr "Ersatt sedan version %s"
+
+#: sphinx/locale/__init__.py:176
+msgid "keyword"
+msgstr "nyckelord"
+
+#: sphinx/locale/__init__.py:177
+msgid "operator"
+msgstr "operator"
+
+#: sphinx/locale/__init__.py:178
+msgid "object"
+msgstr "objekt"
+
+#: sphinx/locale/__init__.py:180
+msgid "statement"
+msgstr "uttryck"
+
+#: sphinx/locale/__init__.py:181
+msgid "built-in function"
+msgstr "inbyggda funktioner"
+
+#: sphinx/themes/agogo/layout.html:45 sphinx/themes/basic/globaltoc.html:10
+#: sphinx/themes/basic/localtoc.html:11
+msgid "Table Of Contents"
+msgstr "Innehållsförteckning"
+
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
+msgid "Search"
+msgstr "Sök"
+
+#: sphinx/themes/agogo/layout.html:52 sphinx/themes/basic/searchbox.html:15
+msgid "Go"
+msgstr "Gå"
+
+#: sphinx/themes/agogo/layout.html:57 sphinx/themes/basic/searchbox.html:20
+msgid "Enter search terms or a module, class or function name."
+msgstr "Ange sökord eller modul-, klass- eller funktionsnamn."
+
+#: sphinx/themes/agogo/layout.html:78 sphinx/themes/basic/sourcelink.html:14
+msgid "Show Source"
+msgstr "Visa källfil"
+
+#: sphinx/themes/basic/defindex.html:11
+msgid "Overview"
+msgstr "Översikt"
+
+#: sphinx/themes/basic/defindex.html:20
+msgid "Indices and tables:"
+msgstr "Index och tabeller"
+
+#: sphinx/themes/basic/defindex.html:23
+msgid "Complete Table of Contents"
+msgstr "Komplett Innehållsförteckning"
+
+#: sphinx/themes/basic/defindex.html:24
+msgid "lists all sections and subsections"
+msgstr "lista över alla paragrafer och underparagrafer"
+
+#: sphinx/themes/basic/defindex.html:26
+msgid "search this documentation"
+msgstr "sök i det här dokumentet"
+
+#: sphinx/themes/basic/defindex.html:28
+msgid "Global Module Index"
+msgstr "Global Modulindex"
+
+#: sphinx/themes/basic/defindex.html:29
+msgid "quick access to all modules"
+msgstr "genväg till alla moduler"
+
+#: sphinx/themes/basic/defindex.html:31
+msgid "all functions, classes, terms"
+msgstr "alla funktioner, klasser, villkor"
+
+#: sphinx/themes/basic/genindex-single.html:35
+#, python-format
+msgid "Index – %(key)s"
+msgstr "Index – %(key)s"
+
+#: sphinx/themes/basic/genindex-single.html:63
+#: sphinx/themes/basic/genindex-split.html:24
+#: sphinx/themes/basic/genindex-split.html:38
+#: sphinx/themes/basic/genindex.html:74
+msgid "Full index on one page"
+msgstr "Hela innehållsförteckningen på en sida"
+
+#: sphinx/themes/basic/genindex-split.html:16
+msgid "Index pages by letter"
+msgstr "Innehållsförteckning per inledande bokstav"
+
+#: sphinx/themes/basic/genindex-split.html:25
+msgid "can be huge"
+msgstr "kan bli stort"
+
+#: sphinx/themes/basic/layout.html:29
+msgid "Navigation"
+msgstr "Navigation"
+
+#: sphinx/themes/basic/layout.html:122
+#, python-format
+msgid "Search within %(docstitle)s"
+msgstr "Sök bland %(docstitle)s"
+
+#: sphinx/themes/basic/layout.html:131
+msgid "About these documents"
+msgstr "Om dessa dokument"
+
+#: sphinx/themes/basic/layout.html:140
+msgid "Copyright"
+msgstr "Copyright"
+
+#: sphinx/themes/basic/layout.html:189
+#, python-format
+msgid "© Copyright %(copyright)s."
+msgstr "© Copyright %(copyright)s."
+
+#: sphinx/themes/basic/layout.html:191
+#, python-format
+msgid "© Copyright %(copyright)s."
+msgstr "© Copyright %(copyright)s."
+
+#: sphinx/themes/basic/layout.html:195
+#, python-format
+msgid "Last updated on %(last_updated)s."
+msgstr "Senast uppdaterad %(last_updated)s."
+
+#: sphinx/themes/basic/layout.html:198
+#, python-format
+msgid ""
+"Created using Sphinx "
+"%(sphinx_version)s."
+msgstr ""
+"Skapad med Sphinx "
+"%(sphinx_version)s."
+
+#: sphinx/themes/basic/opensearch.xml:4
+#, python-format
+msgid "Search %(docstitle)s"
+msgstr "Sök %(docstitle)s"
+
+#: sphinx/themes/basic/relations.html:11
+msgid "Previous topic"
+msgstr "Föregående titel"
+
+#: sphinx/themes/basic/relations.html:13
+msgid "previous chapter"
+msgstr "Föregående kapitel"
+
+#: sphinx/themes/basic/relations.html:16
+msgid "Next topic"
+msgstr "Nästa titel"
+
+#: sphinx/themes/basic/relations.html:18
+msgid "next chapter"
+msgstr "Nästa kapitel"
+
+#: sphinx/themes/basic/search.html:24
+msgid ""
+"Please activate JavaScript to enable the search\n"
+" functionality."
+msgstr "Var god aktivera JavaScript för sökfunktionalitet."
+
+#: sphinx/themes/basic/search.html:29
+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 ""
+"Här kan du söka bland dessa dokument. Ange sökord nedan och klicka "
+"\"sök\".\n"
+" Sökningen måste träffa på samtliga angivna sökord."
+
+#: sphinx/themes/basic/search.html:36
+msgid "search"
+msgstr "sök"
+
+#: sphinx/themes/basic/search.html:40
+msgid "Search Results"
+msgstr "Sökresultat"
+
+#: sphinx/themes/basic/search.html:42
+msgid "Your search did not match any results."
+msgstr "Din sökning gav inga resultat."
+
+#: sphinx/themes/basic/searchbox.html:12
+msgid "Quick search"
+msgstr "Snabbsök"
+
+#: sphinx/themes/basic/sourcelink.html:11
+msgid "This Page"
+msgstr "Denna Sida"
+
+#: sphinx/themes/basic/changes/frameset.html:5
+#: sphinx/themes/basic/changes/versionchanges.html:12
+#, python-format
+msgid "Changes in Version %(version)s — %(docstitle)s"
+msgstr "Förändringar i Version %(version)s — %(docstitle)s"
+
+#: sphinx/themes/basic/changes/rstsource.html:5
+#, python-format
+msgid "%(filename)s — %(docstitle)s"
+msgstr "%(filename)s — %(docstitle)s"
+
+#: sphinx/themes/basic/changes/versionchanges.html:17
+#, python-format
+msgid "Automatically generated list of changes in version %(version)s"
+msgstr "Automatiskt genererad lista över förändringar i version %(version)s"
+
+#: sphinx/themes/basic/changes/versionchanges.html:18
+msgid "Library changes"
+msgstr "Förändringar i bibliotek"
+
+#: sphinx/themes/basic/changes/versionchanges.html:23
+msgid "C API changes"
+msgstr "Förändringar i C-API"
+
+#: sphinx/themes/basic/changes/versionchanges.html:25
+msgid "Other changes"
+msgstr "Övriga förändringar"
+
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
+msgid "Permalink to this headline"
+msgstr "Permalink till denna rubrik"
+
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
+msgid "Permalink to this definition"
+msgstr "Permalink till denna definition"
+
+#: sphinx/themes/basic/static/doctools.js:189
+msgid "Hide Search Matches"
+msgstr "Dölj Sökresultat"
+
+#: sphinx/themes/default/static/sidebar.js:69
+msgid "Expand sidebar"
+msgstr "Expandera sidolist"
+
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
+msgid "Collapse sidebar"
+msgstr "Dölj sidolist"
+
+#: sphinx/themes/haiku/layout.html:26
+msgid "Contents"
+msgstr "Innehåll"
+
+#: sphinx/writers/latex.py:176
+msgid "Release"
+msgstr "Utgåva"
+
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
+msgid "Footnotes"
+msgstr "Fotnoter"
+
+#: sphinx/writers/latex.py:672
+msgid "continued from previous page"
+msgstr "fortsättning från föregående sida"
+
+#: sphinx/writers/latex.py:677
+msgid "Continued on next page"
+msgstr "Fortsätter på nästa sida"
+
+#: sphinx/writers/text.py:430
+msgid "[image]"
+msgstr "[image]"
+
+#~ msgid "Platforms: "
+#~ msgstr "Plattformar:"
+
+#~ msgid "Searching"
+#~ msgstr "Söker"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Förbereder sökning..."
+
+#~ msgid ", in "
+#~ msgstr ", i "
+
+#~ msgid ""
+#~ "Your search did not match any "
+#~ "documents. Please make sure that all "
+#~ "words are spelled correctly and that "
+#~ "you've selected enough categories."
+#~ msgstr ""
+#~ "Din sökning gav inga resultat. Kolla "
+#~ "stavning och att du valt tillräckligt"
+#~ " med kategorier."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Sökning färdig, hittade %s träffar."
+
diff --git a/sphinx/locale/tr/LC_MESSAGES/sphinx.js b/sphinx/locale/tr/LC_MESSAGES/sphinx.js
index 3cb911770..4ba20a32b 100644
--- a/sphinx/locale/tr/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/tr/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "tr", "plural_expr": "0", "messages": {"Search Results": "Arama Sonu\u00e7lar\u0131", "Preparing search...": "Aramaya haz\u0131rlan\u0131yor...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Arama sonucunda hi\u00e7bir belge bulunamad\u0131. B\u00fct\u00fcn kelimeleri do\u011fru yazd\u0131\u011f\u0131n\u0131zdan ve gereken kategorileri se\u00e7ti\u011finizden emin olun.", "Search finished, found %s page(s) matching the search query.": "Arama sonu\u00e7land\u0131, aramayla e\u015fle\u015fen %s sayfa bulundu.", ", in ": ", \u015funun i\u00e7inde: ", "Expand sidebar": "Yan \u00e7ubu\u011fu geni\u015flet", "Permalink to this headline": "Bu ba\u015fl\u0131\u011f\u0131n kal\u0131c\u0131 ba\u011flant\u0131s\u0131", "Searching": "Ar\u0131yor", "Collapse sidebar": "Yan \u00e7ubu\u011fu daralt", "Permalink to this definition": "Bu tan\u0131m\u0131n kal\u0131c\u0131 ba\u011flant\u0131s\u0131", "Hide Search Matches": "Arama Sonu\u00e7lar\u0131n\u0131 Gizle"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "tr", "plural_expr": "0", "messages": {"Hide Search Matches": "Arama Sonu\u00e7lar\u0131n\u0131 Gizle", "Permalink to this definition": "Bu tan\u0131m\u0131n kal\u0131c\u0131 ba\u011flant\u0131s\u0131", "Expand sidebar": "Yan \u00e7ubu\u011fu geni\u015flet", "Permalink to this headline": "Bu ba\u015fl\u0131\u011f\u0131n kal\u0131c\u0131 ba\u011flant\u0131s\u0131", "Collapse sidebar": "Yan \u00e7ubu\u011fu daralt"}});
\ No newline at end of file
diff --git a/sphinx/locale/tr/LC_MESSAGES/sphinx.mo b/sphinx/locale/tr/LC_MESSAGES/sphinx.mo
index 5054199c4..742eff993 100644
Binary files a/sphinx/locale/tr/LC_MESSAGES/sphinx.mo and b/sphinx/locale/tr/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/tr/LC_MESSAGES/sphinx.po b/sphinx/locale/tr/LC_MESSAGES/sphinx.po
index e1e5c1730..9b99a4b6d 100644
--- a/sphinx/locale/tr/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/tr/LC_MESSAGES/sphinx.po
@@ -8,405 +8,397 @@ msgstr ""
"Project-Id-Version: Sphinx 0.6.2+/6b02a19ccf31\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2009-08-06 22:48+0200\n"
-"PO-Revision-Date: 2010-05-28 10:18+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Firat Ozgul \n"
"Language-Team: Turkish \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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106
-#: sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%d %B %Y"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python'u İyileştirme Önerileri!PEP %s"
+msgid "see %s"
+msgstr ""
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr ""
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python'u İyileştirme Önerileri; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Gömülüler"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Modül düzeyi"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b %Y"
-#: sphinx/builders/html.py:285
-#: sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Genel Dizin"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "dizin"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "sonraki"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "önceki"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (şunun içinde: "
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Dizin"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Bölümü yazan: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Modülü yazan: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
msgid "Code author: "
msgstr "Kodu yazan: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Yazan: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Ayrıca bkz."
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr "%s %s"
-#: sphinx/domains/c.py:51
-#: sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Parametreler"
-#: sphinx/domains/c.py:54
-#: sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Şunu döndürür:"
-#: sphinx/domains/c.py:56
-#: sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Dönüş tipi"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (C fonksiyonu)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (C öğesi)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C makrosu)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C tipi)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C değişkeni)"
-#: sphinx/domains/c.py:171
-#: sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166
-#: sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "fonksiyonu"
-#: sphinx/domains/c.py:172
-#: sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "öğesi"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr "makrosu"
-#: sphinx/domains/c.py:174
-#: sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "tipi"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
msgid "variable"
msgstr "değişkeni"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (C++ sınıfı)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (C++ tipi)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (C++ öğesi)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (C++ fonksiyonu)"
-#: sphinx/domains/cpp.py:1030
-#: sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "sınıfı"
-#: sphinx/domains/javascript.py:117
-#: sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (gömülü fonksiyon)"
-#: sphinx/domains/javascript.py:118
-#: sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s metodu)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (sınıfı)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr "%s (global değişken veya sabit)"
-#: sphinx/domains/javascript.py:122
-#: sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s niteliği)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
msgid "Arguments"
msgstr "Argümanlar"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr "Şunu verir: "
-#: sphinx/domains/javascript.py:167
-#: sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr "verisi"
-#: sphinx/domains/javascript.py:168
-#: sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "niteliği"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
msgid "Variables"
msgstr "Değişkenler"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Şunu üretir:"
-#: sphinx/domains/python.py:222
-#: sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291
-#: sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (%s modülü içinde)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (gömülü değişken)"
-#: sphinx/domains/python.py:226
-#: sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (%s modülü içinde)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (gömülü sınıf)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (%s içinde bir sınıf)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s metodu)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (%s.%s statik metodu)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (%s statik metodu)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s sınıf metodu)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s sınıf metodu)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (%s.%s niteliği)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Platformlar:"
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (modül)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
msgid "Python Module Index"
msgstr "Python Modül Dizini"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "modüller"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Önerilmiyor"
-#: sphinx/domains/python.py:500
-#: sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "istisnası"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr "metodu"
-#: sphinx/domains/python.py:502
-#, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
msgstr "sınıf metodu"
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "statik metodu"
-#: sphinx/domains/python.py:505
-#: sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "modülü"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (önerilmiyor)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr "%s (yönerge)"
-#: sphinx/domains/rst.py:55
+#: sphinx/domains/rst.py:57
#, python-format
msgid "%s (role)"
msgstr "%s (rol)"
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr "yönergesi"
-#: sphinx/domains/rst.py:104
+#: sphinx/domains/rst.py:107
msgid "role"
msgstr "rolü"
-#: sphinx/domains/std.py:68
-#: sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "çevre değişkeni; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%skomut satırı seçeneği; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr "sözlük terimi"
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr "dilbilgisi girdisi"
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr "referans etiketi"
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "çevre değişkeni"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr "program seçeneği"
-#: sphinx/domains/std.py:360
-#: sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11
-#: sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50
-#: sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Dizin"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Modül Dizini"
-#: sphinx/domains/std.py:362
-#: sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Arama Sayfası"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " Taban: %s"
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "şunun takma adı: :class:`%s`"
@@ -424,131 +416,125 @@ msgstr "(<<özgün girdi>> %s içinde ve %d satırında bulunuyor.)"
msgid "original entry"
msgstr "özgün girdi"
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr "[kaynak]"
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr "[belgeler]"
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
msgid "Module code"
msgstr "Modül kodu"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr "%s öğesinin kaynak kodu "
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr "Genel bakış: modül kodu"
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr "Kodları mevcut bütün modüller "
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Dikkat"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Uyarı"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Tehlike"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Hata"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "İpucu"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Önemli"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Not"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Ayrıca bkz."
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Tüyo"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Uyarı"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "%s sürümüyle geldi"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "%s sürümünde değişti"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "%s sürümünden beri önerilmiyor"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "anahtar kelime"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "işleç"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "nesne"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "deyim"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "gömülü fonksiyon"
-#: sphinx/themes/agogo/layout.html:45
-#: sphinx/themes/basic/globaltoc.html:10
+#: sphinx/themes/agogo/layout.html:45 sphinx/themes/basic/globaltoc.html:10
#: sphinx/themes/basic/localtoc.html:11
msgid "Table Of Contents"
msgstr "İçindekiler Tablosu"
-#: sphinx/themes/agogo/layout.html:49
-#: sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11
-#: sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Ara"
-#: sphinx/themes/agogo/layout.html:52
-#: sphinx/themes/basic/searchbox.html:15
+#: sphinx/themes/agogo/layout.html:52 sphinx/themes/basic/searchbox.html:15
msgid "Go"
msgstr "Git"
-#: sphinx/themes/agogo/layout.html:57
-#: sphinx/themes/basic/searchbox.html:20
+#: sphinx/themes/agogo/layout.html:57 sphinx/themes/basic/searchbox.html:20
msgid "Enter search terms or a module, class or function name."
msgstr "Aranacak terimleri veya modül, sınıf ya da fonksiyon adını yazınız"
-#: sphinx/themes/agogo/layout.html:78
-#: sphinx/themes/basic/sourcelink.html:14
+#: sphinx/themes/agogo/layout.html:78 sphinx/themes/basic/sourcelink.html:14
msgid "Show Source"
msgstr "Kaynağı Göster"
@@ -584,15 +570,15 @@ msgstr "bütün modüllere hızlı erişim"
msgid "all functions, classes, terms"
msgstr "bütün fonksiyonlar, sınıflar, terimler"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Dizin – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Bütün dizin tek sayfada"
@@ -604,42 +590,46 @@ msgstr "Harfe göre dizin sayfaları"
msgid "can be huge"
msgstr "çok büyük olabilir"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Gezinti"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "%(docstitle)s içinde ara"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Bu belgeler hakkında"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Son güncelleme: %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
-msgid "Created using Sphinx %(sphinx_version)s."
-msgstr "Sphinx %(sphinx_version)s ile oluşturulmuştur."
+msgid ""
+"Created using Sphinx "
+"%(sphinx_version)s."
+msgstr ""
+"Sphinx %(sphinx_version)s ile "
+"oluşturulmuştur."
#: sphinx/themes/basic/opensearch.xml:4
#, python-format
@@ -662,7 +652,7 @@ msgstr "Sonraki konu"
msgid "next chapter"
msgstr "sonraki bölüm"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
@@ -670,7 +660,7 @@ msgstr ""
"Arama işlevini kullanabilmek için lütfen JavaScript'i\n"
" etkinleştirin."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -682,16 +672,15 @@ msgstr ""
"otomatik olarak bütün kelimeleri arayacaktır. Eksik kelime içeren \n"
"sayfalar sonuç listesinde görünmez."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "ara"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Arama Sonuçları"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Arama sonucunda herhangi bir belge bulunamadı."
@@ -731,14 +720,12 @@ msgstr "C API'sindeki değişiklikler"
msgid "Other changes"
msgstr "Diğer değişiklikler"
-#: sphinx/themes/basic/static/doctools.js:154
-#: sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Bu başlığın kalıcı bağlantısı"
-#: sphinx/themes/basic/static/doctools.js:160
-#: sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Bu tanımın kalıcı bağlantısı"
@@ -746,33 +733,12 @@ msgstr "Bu tanımın kalıcı bağlantısı"
msgid "Hide Search Matches"
msgstr "Arama Sonuçlarını Gizle"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Arıyor"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Aramaya hazırlanıyor..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", şunun içinde: "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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 "Arama sonucunda hiçbir belge bulunamadı. Bütün kelimeleri doğru yazdığınızdan ve gereken kategorileri seçtiğinizden emin olun."
-
-#: sphinx/themes/basic/static/searchtools.js:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Arama sonuçlandı, aramayla eşleşen %s sayfa bulundu."
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr "Yan çubuğu genişlet"
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr "Yan çubuğu daralt"
@@ -780,24 +746,48 @@ msgstr "Yan çubuğu daralt"
msgid "Contents"
msgstr "İçindekiler"
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Sürüm"
-#: sphinx/writers/latex.py:572
-#: sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr "Dipnotları"
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr "önceki sayfadan devam"
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr "Devamı sonraki sayfada"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[resim]"
+#~ msgid "Platforms: "
+#~ msgstr "Platformlar:"
+
+#~ msgid "Searching"
+#~ msgstr "Arıyor"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Aramaya hazırlanıyor..."
+
+#~ msgid ", in "
+#~ msgstr ", şunun içinde: "
+
+#~ 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 ""
+#~ "Arama sonucunda hiçbir belge bulunamadı. "
+#~ "Bütün kelimeleri doğru yazdığınızdan ve "
+#~ "gereken kategorileri seçtiğinizden emin olun."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Arama sonuçlandı, aramayla eşleşen %s sayfa bulundu."
+
diff --git a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js
index 7af42ca8d..1c7babb77 100644
--- a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "uk_UA", "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", "messages": {"Search Results": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438 \u043f\u043e\u0448\u0443\u043a\u0443", "Preparing search...": "\u041f\u0456\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u043e \u043f\u043e\u0448\u0443\u043a\u0443...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u0412\u0430\u0448 \u043f\u043e\u0448\u0443\u043a \u043d\u0435 \u0432\u0438\u044f\u0432\u0438\u0432 \u0436\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043f\u0456\u0432\u043f\u0430\u0434\u0456\u043d\u043d\u044f. \u0411\u0443\u0434\u044c-\u043b\u0430\u0441\u043a\u0430 \u043f\u0435\u0440\u0435\u043a\u043e\u043d\u0430\u0439\u0442\u0435\u0441\u044f \u0449\u043e \u0432\u0441\u0456 \u0441\u043b\u043e\u0432\u0430 \u043d\u0430\u0431\u0440\u0430\u043d\u0456 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0456 \u0432\u0438 \u043e\u0431\u0440\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043d\u044c\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0456\u0439.", "Search finished, found %s page(s) matching the search query.": "\u041f\u043e\u0448\u0443\u043a \u0437\u0430\u043a\u0456\u043d\u0447\u0435\u043d\u043e, \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e %s \u0441\u0442\u043e\u0440\u0456\u043d\u043e\u043a \u044f\u043a\u0456 \u0441\u043f\u0456\u0432\u043f\u0430\u043b\u0438 \u0437 \u043f\u043e\u0448\u0443\u043a\u043e\u0432\u0438\u043c \u0437\u0430\u043f\u0438\u0442\u043e\u043c.", ", in ": ", \u0432 ", "Expand sidebar": "", "Permalink to this headline": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", "Searching": "\u0428\u0443\u043a\u0430\u044e", "Collapse sidebar": "", "Permalink to this definition": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f", "Hide Search Matches": "\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u0442\u0438 \u0441\u043f\u0456\u0432\u043f\u0430\u0434\u0456\u043d\u043d\u044f \u043f\u043e\u0448\u0443\u043a\u0443"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "uk_UA", "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", "messages": {"Hide Search Matches": "\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u0442\u0438 \u0441\u043f\u0456\u0432\u043f\u0430\u0434\u0456\u043d\u043d\u044f \u043f\u043e\u0448\u0443\u043a\u0443", "Permalink to this definition": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f", "Expand sidebar": "", "Permalink to this headline": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo
index cfa0b8e0e..92c00ca15 100644
Binary files a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo and b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po b/sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po
index a85eaebe4..7667314f6 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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Petro Sasnyk \n"
"Language-Team: uk_UA \n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
@@ -16,380 +16,395 @@ msgstr ""
"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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr ""
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr ""
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, fuzzy, python-format
+msgid "see also %s"
+msgstr "дивись також %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python Enhancement Proposals; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "Вбудовані елементи"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "Рівень модуля"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%b %d, %Y"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "Загальний індекс"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "індекс"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "наступний"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "попередній"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr " (в "
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "Індекс"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Автор секції: "
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "Автор модуля: "
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "Автор модуля: "
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "Автор: "
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "Дивись також"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "Параметри"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "Повертає"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "Тип повернення"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (С функція)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (C член)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C макрос)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C тип)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C змінна)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "функція"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "член"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr "макрос"
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "тип"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
#, fuzzy
msgid "variable"
msgstr "Змінна"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, python-format
msgid "%s (C++ class)"
msgstr "%s (C++ клас)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (C++ тип)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (C++ член)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (C++ функція)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr "клас"
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (вбудована функція)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s метод)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, python-format
+msgid "%s() (class)"
+msgstr "%s() (клас)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s атрибут)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "Параметри"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
-#, python-format
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "атрибут"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "Змінна"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Викликає"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (в модулі %s)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (вбудована змінна)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s (в модулі %s)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (вбудований клас)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr "%s (клас в %s)"
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s метод)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (%s.%s статичний метод)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (%s статичний метод)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s метод)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s метод)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (%s.%s атрибут)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "Платформи: "
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (модуль)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "Індекс модулів"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "модулі"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "Застарілий"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "виняткова ситуація"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
-msgstr "%s() (%s метод)"
+msgstr ""
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "статичний метод"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "модуль"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+msgid " (deprecated)"
+msgstr " (застарілий)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
+#: sphinx/domains/rst.py:57
+#, python-format
msgid "%s (role)"
-msgstr "%s (модуль)"
+msgstr ""
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
-#, fuzzy
+#: sphinx/domains/rst.py:107
msgid "role"
-msgstr "модуль"
+msgstr ""
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "змінна оточення; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%sопція командного рядка; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "змінна оточення"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "Індекс"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "Індекс модулів"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Сторінка пошуку"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr " Базовий: %s"
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr "синонім :class:`%s`"
@@ -401,110 +416,110 @@ msgstr "Доробити"
#: sphinx/ext/todo.py:109
#, fuzzy, python-format
msgid "(The <> is located in %s, line %d.)"
-msgstr "(Початкове входження знаходиться в %s, рядок %d і може бути знайдений "
+msgstr "(Початкове входження знаходиться в %s, рядок %d.)"
#: sphinx/ext/todo.py:117
msgid "original entry"
msgstr ""
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "модуль"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "Увага"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "Застереження"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "Небезпека"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "Помилка"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "Підказка"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "Важливо"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "Примітка"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "Дивись також"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "Порада"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "Попередження"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "Нове в версії %s"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "Змінено в версії %s"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Застаріло починаючи з версії %s"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "ключове слово"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "оператор"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "об'єкт"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "вираз"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "вбудована функція"
@@ -513,8 +528,8 @@ msgstr "вбудована функція"
msgid "Table Of Contents"
msgstr "Зміст"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "Пошук"
@@ -562,15 +577,15 @@ msgstr "швидкий доступ до всіх модулів"
msgid "all functions, classes, terms"
msgstr "всі функції, класи, терміни"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "Індекс – %(key)"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "Повний індекс на одній сторінці"
@@ -582,39 +597,39 @@ msgstr "Індексні сторінки по символам"
msgid "can be huge"
msgstr "може бути величезним"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "Навігація"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "Шукати в %(docstitle)s"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Про ці документи"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Авторські права"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© Copyright %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Востаннє оновлено %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -644,7 +659,7 @@ msgstr "Наступна тема"
msgid "next chapter"
msgstr "наступний розділ"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
@@ -653,7 +668,7 @@ msgstr ""
"\"\n"
"\" пошук."
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -665,16 +680,15 @@ msgstr ""
" пошуку автоматично шукатиме за всіма словами. Сторінки\n"
" що містять менше слів не з'являться в результуючому списку."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "пошук"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "Результати пошуку"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Ваш пошук не виявив жодних співпадінь."
@@ -714,12 +728,12 @@ msgstr "зміни C API"
msgid "Other changes"
msgstr "Інші зміни"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "Постійне посилання на цей заголовок"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Постійне посилання на це визначення"
@@ -727,37 +741,12 @@ msgstr "Постійне посилання на це визначення"
msgid "Hide Search Matches"
msgstr "Приховати співпадіння пошуку"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "Шукаю"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "Підготовка до пошуку..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", в "
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "Пошук закінчено, знайдено %s сторінок які співпали з пошуковим запитом."
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -765,23 +754,50 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "Реліз"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
#, fuzzy
msgid "Continued on next page"
msgstr "Повний індекс на одній сторінці"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr ""
+
+#~ msgid "Platforms: "
+#~ msgstr "Платформи: "
+
+#~ msgid "Searching"
+#~ msgstr "Шукаю"
+
+#~ msgid "Preparing search..."
+#~ msgstr "Підготовка до пошуку..."
+
+#~ msgid ", in "
+#~ msgstr ", в "
+
+#~ 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 ""
+#~ "Ваш пошук не виявив жодного співпадіння."
+#~ " Будь-ласка переконайтеся що всі слова "
+#~ "набрані правильно і ви обрали достатньо"
+#~ " категорій."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "Пошук закінчено, знайдено %s сторінок які співпали з пошуковим запитом."
+
diff --git a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js
index bf0de29db..a59a8b244 100644
--- a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "zh_CN", "plural_expr": "0", "messages": {"Search Results": "\u641c\u7d22\u7ed3\u679c", "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", "Expand sidebar": "", "Permalink to this headline": "\u6c38\u4e45\u94fe\u63a5\u81f3\u6807\u9898", "Searching": "\u641c\u7d22\u4e2d", "Collapse sidebar": "", "Permalink to this definition": "\u6c38\u4e45\u94fe\u63a5\u81f3\u76ee\u6807", "Hide Search Matches": "\u9690\u85cf\u641c\u7d22\u7ed3\u679c"}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "zh_CN", "plural_expr": "0", "messages": {"Hide Search Matches": "\u9690\u85cf\u641c\u7d22\u7ed3\u679c", "Permalink to this definition": "\u6c38\u4e45\u94fe\u63a5\u81f3\u76ee\u6807", "Expand sidebar": "", "Permalink to this headline": "\u6c38\u4e45\u94fe\u63a5\u81f3\u6807\u9898", "Collapse sidebar": ""}});
\ 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
index b62c4c5b9..efcfb651f 100644
Binary files a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mo and b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po
index c17620439..323aa0693 100644
--- a/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/zh_CN/LC_MESSAGES/sphinx.po
@@ -9,386 +9,403 @@ 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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Tower Joo\n"
"Language-Team: cn \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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%Y 年 %m 月 %d 日"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
-msgstr "Python 建议文件!PEP %s"
+msgid "see %s"
+msgstr ""
-#: sphinx/builders/changes.py:72
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr "也可以参考 %s"
+
+#: sphinx/roles.py:175
+#, python-format
+msgid "Python Enhancement Proposals; PEP %s"
+msgstr "Python 建议文件; PEP %s"
+
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr "内置"
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr "模块级别"
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%Y 年 %m 月 %d 日"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "总目录"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "索引"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "下一页"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "上一页"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr ""
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "索引"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Section 作者:"
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "模块作者:"
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "模块作者:"
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "作者:"
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr "也可以参考"
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "参数"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "返回"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "返回类型"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (C 函数)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (C 成员)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C 宏)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C 类型)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C 变量)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "函数"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "成员"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr ""
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr ""
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
#, fuzzy
msgid "variable"
msgstr "变量"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, fuzzy, python-format
msgid "%s (C++ class)"
-msgstr "%s (內置类)"
+msgstr "%s (C++ 內置类)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (C++ 类型)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (C++ 成员)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (C++ 函数)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr ""
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (內置函数)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s 方法)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, fuzzy, python-format
+msgid "%s() (class)"
+msgstr "%s() (內置类)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s 属性)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "参数"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "属性"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "变量"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "引发"
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (在 %s 模块中)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (內置变量)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s() (在 %s 模块中)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (內置类)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr ""
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s 方法)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (%s.%s 静态方法)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (%s 静态方法)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s 方法)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s 方法)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (%s.%s 属性)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "平台"
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (模块)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "模块索引"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "模块"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "已移除"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "例外"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
msgid "class method"
-msgstr "%s() (%s 方法)"
+msgstr ""
-#: sphinx/domains/python.py:503
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "静态方法"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "模块"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+#, fuzzy
+msgid " (deprecated)"
+msgstr " (已移除)"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
-#, fuzzy, python-format
+#: sphinx/domains/rst.py:57
+#, python-format
msgid "%s (role)"
-msgstr "%s (模块)"
+msgstr ""
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
-#, fuzzy
+#: sphinx/domains/rst.py:107
msgid "role"
-msgstr "模块"
+msgstr ""
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "环境变量; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%s命令行选项; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "环境变量"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "索引"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "模块索引"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "搜索页面"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -398,112 +415,112 @@ msgid "Todo"
msgstr "待处理"
#: sphinx/ext/todo.py:109
-#, fuzzy, python-format
+#, python-format
msgid "(The <> is located in %s, line %d.)"
-msgstr "(最初的入口位于%s 的第%d行"
+msgstr ""
#: sphinx/ext/todo.py:117
msgid "original entry"
msgstr ""
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "模块"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "注意"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "警告"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "危险"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "错误"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "提示"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "重要"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "注解"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "也可以参考"
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "小技巧"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "警告"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "%s 新版功能"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "在 %s 版更改"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "%s 版后已移除"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "关键字"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "操作数"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "对象"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr "语句"
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "內置函数"
@@ -512,8 +529,8 @@ msgstr "內置函数"
msgid "Table Of Contents"
msgstr "內容目录"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "搜索"
@@ -561,15 +578,15 @@ msgstr "快速查看所有的模块"
msgid "all functions, classes, terms"
msgstr "所的函数,类,术语"
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr "索引 – %(key)s"
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr "一页的全部索引"
@@ -581,39 +598,39 @@ msgstr "按照字母的索引页"
msgid "can be huge"
msgstr "可能会很多"
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "导航"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "在 %(docstitle)s 中搜索"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "关于这些文档"
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "版权所有"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© 版权所有 % (copyright)s."
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr "© 版权所有 %(copyright)s."
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "最后更新日期是 %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -641,13 +658,13 @@ msgstr "下一个主题"
msgid "next chapter"
msgstr "下一章"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr ""
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -655,16 +672,15 @@ msgid ""
" containing fewer words won't appear in the result list."
msgstr "在这儿,你可以对这些文档进行搜索。向搜索框中输入你所要搜索的关键字并点击\"搜索\"。注意:搜索引擎会自动搜索所有的关键字。将不会搜索到部分关键字的页面."
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "搜索"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "搜索结果"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "你的搜索没有找到任何的结果."
@@ -704,12 +720,12 @@ msgstr "C API 更改"
msgid "Other changes"
msgstr "其他更改"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr "永久链接至标题"
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "永久链接至目标"
@@ -717,35 +733,12 @@ msgstr "永久链接至目标"
msgid "Hide Search Matches"
msgstr "隐藏搜索结果"
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "搜索中"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "准备搜索..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ", 位于"
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr "搜索完成, 找到了 %s 页匹配所搜索的关键字"
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -753,23 +746,46 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "发布"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
#, fuzzy
msgid "Continued on next page"
msgstr "一页的全部索引"
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[图片]"
+
+#~ msgid "Platforms: "
+#~ msgstr "平台"
+
+#~ msgid "Searching"
+#~ msgstr "搜索中"
+
+#~ msgid "Preparing search..."
+#~ msgstr "准备搜索..."
+
+#~ msgid ", in "
+#~ msgstr ", 位于"
+
+#~ 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 "你的搜索没有匹配到任何文档。请确认你所搜索的关键字."
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr "搜索完成, 找到了 %s 页匹配所搜索的关键字"
+
diff --git a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js
index ac64cd0bf..9bfcec76c 100644
--- a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js
+++ b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.js
@@ -1 +1 @@
-Documentation.addTranslations({"locale": "zh_TW", "plural_expr": "0", "messages": {"Search Results": "\u641c\u5c0b\u7d50\u679c", "Preparing search...": "\u6e96\u5099\u641c\u5c0b...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "", "Search finished, found %s page(s) matching the search query.": "", ", in ": "", "Expand sidebar": "", "Permalink to this headline": "", "Searching": "\u641c\u5c0b\u4e2d", "Collapse sidebar": "", "Permalink to this definition": "", "Hide Search Matches": ""}});
\ No newline at end of file
+Documentation.addTranslations({"locale": "zh_TW", "plural_expr": "0", "messages": {"Hide Search Matches": "", "Permalink to this definition": "", "Expand sidebar": "", "Permalink to this headline": "", "Collapse sidebar": ""}});
\ No newline at end of file
diff --git a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo
index 008ecec05..13c61e9a9 100644
Binary files a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo and b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.mo differ
diff --git a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po
index 33dff8cae..d75b45476 100644
--- a/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po
+++ b/sphinx/locale/zh_TW/LC_MESSAGES/sphinx.po
@@ -8,389 +8,405 @@ 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: 2010-05-24 23:54+0200\n"
+"PO-Revision-Date: 2011-01-22 14:41+0100\n"
"Last-Translator: Fred Lin \n"
"Language-Team: tw \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"
+"Generated-By: Babel 0.9.5\n"
-#: sphinx/environment.py:106 sphinx/writers/latex.py:184
+#: sphinx/environment.py:120 sphinx/writers/latex.py:189
#: sphinx/writers/manpage.py:67
#, python-format
msgid "%B %d, %Y"
msgstr "%Y 年 %m 月 %d 日"
-#: sphinx/roles.py:174
+#: sphinx/environment.py:1624
#, python-format
-msgid "Python Enhancement Proposals!PEP %s"
+msgid "see %s"
+msgstr ""
+
+#: sphinx/environment.py:1627
+#, python-format
+msgid "see also %s"
+msgstr ""
+
+#: sphinx/roles.py:175
+#, fuzzy, python-format
+msgid "Python Enhancement Proposals; PEP %s"
msgstr "Python 建議文件!PEP %s"
-#: sphinx/builders/changes.py:72
+#: sphinx/builders/changes.py:73
msgid "Builtins"
msgstr ""
-#: sphinx/builders/changes.py:74
+#: sphinx/builders/changes.py:75
msgid "Module level"
msgstr ""
-#: sphinx/builders/html.py:266
+#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%Y 年 %m 月 %d 日"
-#: sphinx/builders/html.py:285 sphinx/themes/basic/defindex.html:30
+#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
msgstr "總索引"
-#: sphinx/builders/html.py:285
+#: sphinx/builders/html.py:293
msgid "index"
msgstr "索引"
-#: sphinx/builders/html.py:345
+#: sphinx/builders/html.py:353
msgid "next"
msgstr "下一頁"
-#: sphinx/builders/html.py:354
+#: sphinx/builders/html.py:362
msgid "previous"
msgstr "上一頁"
-#: sphinx/builders/latex.py:151
+#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:208
msgid " (in "
msgstr ""
-#: sphinx/directives/other.py:127
+#: sphinx/builders/texinfo.py:151 sphinx/builders/texinfo.py:152
+#: sphinx/builders/texinfo.py:153 sphinx/domains/std.py:427
+#: sphinx/themes/basic/genindex-single.html:32
+#: sphinx/themes/basic/genindex-split.html:11
+#: sphinx/themes/basic/genindex-split.html:14
+#: sphinx/themes/basic/genindex.html:32 sphinx/themes/basic/genindex.html:35
+#: sphinx/themes/basic/genindex.html:68 sphinx/themes/basic/layout.html:134
+#: sphinx/writers/latex.py:178
+msgid "Index"
+msgstr "索引"
+
+#: sphinx/directives/other.py:136
msgid "Section author: "
msgstr "Section 作者:"
-#: sphinx/directives/other.py:129
+#: sphinx/directives/other.py:138
msgid "Module author: "
msgstr "模組作者:"
-#: sphinx/directives/other.py:131
+#: sphinx/directives/other.py:140
#, fuzzy
msgid "Code author: "
msgstr "模組作者:"
-#: sphinx/directives/other.py:133
+#: sphinx/directives/other.py:142
msgid "Author: "
msgstr "作者:"
-#: sphinx/directives/other.py:238
+#: sphinx/directives/other.py:215
msgid "See also"
msgstr ""
-#: sphinx/domains/__init__.py:253
+#: sphinx/domains/__init__.py:244
#, python-format
msgid "%s %s"
msgstr ""
-#: sphinx/domains/c.py:51 sphinx/domains/python.py:49
+#: sphinx/domains/c.py:51 sphinx/domains/python.py:95
msgid "Parameters"
msgstr "參數"
-#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:137
-#: sphinx/domains/python.py:59
+#: sphinx/domains/c.py:54 sphinx/domains/javascript.py:128
+#: sphinx/domains/python.py:107
msgid "Returns"
msgstr "返回"
-#: sphinx/domains/c.py:56 sphinx/domains/python.py:61
+#: sphinx/domains/c.py:56 sphinx/domains/python.py:109
msgid "Return type"
msgstr "返回類別"
-#: sphinx/domains/c.py:133
+#: sphinx/domains/c.py:141
#, python-format
msgid "%s (C function)"
msgstr "%s (C 函式)"
-#: sphinx/domains/c.py:135
+#: sphinx/domains/c.py:143
#, python-format
msgid "%s (C member)"
msgstr "%s (C 成員)"
-#: sphinx/domains/c.py:137
+#: sphinx/domains/c.py:145
#, python-format
msgid "%s (C macro)"
msgstr "%s (C 巨集)"
-#: sphinx/domains/c.py:139
+#: sphinx/domains/c.py:147
#, python-format
msgid "%s (C type)"
msgstr "%s (C 類別)"
-#: sphinx/domains/c.py:141
+#: sphinx/domains/c.py:149
#, python-format
msgid "%s (C variable)"
msgstr "%s (C 變數)"
-#: sphinx/domains/c.py:171 sphinx/domains/cpp.py:1031
-#: sphinx/domains/javascript.py:166 sphinx/domains/python.py:497
-#, python-format
+#: sphinx/domains/c.py:204 sphinx/domains/cpp.py:1053
+#: sphinx/domains/javascript.py:162 sphinx/domains/python.py:558
msgid "function"
msgstr "函式"
-#: sphinx/domains/c.py:172 sphinx/domains/cpp.py:1032
+#: sphinx/domains/c.py:205 sphinx/domains/cpp.py:1054
msgid "member"
msgstr "成員"
-#: sphinx/domains/c.py:173
+#: sphinx/domains/c.py:206
msgid "macro"
msgstr "巨集"
-#: sphinx/domains/c.py:174 sphinx/domains/cpp.py:1033
+#: sphinx/domains/c.py:207 sphinx/domains/cpp.py:1055
msgid "type"
msgstr "類別"
-#: sphinx/domains/c.py:175
+#: sphinx/domains/c.py:208
#, fuzzy
msgid "variable"
msgstr "變數"
-#: sphinx/domains/cpp.py:876
+#: sphinx/domains/cpp.py:897
#, fuzzy, python-format
msgid "%s (C++ class)"
msgstr "%s (內建類別)"
-#: sphinx/domains/cpp.py:891
+#: sphinx/domains/cpp.py:912
#, python-format
msgid "%s (C++ type)"
msgstr "%s (C++ 類別)"
-#: sphinx/domains/cpp.py:910
+#: sphinx/domains/cpp.py:931
#, python-format
msgid "%s (C++ member)"
msgstr "%s (C++ 成員)"
-#: sphinx/domains/cpp.py:962
+#: sphinx/domains/cpp.py:983
#, python-format
msgid "%s (C++ function)"
msgstr "%s (C++ 函式)"
-#: sphinx/domains/cpp.py:1030 sphinx/domains/python.py:499
+#: sphinx/domains/cpp.py:1052 sphinx/domains/javascript.py:163
+#: sphinx/domains/python.py:560
msgid "class"
msgstr ""
-#: sphinx/domains/javascript.py:117 sphinx/domains/python.py:221
+#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (內建函式)"
-#: sphinx/domains/javascript.py:118 sphinx/domains/python.py:285
+#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (%s 方法)"
-#: sphinx/domains/javascript.py:120
+#: sphinx/domains/javascript.py:109
+#, fuzzy, python-format
+msgid "%s() (class)"
+msgstr "%s (內建類別)"
+
+#: sphinx/domains/javascript.py:111
#, python-format
msgid "%s (global variable or constant)"
msgstr ""
-#: sphinx/domains/javascript.py:122 sphinx/domains/python.py:323
+#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (%s 屬性)"
-#: sphinx/domains/javascript.py:131
+#: sphinx/domains/javascript.py:122
#, fuzzy
msgid "Arguments"
msgstr "參數"
-#: sphinx/domains/javascript.py:134
+#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr ""
-#: sphinx/domains/javascript.py:167 sphinx/domains/python.py:498
+#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:559
msgid "data"
msgstr ""
-#: sphinx/domains/javascript.py:168 sphinx/domains/python.py:504
-#, python-format
+#: sphinx/domains/javascript.py:165 sphinx/domains/python.py:565
msgid "attribute"
msgstr "屬性"
-#: sphinx/domains/python.py:53
+#: sphinx/domains/python.py:100
#, fuzzy
msgid "Variables"
msgstr "變數"
-#: sphinx/domains/python.py:56
+#: sphinx/domains/python.py:104
msgid "Raises"
msgstr ""
-#: sphinx/domains/python.py:222 sphinx/domains/python.py:279
-#: sphinx/domains/python.py:291 sphinx/domains/python.py:304
+#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
+#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (在 %s 模組中)"
-#: sphinx/domains/python.py:225
+#: sphinx/domains/python.py:258
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (內建變數)"
-#: sphinx/domains/python.py:226 sphinx/domains/python.py:317
+#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#, python-format
msgid "%s (in module %s)"
msgstr "%s() (在 %s 模組中)"
-#: sphinx/domains/python.py:242
+#: sphinx/domains/python.py:275
#, python-format
msgid "%s (built-in class)"
msgstr "%s (內建類別)"
-#: sphinx/domains/python.py:243
+#: sphinx/domains/python.py:276
#, python-format
msgid "%s (class in %s)"
msgstr ""
-#: sphinx/domains/python.py:283
+#: sphinx/domains/python.py:316
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (%s.%s 方法)"
-#: sphinx/domains/python.py:295
+#: sphinx/domains/python.py:328
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (%s.%s 靜態方法)"
-#: sphinx/domains/python.py:298
+#: sphinx/domains/python.py:331
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (%s 靜態方法)"
-#: sphinx/domains/python.py:308
+#: sphinx/domains/python.py:341
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s 方法)"
-#: sphinx/domains/python.py:311
+#: sphinx/domains/python.py:344
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s 方法)"
-#: sphinx/domains/python.py:321
+#: sphinx/domains/python.py:354
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (%s.%s 屬性)"
-#: sphinx/domains/python.py:366
-msgid "Platforms: "
-msgstr "平台"
-
-#: sphinx/domains/python.py:372
+#: sphinx/domains/python.py:433
#, python-format
msgid "%s (module)"
msgstr "%s (模組)"
-#: sphinx/domains/python.py:429
+#: sphinx/domains/python.py:490
#, fuzzy
msgid "Python Module Index"
msgstr "模組索引"
-#: sphinx/domains/python.py:430
+#: sphinx/domains/python.py:491
msgid "modules"
msgstr "模組"
-#: sphinx/domains/python.py:475
+#: sphinx/domains/python.py:536
msgid "Deprecated"
msgstr "已移除"
-#: sphinx/domains/python.py:500 sphinx/locale/__init__.py:162
+#: sphinx/domains/python.py:561 sphinx/locale/__init__.py:179
msgid "exception"
msgstr "例外"
-#: sphinx/domains/python.py:501
+#: sphinx/domains/python.py:562
msgid "method"
msgstr ""
-#: sphinx/domains/python.py:502
-#, fuzzy, python-format
+#: sphinx/domains/python.py:563
+#, fuzzy
msgid "class method"
msgstr "%s() (%s 方法)"
-#: sphinx/domains/python.py:503
-#, python-format
+#: sphinx/domains/python.py:564
msgid "static method"
msgstr "靜態方法"
-#: sphinx/domains/python.py:505 sphinx/locale/__init__.py:158
+#: sphinx/domains/python.py:566 sphinx/locale/__init__.py:175
msgid "module"
msgstr "模組"
-#: sphinx/domains/rst.py:53
+#: sphinx/domains/python.py:694
+#, fuzzy
+msgid " (deprecated)"
+msgstr "已移除"
+
+#: sphinx/domains/rst.py:55
#, python-format
msgid "%s (directive)"
msgstr ""
-#: sphinx/domains/rst.py:55
+#: sphinx/domains/rst.py:57
#, fuzzy, python-format
msgid "%s (role)"
msgstr "%s (模組)"
-#: sphinx/domains/rst.py:103
+#: sphinx/domains/rst.py:106
msgid "directive"
msgstr ""
-#: sphinx/domains/rst.py:104
+#: sphinx/domains/rst.py:107
#, fuzzy
msgid "role"
msgstr "模組"
-#: sphinx/domains/std.py:68 sphinx/domains/std.py:84
+#: sphinx/domains/std.py:70 sphinx/domains/std.py:86
#, python-format
msgid "environment variable; %s"
msgstr "環境變數; %s"
-#: sphinx/domains/std.py:160
+#: sphinx/domains/std.py:162
#, python-format
msgid "%scommand line option; %s"
msgstr "%s命令列選項; %s"
-#: sphinx/domains/std.py:328
+#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr ""
-#: sphinx/domains/std.py:329
+#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr ""
-#: sphinx/domains/std.py:330
+#: sphinx/domains/std.py:395
msgid "reference label"
msgstr ""
-#: sphinx/domains/std.py:331
+#: sphinx/domains/std.py:396
msgid "environment variable"
msgstr "環境變數"
-#: sphinx/domains/std.py:332
+#: sphinx/domains/std.py:397
msgid "program option"
msgstr ""
-#: sphinx/domains/std.py:360 sphinx/themes/basic/genindex-single.html:11
-#: sphinx/themes/basic/genindex-split.html:11
-#: sphinx/themes/basic/genindex-split.html:14
-#: sphinx/themes/basic/genindex.html:11 sphinx/themes/basic/genindex.html:14
-#: sphinx/themes/basic/genindex.html:50 sphinx/themes/basic/layout.html:125
-#: sphinx/writers/latex.py:173
-msgid "Index"
-msgstr "索引"
-
-#: sphinx/domains/std.py:361
+#: sphinx/domains/std.py:428
msgid "Module Index"
msgstr "模組索引"
-#: sphinx/domains/std.py:362 sphinx/themes/basic/defindex.html:25
+#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "搜尋頁面"
-#: sphinx/ext/autodoc.py:917
+#: sphinx/ext/autodoc.py:998
#, python-format
msgid " Bases: %s"
msgstr ""
-#: sphinx/ext/autodoc.py:950
+#: sphinx/ext/autodoc.py:1034
#, python-format
msgid "alias of :class:`%s`"
msgstr ""
@@ -408,104 +424,104 @@ msgstr ""
msgid "original entry"
msgstr ""
-#: sphinx/ext/viewcode.py:66
+#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
-#: sphinx/ext/viewcode.py:109
+#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
-#: sphinx/ext/viewcode.py:123
+#: sphinx/ext/viewcode.py:131
#, fuzzy
msgid "Module code"
msgstr "模組"
-#: sphinx/ext/viewcode.py:129
+#: sphinx/ext/viewcode.py:137
#, python-format
msgid "Source code for %s "
msgstr ""
-#: sphinx/ext/viewcode.py:156
+#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
-#: sphinx/ext/viewcode.py:157
+#: sphinx/ext/viewcode.py:165
msgid "All modules for which code is available "
msgstr ""
-#: sphinx/locale/__init__.py:139
+#: sphinx/locale/__init__.py:155
msgid "Attention"
msgstr "注意"
-#: sphinx/locale/__init__.py:140
+#: sphinx/locale/__init__.py:156
msgid "Caution"
msgstr "警示"
-#: sphinx/locale/__init__.py:141
+#: sphinx/locale/__init__.py:157
msgid "Danger"
msgstr "危險"
-#: sphinx/locale/__init__.py:142
+#: sphinx/locale/__init__.py:158
msgid "Error"
msgstr "錯誤"
-#: sphinx/locale/__init__.py:143
+#: sphinx/locale/__init__.py:159
msgid "Hint"
msgstr "提示"
-#: sphinx/locale/__init__.py:144
+#: sphinx/locale/__init__.py:160
msgid "Important"
msgstr "重要"
-#: sphinx/locale/__init__.py:145
+#: sphinx/locale/__init__.py:161
msgid "Note"
msgstr "註解"
-#: sphinx/locale/__init__.py:146
+#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr ""
-#: sphinx/locale/__init__.py:147
+#: sphinx/locale/__init__.py:163
msgid "Tip"
msgstr "小技巧"
-#: sphinx/locale/__init__.py:148
+#: sphinx/locale/__init__.py:164
msgid "Warning"
msgstr "警告"
-#: sphinx/locale/__init__.py:152
+#: sphinx/locale/__init__.py:168
#, python-format
msgid "New in version %s"
msgstr "%s 版新功能"
-#: sphinx/locale/__init__.py:153
+#: sphinx/locale/__init__.py:169
#, python-format
msgid "Changed in version %s"
msgstr "在 %s 版改變"
-#: sphinx/locale/__init__.py:154
+#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "%s 版後已移除"
-#: sphinx/locale/__init__.py:159
+#: sphinx/locale/__init__.py:176
msgid "keyword"
msgstr "關鍵字"
-#: sphinx/locale/__init__.py:160
+#: sphinx/locale/__init__.py:177
msgid "operator"
msgstr "運算子"
-#: sphinx/locale/__init__.py:161
+#: sphinx/locale/__init__.py:178
msgid "object"
msgstr "物件"
-#: sphinx/locale/__init__.py:163
+#: sphinx/locale/__init__.py:180
msgid "statement"
msgstr ""
-#: sphinx/locale/__init__.py:164
+#: sphinx/locale/__init__.py:181
msgid "built-in function"
msgstr "內建函式"
@@ -514,8 +530,8 @@ msgstr "內建函式"
msgid "Table Of Contents"
msgstr "內容目錄"
-#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:128
-#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:14
+#: sphinx/themes/agogo/layout.html:49 sphinx/themes/basic/layout.html:137
+#: sphinx/themes/basic/search.html:11 sphinx/themes/basic/search.html:20
msgid "Search"
msgstr "搜尋"
@@ -564,15 +580,15 @@ msgstr ""
msgid "all functions, classes, terms"
msgstr ""
-#: sphinx/themes/basic/genindex-single.html:14
+#: sphinx/themes/basic/genindex-single.html:35
#, python-format
msgid "Index – %(key)s"
msgstr ""
-#: sphinx/themes/basic/genindex-single.html:46
+#: sphinx/themes/basic/genindex-single.html:63
#: sphinx/themes/basic/genindex-split.html:24
#: sphinx/themes/basic/genindex-split.html:38
-#: sphinx/themes/basic/genindex.html:56
+#: sphinx/themes/basic/genindex.html:74
msgid "Full index on one page"
msgstr ""
@@ -584,39 +600,39 @@ msgstr ""
msgid "can be huge"
msgstr ""
-#: sphinx/themes/basic/layout.html:23
+#: sphinx/themes/basic/layout.html:29
msgid "Navigation"
msgstr "瀏覽"
-#: sphinx/themes/basic/layout.html:113
+#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "在 %(docstitle)s 中搜尋"
-#: sphinx/themes/basic/layout.html:122
+#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr ""
-#: sphinx/themes/basic/layout.html:131
+#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "版權所有"
-#: sphinx/themes/basic/layout.html:180
+#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "© Copyright %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:182
+#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "© Copyright %(copyright)s."
msgstr ""
-#: sphinx/themes/basic/layout.html:186
+#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "最後更新日期是 %(last_updated)s."
-#: sphinx/themes/basic/layout.html:189
+#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using Sphinx "
@@ -644,13 +660,13 @@ msgstr "下一個主題"
msgid "next chapter"
msgstr "下一章"
-#: sphinx/themes/basic/search.html:18
+#: sphinx/themes/basic/search.html:24
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr ""
-#: sphinx/themes/basic/search.html:23
+#: sphinx/themes/basic/search.html:29
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"
@@ -658,16 +674,15 @@ msgid ""
" containing fewer words won't appear in the result list."
msgstr ""
-#: sphinx/themes/basic/search.html:30
+#: sphinx/themes/basic/search.html:36
msgid "search"
msgstr "搜尋"
-#: sphinx/themes/basic/search.html:34
-#: sphinx/themes/basic/static/searchtools.js:489
+#: sphinx/themes/basic/search.html:40
msgid "Search Results"
msgstr "搜尋結果"
-#: sphinx/themes/basic/search.html:36
+#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr ""
@@ -707,12 +722,12 @@ msgstr "C API 改變"
msgid "Other changes"
msgstr "其他改變:"
-#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:482
-#: sphinx/writers/html.py:487
+#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:505
+#: sphinx/writers/html.py:511
msgid "Permalink to this headline"
msgstr ""
-#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:87
+#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr ""
@@ -720,35 +735,12 @@ msgstr ""
msgid "Hide Search Matches"
msgstr ""
-#: sphinx/themes/basic/static/searchtools.js:285
-msgid "Searching"
-msgstr "搜尋中"
-
-#: sphinx/themes/basic/static/searchtools.js:290
-msgid "Preparing search..."
-msgstr "準備搜尋..."
-
-#: sphinx/themes/basic/static/searchtools.js:364
-msgid ", in "
-msgstr ""
-
-#: sphinx/themes/basic/static/searchtools.js:491
-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:493
-#, python-format
-msgid "Search finished, found %s page(s) matching the search query."
-msgstr ""
-
-#: sphinx/themes/default/static/sidebar.js:66
+#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
-#: sphinx/themes/default/static/sidebar.js:79
-#: sphinx/themes/default/static/sidebar.js:106
+#: sphinx/themes/default/static/sidebar.js:82
+#: sphinx/themes/default/static/sidebar.js:110
msgid "Collapse sidebar"
msgstr ""
@@ -756,22 +748,45 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: sphinx/writers/latex.py:171
+#: sphinx/writers/latex.py:176
msgid "Release"
msgstr "釋出"
-#: sphinx/writers/latex.py:572 sphinx/writers/manpage.py:178
+#: sphinx/writers/latex.py:590 sphinx/writers/manpage.py:182
msgid "Footnotes"
msgstr ""
-#: sphinx/writers/latex.py:641
+#: sphinx/writers/latex.py:672
msgid "continued from previous page"
msgstr ""
-#: sphinx/writers/latex.py:646
+#: sphinx/writers/latex.py:677
msgid "Continued on next page"
msgstr ""
-#: sphinx/writers/text.py:422
+#: sphinx/writers/text.py:430
msgid "[image]"
msgstr "[圖片]"
+
+#~ msgid "Platforms: "
+#~ msgstr "平台"
+
+#~ msgid "Searching"
+#~ msgstr "搜尋中"
+
+#~ msgid "Preparing search..."
+#~ msgstr "準備搜尋..."
+
+#~ msgid ", in "
+#~ msgstr ""
+
+#~ 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 ""
+
+#~ msgid "Search finished, found %s page(s) matching the search query."
+#~ msgstr ""
+
diff --git a/sphinx/pycode/__init__.py b/sphinx/pycode/__init__.py
index b8e2fded2..e15e42bf2 100644
--- a/sphinx/pycode/__init__.py
+++ b/sphinx/pycode/__init__.py
@@ -5,7 +5,7 @@
Utilities parsing and analyzing Python code.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -18,6 +18,7 @@ from sphinx.errors import PycodeError
from sphinx.pycode import nodes
from sphinx.pycode.pgen2 import driver, token, tokenize, parse, literals
from sphinx.util import get_module_source
+from sphinx.util.pycompat import next
from sphinx.util.docstrings import prepare_docstring, prepare_commentdoc
@@ -84,10 +85,30 @@ class AttrDocVisitor(nodes.NodeVisitor):
self.in_init -= 1
def visit_expr_stmt(self, node):
- """Visit an assignment which may have a special comment before it."""
+ """Visit an assignment which may have a special comment before (or
+ after) it.
+ """
if _eq not in node.children:
# not an assignment (we don't care for augmented assignments)
return
+ # look *after* the node; there may be a comment prefixing the NEWLINE
+ # of the simple_stmt
+ parent = node.parent
+ idx = parent.children.index(node) + 1
+ while idx < len(parent):
+ if parent[idx].type == sym.SEMI:
+ idx += 1
+ continue # skip over semicolon
+ if parent[idx].type == sym.NEWLINE:
+ prefix = parent[idx].get_prefix()
+ if not isinstance(prefix, unicode):
+ prefix = prefix.decode(self.encoding)
+ docstring = prepare_commentdoc(prefix)
+ if docstring:
+ self.add_docstring(node, docstring)
+ return # don't allow docstrings both before and after
+ break
+ # now look *before* the node
pnode = node[0]
prefix = pnode.get_prefix()
# if the assignment is the first statement on a new indentation
@@ -98,7 +119,8 @@ class AttrDocVisitor(nodes.NodeVisitor):
if not pnode or pnode.type not in (token.INDENT, token.DEDENT):
break
prefix = pnode.get_prefix()
- prefix = prefix.decode(self.encoding)
+ if not isinstance(prefix, unicode):
+ prefix = prefix.decode(self.encoding)
docstring = prepare_commentdoc(prefix)
self.add_docstring(node, docstring)
@@ -278,7 +300,7 @@ class ModuleAnalyzer(object):
result[fullname] = (dtype, startline, endline)
expect_indent = False
if tok in ('def', 'class'):
- name = tokeniter.next()[1]
+ name = next(tokeniter)[1]
namespace.append(name)
fullname = '.'.join(namespace)
stack.append((tok, fullname, spos[0], indent))
diff --git a/sphinx/pycode/nodes.py b/sphinx/pycode/nodes.py
index e71846779..7adacc1d0 100644
--- a/sphinx/pycode/nodes.py
+++ b/sphinx/pycode/nodes.py
@@ -5,7 +5,7 @@
Parse tree node implementations.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -29,6 +29,8 @@ class BaseNode(object):
return NotImplemented
return not self._eq(other)
+ __hash__ = None
+
def get_prev_sibling(self):
"""Return previous child in parent's children, or None."""
if self.parent is None:
diff --git a/sphinx/pycode/pgen2/driver.py b/sphinx/pycode/pgen2/driver.py
index 39e347b79..5e6cf9a5b 100644
--- a/sphinx/pycode/pgen2/driver.py
+++ b/sphinx/pycode/pgen2/driver.py
@@ -120,7 +120,7 @@ def load_grammar(gt="Grammar.txt", gp=None,
head, tail = os.path.splitext(gt)
if tail == ".txt":
tail = ""
- gp = head + tail + ".".join(map(str, sys.version_info)) + ".pickle"
+ gp = head + tail + ".".join(map(str, sys.version_info[:2])) + ".pickle"
if force or not _newer(gp, gt):
logger.info("Generating grammar tables from %s", gt)
g = pgen.generate_grammar(gt)
diff --git a/sphinx/pycode/pgen2/literals.py b/sphinx/pycode/pgen2/literals.py
index 319002910..d48937028 100644
--- a/sphinx/pycode/pgen2/literals.py
+++ b/sphinx/pycode/pgen2/literals.py
@@ -66,7 +66,7 @@ uni_escape_re = re.compile(r"\\(\'|\"|\\|[abfnrtv]|x.{0,2}|[0-7]{1,3}|"
def evalString(s, encoding=None):
regex = escape_re
repl = escape
- if encoding:
+ if encoding and not isinstance(s, unicode):
s = s.decode(encoding)
if s.startswith('u') or s.startswith('U'):
regex = uni_escape_re
diff --git a/sphinx/pycode/pgen2/tokenize.py b/sphinx/pycode/pgen2/tokenize.py
index 4489db898..7ad9f012c 100644
--- a/sphinx/pycode/pgen2/tokenize.py
+++ b/sphinx/pycode/pgen2/tokenize.py
@@ -143,7 +143,9 @@ class TokenError(Exception): pass
class StopTokenizing(Exception): pass
-def printtoken(type, token, (srow, scol), (erow, ecol), line): # for testing
+def printtoken(type, token, scell, ecell, line): # for testing
+ srow, scol = scell
+ erow, ecol = ecell
print "%d,%d-%d,%d:\t%s\t%s" % \
(srow, scol, erow, ecol, tok_name[type], repr(token))
diff --git a/sphinx/pygments_styles.py b/sphinx/pygments_styles.py
new file mode 100644
index 000000000..44740b31e
--- /dev/null
+++ b/sphinx/pygments_styles.py
@@ -0,0 +1,96 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.pygments_styles
+ ~~~~~~~~~~~~~~~~~~~~~~
+
+ Sphinx theme specific highlighting styles.
+
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from pygments.style import Style
+from pygments.styles.friendly import FriendlyStyle
+from pygments.token import Generic, Comment, Number, Whitespace, Keyword, \
+ Operator, Name, String, Error
+
+
+class NoneStyle(Style):
+ """Style without any styling."""
+
+
+class SphinxStyle(Style):
+ """
+ Like friendly, but a bit darker to enhance contrast on the green
+ background.
+ """
+
+ background_color = '#eeffcc'
+ default_style = ''
+
+ styles = FriendlyStyle.styles
+ styles.update({
+ Generic.Output: '#333',
+ Comment: 'italic #408090',
+ Number: '#208050',
+ })
+
+
+class PyramidStyle(Style):
+ """
+ Pylons/pyramid pygments style based on friendly style, by Blaise Laflamme.
+ """
+
+ # work in progress...
+
+ background_color = "#f8f8f8"
+ default_style = ""
+
+ styles = {
+ Whitespace: "#bbbbbb",
+ Comment: "italic #60a0b0",
+ Comment.Preproc: "noitalic #007020",
+ Comment.Special: "noitalic bg:#fff0f0",
+
+ Keyword: "bold #007020",
+ Keyword.Pseudo: "nobold",
+ Keyword.Type: "nobold #902000",
+
+ Operator: "#666666",
+ Operator.Word: "bold #007020",
+
+ Name.Builtin: "#007020",
+ Name.Function: "#06287e",
+ Name.Class: "bold #0e84b5",
+ Name.Namespace: "bold #0e84b5",
+ Name.Exception: "#007020",
+ Name.Variable: "#bb60d5",
+ Name.Constant: "#60add5",
+ Name.Label: "bold #002070",
+ Name.Entity: "bold #d55537",
+ Name.Attribute: "#0e84b5",
+ Name.Tag: "bold #062873",
+ Name.Decorator: "bold #555555",
+
+ String: "#4070a0",
+ String.Doc: "italic",
+ String.Interpol: "italic #70a0d0",
+ String.Escape: "bold #4070a0",
+ String.Regex: "#235388",
+ String.Symbol: "#517918",
+ String.Other: "#c65d09",
+ Number: "#40a070",
+
+ Generic.Heading: "bold #000080",
+ Generic.Subheading: "bold #800080",
+ Generic.Deleted: "#A00000",
+ Generic.Inserted: "#00A000",
+ Generic.Error: "#FF0000",
+ Generic.Emph: "italic",
+ Generic.Strong: "bold",
+ Generic.Prompt: "bold #c65d09",
+ Generic.Output: "#888",
+ Generic.Traceback: "#04D",
+
+ Error: "#a40000 bg:#fbe3e4"
+ }
diff --git a/sphinx/quickstart.py b/sphinx/quickstart.py
index db18ef4eb..d606e7ad0 100644
--- a/sphinx/quickstart.py
+++ b/sphinx/quickstart.py
@@ -5,12 +5,13 @@
Quickly setup documentation source to work with Sphinx.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
-import sys, os, time
+import sys, os, time, re
from os import path
+from codecs import open
TERM_ENCODING = getattr(sys.stdin, 'encoding', None)
@@ -20,10 +21,23 @@ from sphinx.util.console import purple, bold, red, turquoise, \
nocolor, color_terminal
from sphinx.util import texescape
+# function to get input from terminal -- overridden by the test suite
+try:
+ # this raw_input is not converted by 2to3
+ term_input = raw_input
+except NameError:
+ term_input = input
+
PROMPT_PREFIX = '> '
-QUICKSTART_CONF = '''\
+if sys.version_info >= (3, 0):
+ # prevents that the file is checked for being written in Python 2.x syntax
+ QUICKSTART_CONF = '#!/usr/bin/env python3\n'
+else:
+ QUICKSTART_CONF = ''
+
+QUICKSTART_CONF += '''\
# -*- coding: utf-8 -*-
#
# %(project)s documentation build configuration file, created by
@@ -240,6 +254,22 @@ man_pages = [
('%(master_str)s', '%(project_manpage)s', u'%(project_doc)s',
[u'%(author_str)s'], 1)
]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+# -- Options for Texinfo output ------------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+# dir menu entry, description, category)
+texinfo_documents = [
+ ('%(master_str)s', '%(project_fn)s', u'%(project_doc)s', u'%(author_str)s',
+ '%(project_fn)s', 'One line description of project.', 'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+texinfo_appendices = []
'''
EPUB_CONFIG = '''
@@ -337,9 +367,11 @@ PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) \
$(SPHINXOPTS) %(rsrcdir)s
+# the i18n builder cannot share the environment and doctrees with the others
+I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) %(rsrcdir)s
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp \
-epub latex latexpdf text man changes linkcheck doctest
+epub latex latexpdf text man changes linkcheck doctest gettext
help:
\t@echo "Please use \\`make ' where is one of"
@@ -356,6 +388,9 @@ help:
\t@echo " latexpdf to make LaTeX files and run them through pdflatex"
\t@echo " text to make text files"
\t@echo " man to make manual pages"
+\t@echo " texinfo to make Texinfo files"
+\t@echo " info to make Texinfo files and run them through makeinfo"
+\t@echo " gettext to make PO message catalogs"
\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 \
@@ -442,6 +477,24 @@ man:
\t@echo
\t@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
+texinfo:
+\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+\t@echo
+\t@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
+\t@echo "Run \\`make' in that directory to run these through makeinfo" \\
+\t "(use \\`make info' here to do that automatically)."
+
+info:
+\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
+\t@echo "Running Texinfo files through makeinfo..."
+\tmake -C $(BUILDDIR)/texinfo info
+\t@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
+
+gettext:
+\t$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
+\t@echo
+\t@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
+
changes:
\t$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
\t@echo
@@ -469,8 +522,10 @@ if "%%SPHINXBUILD%%" == "" (
)
set BUILDDIR=%(rbuilddir)s
set ALLSPHINXOPTS=-d %%BUILDDIR%%/doctrees %%SPHINXOPTS%% %(rsrcdir)s
+set I18NSPHINXOPTS=%%SPHINXOPTS%% %(rsrcdir)s
if NOT "%%PAPER%%" == "" (
\tset ALLSPHINXOPTS=-D latex_paper_size=%%PAPER%% %%ALLSPHINXOPTS%%
+\tset I18NSPHINXOPTS=-D latex_paper_size=%%PAPER%% %%I18NSPHINXOPTS%%
)
if "%%1" == "" goto help
@@ -490,6 +545,8 @@ if "%%1" == "help" (
\techo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
\techo. text to make text files
\techo. man to make manual pages
+\techo. texinfo to make Texinfo files
+\techo. gettext to make PO message catalogs
\techo. changes to make an overview over all changed/added/deprecated items
\techo. linkcheck to check all external links for integrity
\techo. doctest to run all doctests embedded in the documentation if enabled
@@ -504,6 +561,7 @@ if "%%1" == "clean" (
if "%%1" == "html" (
\t%%SPHINXBUILD%% -b html %%ALLSPHINXOPTS%% %%BUILDDIR%%/html
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished. The HTML pages are in %%BUILDDIR%%/html.
\tgoto end
@@ -511,6 +569,7 @@ if "%%1" == "html" (
if "%%1" == "dirhtml" (
\t%%SPHINXBUILD%% -b dirhtml %%ALLSPHINXOPTS%% %%BUILDDIR%%/dirhtml
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished. The HTML pages are in %%BUILDDIR%%/dirhtml.
\tgoto end
@@ -518,6 +577,7 @@ if "%%1" == "dirhtml" (
if "%%1" == "singlehtml" (
\t%%SPHINXBUILD%% -b singlehtml %%ALLSPHINXOPTS%% %%BUILDDIR%%/singlehtml
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished. The HTML pages are in %%BUILDDIR%%/singlehtml.
\tgoto end
@@ -525,6 +585,7 @@ if "%%1" == "singlehtml" (
if "%%1" == "pickle" (
\t%%SPHINXBUILD%% -b pickle %%ALLSPHINXOPTS%% %%BUILDDIR%%/pickle
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished; now you can process the pickle files.
\tgoto end
@@ -532,6 +593,7 @@ if "%%1" == "pickle" (
if "%%1" == "json" (
\t%%SPHINXBUILD%% -b json %%ALLSPHINXOPTS%% %%BUILDDIR%%/json
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished; now you can process the JSON files.
\tgoto end
@@ -539,6 +601,7 @@ if "%%1" == "json" (
if "%%1" == "htmlhelp" (
\t%%SPHINXBUILD%% -b htmlhelp %%ALLSPHINXOPTS%% %%BUILDDIR%%/htmlhelp
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished; now you can run HTML Help Workshop with the ^
.hhp project file in %%BUILDDIR%%/htmlhelp.
@@ -547,6 +610,7 @@ if "%%1" == "htmlhelp" (
if "%%1" == "qthelp" (
\t%%SPHINXBUILD%% -b qthelp %%ALLSPHINXOPTS%% %%BUILDDIR%%/qthelp
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished; now you can run "qcollectiongenerator" with the ^
.qhcp project file in %%BUILDDIR%%/qthelp, like this:
@@ -558,6 +622,7 @@ if "%%1" == "qthelp" (
if "%%1" == "devhelp" (
\t%%SPHINXBUILD%% -b devhelp %%ALLSPHINXOPTS%% %%BUILDDIR%%/devhelp
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished.
\tgoto end
@@ -565,6 +630,7 @@ if "%%1" == "devhelp" (
if "%%1" == "epub" (
\t%%SPHINXBUILD%% -b epub %%ALLSPHINXOPTS%% %%BUILDDIR%%/epub
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished. The epub file is in %%BUILDDIR%%/epub.
\tgoto end
@@ -572,6 +638,7 @@ if "%%1" == "epub" (
if "%%1" == "latex" (
\t%%SPHINXBUILD%% -b latex %%ALLSPHINXOPTS%% %%BUILDDIR%%/latex
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished; the LaTeX files are in %%BUILDDIR%%/latex.
\tgoto end
@@ -579,6 +646,7 @@ if "%%1" == "latex" (
if "%%1" == "text" (
\t%%SPHINXBUILD%% -b text %%ALLSPHINXOPTS%% %%BUILDDIR%%/text
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished. The text files are in %%BUILDDIR%%/text.
\tgoto end
@@ -586,13 +654,31 @@ if "%%1" == "text" (
if "%%1" == "man" (
\t%%SPHINXBUILD%% -b man %%ALLSPHINXOPTS%% %%BUILDDIR%%/man
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Build finished. The manual pages are in %%BUILDDIR%%/man.
\tgoto end
)
+if "%%1" == "texinfo" (
+\t%%SPHINXBUILD%% -b texinfo %%ALLSPHINXOPTS%% %%BUILDDIR%%/texinfo
+\tif errorlevel 1 exit /b 1
+\techo.
+\techo.Build finished. The Texinfo files are in %%BUILDDIR%%/texinfo.
+\tgoto end
+)
+
+if "%%1" == "gettext" (
+\t%%SPHINXBUILD%% -b gettext %%I18NSPHINXOPTS%% %%BUILDDIR%%/locale
+\tif errorlevel 1 exit /b 1
+\techo.
+\techo.Build finished. The message catalogs are in %%BUILDDIR%%/locale.
+\tgoto end
+)
+
if "%%1" == "changes" (
\t%%SPHINXBUILD%% -b changes %%ALLSPHINXOPTS%% %%BUILDDIR%%/changes
+\tif errorlevel 1 exit /b 1
\techo.
\techo.The overview file is in %%BUILDDIR%%/changes.
\tgoto end
@@ -600,6 +686,7 @@ if "%%1" == "changes" (
if "%%1" == "linkcheck" (
\t%%SPHINXBUILD%% -b linkcheck %%ALLSPHINXOPTS%% %%BUILDDIR%%/linkcheck
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Link check complete; look for any errors in the above output ^
or in %%BUILDDIR%%/linkcheck/output.txt.
@@ -608,6 +695,7 @@ or in %%BUILDDIR%%/linkcheck/output.txt.
if "%%1" == "doctest" (
\t%%SPHINXBUILD%% -b doctest %%ALLSPHINXOPTS%% %%BUILDDIR%%/doctest
+\tif errorlevel 1 exit /b 1
\techo.
\techo.Testing of doctests in the sources finished, look at the ^
results in %%BUILDDIR%%/doctest/output.txt.
@@ -665,20 +753,22 @@ def do_prompt(d, key, text, default=None, validator=nonempty):
prompt = purple(PROMPT_PREFIX + '%s [%s]: ' % (text, default))
else:
prompt = purple(PROMPT_PREFIX + text + ': ')
- x = raw_input(prompt)
+ x = term_input(prompt)
if default and not x:
x = default
- if x.decode('ascii', 'replace').encode('ascii', 'replace') != x:
- if TERM_ENCODING:
- x = x.decode(TERM_ENCODING)
- else:
- print turquoise('* Note: non-ASCII characters entered '
- 'and terminal encoding unknown -- assuming '
- 'UTF-8 or Latin-1.')
- try:
- x = x.decode('utf-8')
- except UnicodeDecodeError:
- x = x.decode('latin1')
+ if not isinstance(x, unicode):
+ # for Python 2.x, try to get a Unicode string out of it
+ if x.decode('ascii', 'replace').encode('ascii', 'replace') != x:
+ if TERM_ENCODING:
+ x = x.decode(TERM_ENCODING)
+ else:
+ print turquoise('* Note: non-ASCII characters entered '
+ 'and terminal encoding unknown -- assuming '
+ 'UTF-8 or Latin-1.')
+ try:
+ x = x.decode('utf-8')
+ except UnicodeDecodeError:
+ x = x.decode('latin1')
try:
x = validator(x)
except ValidationError, err:
@@ -688,6 +778,18 @@ def do_prompt(d, key, text, default=None, validator=nonempty):
d[key] = x
+if sys.version_info >= (3, 0):
+ # remove Unicode literal prefixes
+ _unicode_string_re = re.compile(r"[uU]('.*?')")
+ def _convert_python_source(source):
+ return _unicode_string_re.sub('\\1', source)
+
+ for f in ['QUICKSTART_CONF', 'EPUB_CONFIG', 'INTERSPHINX_CONFIG']:
+ globals()[f] = _convert_python_source(globals()[f])
+
+ del _unicode_string_re, _convert_python_source
+
+
def inner_main(args):
d = {}
texescape.init()
@@ -695,14 +797,24 @@ def inner_main(args):
if not color_terminal():
nocolor()
+ if len(args) > 3:
+ print 'Usage: sphinx-quickstart [root]'
+ sys.exit(1)
+ elif len(args) == 2:
+ d['path'] = args[1]
+
print bold('Welcome to the Sphinx %s quickstart utility.') % __version__
print '''
Please enter values for the following settings (just press Enter to
accept a default value, if one is given in brackets).'''
- print '''
+ if 'path' in d:
+ print bold('''
+Selected root path: %s''' % d['path'])
+ else:
+ print '''
Enter the root path for documentation.'''
- do_prompt(d, 'path', 'Root path for the documentation', '.', is_path)
+ do_prompt(d, 'path', 'Root path for the documentation', '.', is_path)
while path.isfile(path.join(d['path'], 'conf.py')) or \
path.isfile(path.join(d['path'], 'source', 'conf.py')):
@@ -843,28 +955,28 @@ directly.'''
if d['ext_intersphinx']:
conf_text += INTERSPHINX_CONFIG
- f = open(path.join(srcdir, 'conf.py'), 'w')
- f.write(conf_text.encode('utf-8'))
+ f = open(path.join(srcdir, 'conf.py'), 'w', encoding='utf-8')
+ f.write(conf_text)
f.close()
masterfile = path.join(srcdir, d['master'] + d['suffix'])
- f = open(masterfile, 'w')
- f.write((MASTER_FILE % d).encode('utf-8'))
+ f = open(masterfile, 'w', encoding='utf-8')
+ f.write(MASTER_FILE % d)
f.close()
if d['makefile']:
d['rsrcdir'] = d['sep'] and 'source' or '.'
d['rbuilddir'] = d['sep'] and 'build' or d['dot'] + 'build'
# use binary mode, to avoid writing \r\n on Windows
- f = open(path.join(d['path'], 'Makefile'), 'wb')
- f.write((MAKEFILE % d).encode('utf-8'))
+ f = open(path.join(d['path'], 'Makefile'), 'wb', encoding='utf-8')
+ f.write(MAKEFILE % d)
f.close()
if d['batchfile']:
d['rsrcdir'] = d['sep'] and 'source' or '.'
d['rbuilddir'] = d['sep'] and 'build' or d['dot'] + 'build'
- f = open(path.join(d['path'], 'make.bat'), 'w')
- f.write((BATCHFILE % d).encode('utf-8'))
+ f = open(path.join(d['path'], 'make.bat'), 'w', encoding='utf-8')
+ f.write(BATCHFILE % d)
f.close()
print
@@ -889,4 +1001,3 @@ def main(argv=sys.argv):
print
print '[Interrupted.]'
return
-
diff --git a/sphinx/roles.py b/sphinx/roles.py
index d3f3c67e3..307439146 100644
--- a/sphinx/roles.py
+++ b/sphinx/roles.py
@@ -5,7 +5,7 @@
Handlers for additional ReST roles.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -18,7 +18,7 @@ from docutils.parsers.rst import roles
from sphinx import addnodes
from sphinx.locale import _
from sphinx.util import ws_re
-from sphinx.util.nodes import split_explicit_title
+from sphinx.util.nodes import split_explicit_title, process_index_entry
generic_docroles = {
@@ -69,9 +69,10 @@ class XRefRole(object):
innernodeclass = nodes.literal
def __init__(self, fix_parens=False, lowercase=False,
- nodeclass=None, innernodeclass=None):
+ nodeclass=None, innernodeclass=None, warn_dangling=False):
self.fix_parens = fix_parens
self.lowercase = lowercase
+ self.warn_dangling = warn_dangling
if nodeclass is not None:
self.nodeclass = nodeclass
if innernodeclass is not None:
@@ -105,9 +106,9 @@ class XRefRole(object):
classes = ['xref', domain, '%s-%s' % (domain, role)]
# if the first character is a bang, don't cross-reference at all
if text[0:1] == '!':
- text = utils.unescape(text)
+ text = utils.unescape(text)[1:]
if self.fix_parens:
- text, tgt = self._fix_parens(env, False, text[1:], "")
+ text, tgt = self._fix_parens(env, False, text, "")
innernode = self.innernodeclass(rawtext, text, classes=classes)
return self.result_nodes(inliner.document, env, innernode,
is_ref=False)
@@ -133,22 +134,22 @@ class XRefRole(object):
refnode += self.innernodeclass(rawtext, title, classes=classes)
# we also need the source document
refnode['refdoc'] = env.docname
+ refnode['refwarn'] = self.warn_dangling
# result_nodes allow further modification of return values
return self.result_nodes(inliner.document, env, refnode, is_ref=True)
# methods that can be overwritten
def process_link(self, env, refnode, has_explicit_title, title, target):
- """
- Called after parsing title and target text, and creating the reference
- node (given in *refnode*). This method can alter the reference node and
- must return a new (or the same) ``(title, target)`` tuple.
+ """Called after parsing title and target text, and creating the
+ reference node (given in *refnode*). This method can alter the
+ reference node and must return a new (or the same) ``(title, target)``
+ tuple.
"""
return title, ws_re.sub(' ', target)
def result_nodes(self, document, env, node, is_ref):
- """
- Called before returning the finished nodes. *node* is the reference
+ """Called before returning the finished nodes. *node* is the reference
node if one was created (*is_ref* is then true), else the content node.
This method can add other nodes and must return a ``(nodes, messages)``
tuple (the usual return value of a role function).
@@ -171,8 +172,12 @@ def indexmarkup_role(typ, rawtext, etext, lineno, inliner,
inliner.document.note_explicit_target(targetnode)
if typ == 'pep':
indexnode['entries'] = [
- ('single', _('Python Enhancement Proposals!PEP %s') % text,
- targetid, 'PEP %s' % text)]
+ ('single', _('Python Enhancement Proposals; PEP %s') % text,
+ targetid, '')]
+ anchor = ''
+ anchorindex = text.find('#')
+ if anchorindex > 0:
+ text, anchor = text[:anchorindex], text[anchorindex:]
try:
pepnum = int(text)
except ValueError:
@@ -182,12 +187,16 @@ def indexmarkup_role(typ, rawtext, etext, lineno, inliner,
return [prb], [msg]
ref = inliner.document.settings.pep_base_url + 'pep-%04d' % pepnum
sn = nodes.strong('PEP '+text, 'PEP '+text)
- rn = nodes.reference('', '', internal=False, refuri=ref, classes=[typ])
+ rn = nodes.reference('', '', internal=False, refuri=ref+anchor,
+ classes=[typ])
rn += sn
return [indexnode, targetnode, rn], []
elif typ == 'rfc':
- indexnode['entries'] = [('single', 'RFC; RFC %s' % text,
- targetid, 'RFC %s' % text)]
+ indexnode['entries'] = [('single', 'RFC; RFC %s' % text, targetid, '')]
+ anchor = ''
+ anchorindex = text.find('#')
+ if anchorindex > 0:
+ text, anchor = text[:anchorindex], text[anchorindex:]
try:
rfcnum = int(text)
except ValueError:
@@ -197,7 +206,8 @@ def indexmarkup_role(typ, rawtext, etext, lineno, inliner,
return [prb], [msg]
ref = inliner.document.settings.rfc_base_url + inliner.rfc_url % rfcnum
sn = nodes.strong('RFC '+text, 'RFC '+text)
- rn = nodes.reference('', '', internal=False, refuri=ref, classes=[typ])
+ rn = nodes.reference('', '', internal=False, refuri=ref+anchor,
+ classes=[typ])
rn += sn
return [indexnode, targetnode, rn], []
@@ -259,11 +269,38 @@ def abbr_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
return [addnodes.abbreviation(abbr, abbr, explanation=expl)], []
+def index_role(typ, rawtext, text, lineno, inliner, options={}, content=[]):
+ # create new reference target
+ env = inliner.document.settings.env
+ targetid = 'index-%s' % env.new_serialno('index')
+ targetnode = nodes.target('', '', ids=[targetid])
+ # split text and target in role content
+ has_explicit_title, title, target = split_explicit_title(text)
+ title = utils.unescape(title)
+ target = utils.unescape(target)
+ # if an explicit target is given, we can process it as a full entry
+ if has_explicit_title:
+ entries = process_index_entry(target, targetid)
+ # otherwise we just create a "single" entry
+ else:
+ # but allow giving main entry
+ main = ''
+ if target.startswith('!'):
+ target = target[1:]
+ title = title[1:]
+ main = 'main'
+ entries = [('single', target, targetid, main)]
+ indexnode = addnodes.index()
+ indexnode['entries'] = entries
+ textnode = nodes.Text(title, title)
+ return [indexnode, targetnode, textnode], []
+
+
specific_docroles = {
# links to download references
'download': XRefRole(nodeclass=addnodes.download_reference),
# links to documents
- 'doc': XRefRole(),
+ 'doc': XRefRole(warn_dangling=True),
'pep': indexmarkup_role,
'rfc': indexmarkup_role,
@@ -272,6 +309,7 @@ specific_docroles = {
'file': emph_literal_role,
'samp': emph_literal_role,
'abbr': abbr_role,
+ 'index': index_role,
}
for rolename, func in specific_docroles.iteritems():
diff --git a/sphinx/search.py b/sphinx/search/__init__.py
similarity index 62%
rename from sphinx/search.py
rename to sphinx/search/__init__.py
index 729b63b2a..645ebfc81 100644
--- a/sphinx/search.py
+++ b/sphinx/search/__init__.py
@@ -3,9 +3,9 @@
sphinx.search
~~~~~~~~~~~~~
- Create a search index for offline search.
+ Create a full-text search index for offline search.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import re
@@ -14,28 +14,90 @@ import cPickle as pickle
from docutils.nodes import comment, Text, NodeVisitor, SkipNode
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)')
+class SearchLanguage(object):
+ """
+ This class is the base class for search natural language preprocessors. If
+ you want to add support for a new language, you should override the methods
+ of this class.
-stopwords = set("""
-a and are as at
-be but by
-for
-if in into is it
-near no not
-of on or
-such
-that the their then there these they this to
-was will with
-""".split())
+ You should override `lang` class property too (e.g. 'en', 'fr' and so on).
+
+ .. attribute:: stopwords
+
+ This is a set of stop words of the target language. Default `stopwords`
+ is empty. This word is used for building index and embedded in JS.
+
+ .. attribute:: js_stemmer_code
+
+ Return stemmer class of JavaScript version. This class' name should be
+ ``Stemmer`` and this class must have ``stemWord`` method. This string is
+ embedded as-is in searchtools.js.
+
+ This class is used to preprocess search word which Sphinx HTML readers
+ type, before searching index. Default implementation does nothing.
+ """
+ lang = None
+ stopwords = set()
+ js_stemmer_code = """
+/**
+ * Dummy stemmer for languages without stemming rules.
+ */
+var Stemmer = function() {
+ this.stemWord = function(w) {
+ return w;
+ }
+}
+"""
+
+ _word_re = re.compile(r'\w+(?u)')
+
+ def __init__(self, options):
+ self.options = options
+ self.init(options)
+
+ def init(self, options):
+ """
+ Initialize the class with the options the user has given.
+ """
+
+ def split(self, input):
+ """
+ This method splits a sentence into words. Default splitter splits input
+ at white spaces, which should be enough for most languages except CJK
+ languages.
+ """
+ return self._word_re.findall(input)
+
+ def stem(self, word):
+ """
+ This method implements stemming algorithm of the Python version.
+
+ Default implementation does nothing. You should implement this if the
+ language has any stemming rules.
+
+ This class is used to preprocess search words before registering them in
+ the search index. The stemming of the Python version and the JS version
+ (given in the js_stemmer_code attribute) must be compatible.
+ """
+ return word
+
+ def word_filter(self, word):
+ """
+ Return true if the target word should be registered in the search index.
+ This method is called after stemming.
+ """
+ return not (((len(word) < 3) and (12353 < ord(word[0]) < 12436)) or
+ (ord(word[0]) < 256 and (len(word) < 3 or word in self.stopwords or
+ word.isdigit())))
+
+from sphinx.search import en, ja
+
+languages = {
+ 'en': en.SearchEnglish,
+ 'ja': ja.SearchJapanese,
+}
class _JavaScriptIndex(object):
@@ -67,39 +129,21 @@ class _JavaScriptIndex(object):
js_index = _JavaScriptIndex()
-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)
-
-
-
class WordCollector(NodeVisitor):
"""
A special visitor that collects words for the `IndexBuilder`.
"""
- def __init__(self, document):
+ def __init__(self, document, lang):
NodeVisitor.__init__(self, document)
self.found_words = []
+ self.lang = lang
def dispatch_visit(self, node):
if node.__class__ is comment:
raise SkipNode
if node.__class__ is Text:
- self.found_words.extend(word_re.findall(node.astext()))
+ self.found_words.extend(self.lang.split(node.astext()))
class IndexBuilder(object):
@@ -112,9 +156,8 @@ class IndexBuilder(object):
'pickle': pickle
}
- def __init__(self, env):
+ def __init__(self, env, lang, options):
self.env = env
- self._stemmer = Stemmer()
# filename -> title
self._titles = {}
# stemmed word -> set(filenames)
@@ -123,6 +166,8 @@ class IndexBuilder(object):
self._objtypes = {}
# objtype index -> objname (localized)
self._objnames = {}
+ # add language-specific SearchLanguage instance
+ self.lang = languages[lang](options)
def load(self, stream, format):
"""Reconstruct from frozen data."""
@@ -215,17 +260,22 @@ class IndexBuilder(object):
"""Feed a doctree to the index."""
self._titles[filename] = title
- visitor = WordCollector(doctree)
+ visitor = WordCollector(doctree, self.lang)
doctree.walk(visitor)
- def add_term(word, stem=self._stemmer.stem):
+ def add_term(word, stem=self.lang.stem):
word = stem(word)
- if len(word) < 3 or word in stopwords or word.isdigit():
- return
- self._mapping.setdefault(word, set()).add(filename)
+ if self.lang.word_filter(word):
+ self._mapping.setdefault(word, set()).add(filename)
- for word in word_re.findall(title):
+ for word in self.lang.split(title):
add_term(word)
for word in visitor.found_words:
add_term(word)
+
+ def context_for_searchtool(self):
+ return dict(
+ search_language_stemming_code = self.lang.js_stemmer_code,
+ search_language_stop_words = jsdump.dumps(self.lang.stopwords),
+ )
diff --git a/sphinx/search/en.py b/sphinx/search/en.py
new file mode 100644
index 000000000..1f3c3731f
--- /dev/null
+++ b/sphinx/search/en.py
@@ -0,0 +1,244 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.search.en
+ ~~~~~~~~~~~~~~~~
+
+ English search language: includes the JS porter stemmer.
+
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+from sphinx.search import SearchLanguage
+
+try:
+ # http://bitbucket.org/methane/porterstemmer/
+ from porterstemmer import Stemmer as CStemmer
+ CSTEMMER = True
+except ImportError:
+ from sphinx.util.stemmer import PorterStemmer
+ CSTEMMER = False
+
+
+english_stopwords = set("""
+a and are as at
+be but by
+for
+if in into is it
+near no not
+of on or
+such
+that the their then there these they this to
+was will with
+""".split())
+
+js_porter_stemmer = """
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+ var step2list = {
+ ational: 'ate',
+ tional: 'tion',
+ enci: 'ence',
+ anci: 'ance',
+ izer: 'ize',
+ bli: 'ble',
+ alli: 'al',
+ entli: 'ent',
+ eli: 'e',
+ ousli: 'ous',
+ ization: 'ize',
+ ation: 'ate',
+ ator: 'ate',
+ alism: 'al',
+ iveness: 'ive',
+ fulness: 'ful',
+ ousness: 'ous',
+ aliti: 'al',
+ iviti: 'ive',
+ biliti: 'ble',
+ logi: 'log'
+ };
+
+ var step3list = {
+ icate: 'ic',
+ ative: '',
+ alize: 'al',
+ iciti: 'ic',
+ ical: 'ic',
+ ful: '',
+ ness: ''
+ };
+
+ var c = "[^aeiou]"; // consonant
+ var v = "[aeiouy]"; // vowel
+ var C = c + "[^aeiouy]*"; // consonant sequence
+ var V = v + "[aeiou]*"; // vowel sequence
+
+ var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
+ var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
+ var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
+ var s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ this.stemWord = function (w) {
+ var stem;
+ var suffix;
+ var firstch;
+ var origword = w;
+
+ if (w.length < 3)
+ return w;
+
+ var re;
+ var re2;
+ var re3;
+ var re4;
+
+ firstch = w.substr(0,1);
+ if (firstch == "y")
+ w = firstch.toUpperCase() + w.substr(1);
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w))
+ w = w.replace(re,"$1$2");
+ else if (re2.test(w))
+ w = w.replace(re2,"$1$2");
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w))
+ w = w + "e";
+ else if (re3.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ else if (re4.test(w))
+ w = w + "e";
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem))
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|\
+ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step2list[suffix];
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step3list[suffix];
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|\
+iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem))
+ w = stem;
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem))
+ w = stem;
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+ w = stem;
+ }
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+ if (firstch == "y")
+ w = firstch.toLowerCase() + w.substr(1);
+ return w;
+ }
+}
+"""
+
+
+class SearchEnglish(SearchLanguage):
+ lang = 'en'
+ js_stemmer_code = js_porter_stemmer
+ stopwords = english_stopwords
+
+ def init(self, options):
+ 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)
+
+ self.stemmer = Stemmer()
+
+ def stem(self, word):
+ return self.stemmer.stem(word)
diff --git a/sphinx/search/ja.py b/sphinx/search/ja.py
new file mode 100644
index 000000000..0a7d83a1c
--- /dev/null
+++ b/sphinx/search/ja.py
@@ -0,0 +1,273 @@
+# -*- coding: utf-8 -*-
+"""
+ sphinx.search.ja
+ ~~~~~~~~~~~~~~~~
+
+ Japanese search language: includes routine to split words.
+
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ :license: BSD, see LICENSE for details.
+"""
+
+# Python Version of TinySegmenter
+# (http://chasen.org/~taku/software/TinySegmenter/)
+# TinySegmenter is super compact Japanese tokenizer.
+#
+# TinySegmenter was originally developed by Taku Kudo .
+# Python Version was developed by xnights .
+# For details, see http://programming-magic.com/?id=170
+
+import os
+import re
+import sys
+
+try:
+ import MeCab
+ native_module = True
+except ImportError:
+ native_module = False
+
+from sphinx.search import SearchLanguage
+
+
+class MecabBinder(object):
+ def __init__(self, options):
+ self.ctypes_libmecab = None
+ self.ctypes_mecab = None
+ if not native_module:
+ self.init_ctypes(options)
+ else:
+ self.init_native(options)
+ self.dict_encode = options.get('dic_enc', 'utf-8')
+
+ def split(self, input):
+ input2 = input.encode(self.dict_encode)
+ if native_module:
+ result = self.native.parse(input2)
+ else:
+ result = self.ctypes_libmecab.mecab_sparse_tostr(
+ self.ctypes_mecab, input)
+ return result.decode(self.dict_encode).split(' ')
+
+ def init_native(self, options):
+ param = '-Owakati'
+ dict = options.get('dict')
+ if dict:
+ param += ' -d %s' % dict
+ self.native = MeCab.Tagger(param)
+
+ def init_ctypes(self, options):
+ import ctypes.util
+
+ lib = options.get('lib')
+
+ if lib is None:
+ if sys.platform.startswith('win'):
+ libname = 'libmecab.dll'
+ else:
+ libname = 'mecab'
+ libpath = ctypes.util.find_library(libname)
+ elif os.path.basename(lib) == lib:
+ libpath = ctypes.util.find_library(lib)
+ else:
+ libpath = None
+ if os.path.exists(lib):
+ libpath = lib
+ if libpath is None:
+ raise RuntimeError('MeCab dynamic library is not available')
+
+ param = 'mecab -Owakati'
+ dict = options.get('dict')
+ if dict:
+ param += ' -d %s' % dict
+
+ self.ctypes_libmecab = ctypes.CDLL(libpath)
+ self.ctypes_libmecab.mecab_sparse_tostr.restype = ctypes.c_char_p
+ self.ctypes_mecab = self.libmecab.mecab_new2(param)
+
+ def __del__(self):
+ if self.ctypes_libmecab:
+ self.ctypes_libmecab.mecab_destroy(self.ctypes_mecab)
+
+
+class TinySegmenter(object):
+ patterns_ = dict([(re.compile(pattern), value) for pattern, value in {
+ u'[一二三四五六七八九十百千万億兆]': u'M',
+ u'[一-龠々〆ヵヶ]': u'H',
+ u'[ぁ-ん]': u'I',
+ u'[ァ-ヴーア-ン゙ー]': u'K',
+ u'[a-zA-Za-zA-Z]': u'A',
+ u'[0-90-9]': u'N',
+ }.iteritems()])
+ BIAS__ = -332
+ BC1__ = {u'HH':6,u'II':2461,u'KH':406,u'OH':-1378}
+ BC2__ = {u'AA':-3267,u'AI':2744,u'AN':-878,u'HH':-4070,u'HM':-1711,u'HN':4012,u'HO':3761,u'IA':1327,u'IH':-1184,u'II':-1332,u'IK':1721,u'IO':5492,u'KI':3831,u'KK':-8741,u'MH':-3132,u'MK':3334,u'OO':-2920}
+ BC3__ = {u'HH':996,u'HI':626,u'HK':-721,u'HN':-1307,u'HO':-836,u'IH':-301,u'KK':2762,u'MK':1079,u'MM':4034,u'OA':-1652,u'OH':266}
+ BP1__ = {u'BB':295,u'OB':304,u'OO':-125,u'UB':352}
+ BP2__ = {u'BO':60,u'OO':-1762}
+ BQ1__ = {u'BHH':1150,u'BHM':1521,u'BII':-1158,u'BIM':886,u'BMH':1208,u'BNH':449,u'BOH':-91,u'BOO':-2597,u'OHI':451,u'OIH':-296,u'OKA':1851,u'OKH':-1020,u'OKK':904,u'OOO':2965}
+ BQ2__ = {u'BHH':118,u'BHI':-1159,u'BHM':466,u'BIH':-919,u'BKK':-1720,u'BKO':864,u'OHH':-1139,u'OHM':-181,u'OIH':153,u'UHI':-1146}
+ BQ3__ = {u'BHH':-792,u'BHI':2664,u'BII':-299,u'BKI':419,u'BMH':937,u'BMM':8335,u'BNN':998,u'BOH':775,u'OHH':2174,u'OHM':439,u'OII':280,u'OKH':1798,u'OKI':-793,u'OKO':-2242,u'OMH':-2402,u'OOO':11699}
+ BQ4__ = {u'BHH':-3895,u'BIH':3761,u'BII':-4654,u'BIK':1348,u'BKK':-1806,u'BMI':-3385,u'BOO':-12396,u'OAH':926,u'OHH':266,u'OHK':-2036,u'ONN':-973}
+ BW1__ = {u',と':660,u',同':727,u'B1あ':1404,u'B1同':542,u'、と':660,u'、同':727,u'」と':1682,u'あっ':1505,u'いう':1743,u'いっ':-2055,u'いる':672,u'うし':-4817,u'うん':665,u'から':3472,u'がら':600,u'こう':-790,u'こと':2083,u'こん':-1262,u'さら':-4143,u'さん':4573,u'した':2641,u'して':1104,u'すで':-3399,u'そこ':1977,u'それ':-871,u'たち':1122,u'ため':601,u'った':3463,u'つい':-802,u'てい':805,u'てき':1249,u'でき':1127,u'です':3445,u'では':844,u'とい':-4915,u'とみ':1922,u'どこ':3887,u'ない':5713,u'なっ':3015,u'など':7379,u'なん':-1113,u'にし':2468,u'には':1498,u'にも':1671,u'に対':-912,u'の一':-501,u'の中':741,u'ませ':2448,u'まで':1711,u'まま':2600,u'まる':-2155,u'やむ':-1947,u'よっ':-2565,u'れた':2369,u'れで':-913,u'をし':1860,u'を見':731,u'亡く':-1886,u'京都':2558,u'取り':-2784,u'大き':-2604,u'大阪':1497,u'平方':-2314,u'引き':-1336,u'日本':-195,u'本当':-2423,u'毎日':-2113,u'目指':-724,u'B1あ':1404,u'B1同':542,u'」と':1682}
+ BW2__ = {u'..':-11822,u'11':-669,u'――':-5730,u'−−':-13175,u'いう':-1609,u'うか':2490,u'かし':-1350,u'かも':-602,u'から':-7194,u'かれ':4612,u'がい':853,u'がら':-3198,u'きた':1941,u'くな':-1597,u'こと':-8392,u'この':-4193,u'させ':4533,u'され':13168,u'さん':-3977,u'しい':-1819,u'しか':-545,u'した':5078,u'して':972,u'しな':939,u'その':-3744,u'たい':-1253,u'たた':-662,u'ただ':-3857,u'たち':-786,u'たと':1224,u'たは':-939,u'った':4589,u'って':1647,u'っと':-2094,u'てい':6144,u'てき':3640,u'てく':2551,u'ては':-3110,u'ても':-3065,u'でい':2666,u'でき':-1528,u'でし':-3828,u'です':-4761,u'でも':-4203,u'とい':1890,u'とこ':-1746,u'とと':-2279,u'との':720,u'とみ':5168,u'とも':-3941,u'ない':-2488,u'なが':-1313,u'など':-6509,u'なの':2614,u'なん':3099,u'にお':-1615,u'にし':2748,u'にな':2454,u'によ':-7236,u'に対':-14943,u'に従':-4688,u'に関':-11388,u'のか':2093,u'ので':-7059,u'のに':-6041,u'のの':-6125,u'はい':1073,u'はが':-1033,u'はず':-2532,u'ばれ':1813,u'まし':-1316,u'まで':-6621,u'まれ':5409,u'めて':-3153,u'もい':2230,u'もの':-10713,u'らか':-944,u'らし':-1611,u'らに':-1897,u'りし':651,u'りま':1620,u'れた':4270,u'れて':849,u'れば':4114,u'ろう':6067,u'われ':7901,u'を通':-11877,u'んだ':728,u'んな':-4115,u'一人':602,u'一方':-1375,u'一日':970,u'一部':-1051,u'上が':-4479,u'会社':-1116,u'出て':2163,u'分の':-7758,u'同党':970,u'同日':-913,u'大阪':-2471,u'委員':-1250,u'少な':-1050,u'年度':-8669,u'年間':-1626,u'府県':-2363,u'手権':-1982,u'新聞':-4066,u'日新':-722,u'日本':-7068,u'日米':3372,u'曜日':-601,u'朝鮮':-2355,u'本人':-2697,u'東京':-1543,u'然と':-1384,u'社会':-1276,u'立て':-990,u'第に':-1612,u'米国':-4268,u'11':-669}
+ BW3__ = {u'あた':-2194,u'あり':719,u'ある':3846,u'い.':-1185,u'い。':-1185,u'いい':5308,u'いえ':2079,u'いく':3029,u'いた':2056,u'いっ':1883,u'いる':5600,u'いわ':1527,u'うち':1117,u'うと':4798,u'えと':1454,u'か.':2857,u'か。':2857,u'かけ':-743,u'かっ':-4098,u'かに':-669,u'から':6520,u'かり':-2670,u'が,':1816,u'が、':1816,u'がき':-4855,u'がけ':-1127,u'がっ':-913,u'がら':-4977,u'がり':-2064,u'きた':1645,u'けど':1374,u'こと':7397,u'この':1542,u'ころ':-2757,u'さい':-714,u'さを':976,u'し,':1557,u'し、':1557,u'しい':-3714,u'した':3562,u'して':1449,u'しな':2608,u'しま':1200,u'す.':-1310,u'す。':-1310,u'する':6521,u'ず,':3426,u'ず、':3426,u'ずに':841,u'そう':428,u'た.':8875,u'た。':8875,u'たい':-594,u'たの':812,u'たり':-1183,u'たる':-853,u'だ.':4098,u'だ。':4098,u'だっ':1004,u'った':-4748,u'って':300,u'てい':6240,u'てお':855,u'ても':302,u'です':1437,u'でに':-1482,u'では':2295,u'とう':-1387,u'とし':2266,u'との':541,u'とも':-3543,u'どう':4664,u'ない':1796,u'なく':-903,u'など':2135,u'に,':-1021,u'に、':-1021,u'にし':1771,u'にな':1906,u'には':2644,u'の,':-724,u'の、':-724,u'の子':-1000,u'は,':1337,u'は、':1337,u'べき':2181,u'まし':1113,u'ます':6943,u'まっ':-1549,u'まで':6154,u'まれ':-793,u'らし':1479,u'られ':6820,u'るる':3818,u'れ,':854,u'れ、':854,u'れた':1850,u'れて':1375,u'れば':-3246,u'れる':1091,u'われ':-605,u'んだ':606,u'んで':798,u'カ月':990,u'会議':860,u'入り':1232,u'大会':2217,u'始め':1681,u'市':965,u'新聞':-5055,u'日,':974,u'日、':974,u'社会':2024,u'カ月':990}
+ TC1__ = {u'AAA':1093,u'HHH':1029,u'HHM':580,u'HII':998,u'HOH':-390,u'HOM':-331,u'IHI':1169,u'IOH':-142,u'IOI':-1015,u'IOM':467,u'MMH':187,u'OOI':-1832}
+ TC2__ = {u'HHO':2088,u'HII':-1023,u'HMM':-1154,u'IHI':-1965,u'KKH':703,u'OII':-2649}
+ TC3__ = {u'AAA':-294,u'HHH':346,u'HHI':-341,u'HII':-1088,u'HIK':731,u'HOH':-1486,u'IHH':128,u'IHI':-3041,u'IHO':-1935,u'IIH':-825,u'IIM':-1035,u'IOI':-542,u'KHH':-1216,u'KKA':491,u'KKH':-1217,u'KOK':-1009,u'MHH':-2694,u'MHM':-457,u'MHO':123,u'MMH':-471,u'NNH':-1689,u'NNO':662,u'OHO':-3393}
+ TC4__ = {u'HHH':-203,u'HHI':1344,u'HHK':365,u'HHM':-122,u'HHN':182,u'HHO':669,u'HIH':804,u'HII':679,u'HOH':446,u'IHH':695,u'IHO':-2324,u'IIH':321,u'III':1497,u'IIO':656,u'IOO':54,u'KAK':4845,u'KKA':3386,u'KKK':3065,u'MHH':-405,u'MHI':201,u'MMH':-241,u'MMM':661,u'MOM':841}
+ TQ1__ = {u'BHHH':-227,u'BHHI':316,u'BHIH':-132,u'BIHH':60,u'BIII':1595,u'BNHH':-744,u'BOHH':225,u'BOOO':-908,u'OAKK':482,u'OHHH':281,u'OHIH':249,u'OIHI':200,u'OIIH':-68}
+ TQ2__ = {u'BIHH':-1401,u'BIII':-1033,u'BKAK':-543,u'BOOO':-5591}
+ TQ3__ = {u'BHHH':478,u'BHHM':-1073,u'BHIH':222,u'BHII':-504,u'BIIH':-116,u'BIII':-105,u'BMHI':-863,u'BMHM':-464,u'BOMH':620,u'OHHH':346,u'OHHI':1729,u'OHII':997,u'OHMH':481,u'OIHH':623,u'OIIH':1344,u'OKAK':2792,u'OKHH':587,u'OKKA':679,u'OOHH':110,u'OOII':-685}
+ TQ4__ = {u'BHHH':-721,u'BHHM':-3604,u'BHII':-966,u'BIIH':-607,u'BIII':-2181,u'OAAA':-2763,u'OAKK':180,u'OHHH':-294,u'OHHI':2446,u'OHHO':480,u'OHIH':-1573,u'OIHH':1935,u'OIHI':-493,u'OIIH':626,u'OIII':-4007,u'OKAK':-8156}
+ TW1__ = {u'につい':-4681,u'東京都':2026}
+ TW2__ = {u'ある程':-2049,u'いった':-1256,u'ころが':-2434,u'しょう':3873,u'その後':-4430,u'だって':-1049,u'ていた':1833,u'として':-4657,u'ともに':-4517,u'もので':1882,u'一気に':-792,u'初めて':-1512,u'同時に':-8097,u'大きな':-1255,u'対して':-2721,u'社会党':-3216}
+ TW3__ = {u'いただ':-1734,u'してい':1314,u'として':-4314,u'につい':-5483,u'にとっ':-5989,u'に当た':-6247,u'ので,':-727,u'ので、':-727,u'のもの':-600,u'れから':-3752,u'十二月':-2287}
+ TW4__ = {u'いう.':8576,u'いう。':8576,u'からな':-2348,u'してい':2958,u'たが,':1516,u'たが、':1516,u'ている':1538,u'という':1349,u'ました':5543,u'ません':1097,u'ようと':-4258,u'よると':5865}
+ UC1__ = {u'A':484,u'K':93,u'M':645,u'O':-505}
+ UC2__ = {u'A':819,u'H':1059,u'I':409,u'M':3987,u'N':5775,u'O':646}
+ UC3__ = {u'A':-1370,u'I':2311}
+ UC4__ = {u'A':-2643,u'H':1809,u'I':-1032,u'K':-3450,u'M':3565,u'N':3876,u'O':6646}
+ UC5__ = {u'H':313,u'I':-1238,u'K':-799,u'M':539,u'O':-831}
+ UC6__ = {u'H':-506,u'I':-253,u'K':87,u'M':247,u'O':-387}
+ UP1__ = {u'O':-214}
+ UP2__ = {u'B':69,u'O':935}
+ UP3__ = {u'B':189}
+ UQ1__ = {u'BH':21,u'BI':-12,u'BK':-99,u'BN':142,u'BO':-56,u'OH':-95,u'OI':477,u'OK':410,u'OO':-2422}
+ UQ2__ = {u'BH':216,u'BI':113,u'OK':1759}
+ UQ3__ = {u'BA':-479,u'BH':42,u'BI':1913,u'BK':-7198,u'BM':3160,u'BN':6427,u'BO':14761,u'OI':-827,u'ON':-3212}
+ UW1__ = {u',':156,u'、':156,u'「':-463,u'あ':-941,u'う':-127,u'が':-553,u'き':121,u'こ':505,u'で':-201,u'と':-547,u'ど':-123,u'に':-789,u'の':-185,u'は':-847,u'も':-466,u'や':-470,u'よ':182,u'ら':-292,u'り':208,u'れ':169,u'を':-446,u'ん':-137,u'・':-135,u'主':-402,u'京':-268,u'区':-912,u'午':871,u'国':-460,u'大':561,u'委':729,u'市':-411,u'日':-141,u'理':361,u'生':-408,u'県':-386,u'都':-718,u'「':-463,u'・':-135}
+ UW2__ = {u',':-829,u'、':-829,u'〇':892,u'「':-645,u'」':3145,u'あ':-538,u'い':505,u'う':134,u'お':-502,u'か':1454,u'が':-856,u'く':-412,u'こ':1141,u'さ':878,u'ざ':540,u'し':1529,u'す':-675,u'せ':300,u'そ':-1011,u'た':188,u'だ':1837,u'つ':-949,u'て':-291,u'で':-268,u'と':-981,u'ど':1273,u'な':1063,u'に':-1764,u'の':130,u'は':-409,u'ひ':-1273,u'べ':1261,u'ま':600,u'も':-1263,u'や':-402,u'よ':1639,u'り':-579,u'る':-694,u'れ':571,u'を':-2516,u'ん':2095,u'ア':-587,u'カ':306,u'キ':568,u'ッ':831,u'三':-758,u'不':-2150,u'世':-302,u'中':-968,u'主':-861,u'事':492,u'人':-123,u'会':978,u'保':362,u'入':548,u'初':-3025,u'副':-1566,u'北':-3414,u'区':-422,u'大':-1769,u'天':-865,u'太':-483,u'子':-1519,u'学':760,u'実':1023,u'小':-2009,u'市':-813,u'年':-1060,u'強':1067,u'手':-1519,u'揺':-1033,u'政':1522,u'文':-1355,u'新':-1682,u'日':-1815,u'明':-1462,u'最':-630,u'朝':-1843,u'本':-1650,u'東':-931,u'果':-665,u'次':-2378,u'民':-180,u'気':-1740,u'理':752,u'発':529,u'目':-1584,u'相':-242,u'県':-1165,u'立':-763,u'第':810,u'米':509,u'自':-1353,u'行':838,u'西':-744,u'見':-3874,u'調':1010,u'議':1198,u'込':3041,u'開':1758,u'間':-1257,u'「':-645,u'」':3145,u'ッ':831,u'ア':-587,u'カ':306,u'キ':568}
+ UW3__ = {u',':4889,u'1':-800,u'−':-1723,u'、':4889,u'々':-2311,u'〇':5827,u'」':2670,u'〓':-3573,u'あ':-2696,u'い':1006,u'う':2342,u'え':1983,u'お':-4864,u'か':-1163,u'が':3271,u'く':1004,u'け':388,u'げ':401,u'こ':-3552,u'ご':-3116,u'さ':-1058,u'し':-395,u'す':584,u'せ':3685,u'そ':-5228,u'た':842,u'ち':-521,u'っ':-1444,u'つ':-1081,u'て':6167,u'で':2318,u'と':1691,u'ど':-899,u'な':-2788,u'に':2745,u'の':4056,u'は':4555,u'ひ':-2171,u'ふ':-1798,u'へ':1199,u'ほ':-5516,u'ま':-4384,u'み':-120,u'め':1205,u'も':2323,u'や':-788,u'よ':-202,u'ら':727,u'り':649,u'る':5905,u'れ':2773,u'わ':-1207,u'を':6620,u'ん':-518,u'ア':551,u'グ':1319,u'ス':874,u'ッ':-1350,u'ト':521,u'ム':1109,u'ル':1591,u'ロ':2201,u'ン':278,u'・':-3794,u'一':-1619,u'下':-1759,u'世':-2087,u'両':3815,u'中':653,u'主':-758,u'予':-1193,u'二':974,u'人':2742,u'今':792,u'他':1889,u'以':-1368,u'低':811,u'何':4265,u'作':-361,u'保':-2439,u'元':4858,u'党':3593,u'全':1574,u'公':-3030,u'六':755,u'共':-1880,u'円':5807,u'再':3095,u'分':457,u'初':2475,u'別':1129,u'前':2286,u'副':4437,u'力':365,u'動':-949,u'務':-1872,u'化':1327,u'北':-1038,u'区':4646,u'千':-2309,u'午':-783,u'協':-1006,u'口':483,u'右':1233,u'各':3588,u'合':-241,u'同':3906,u'和':-837,u'員':4513,u'国':642,u'型':1389,u'場':1219,u'外':-241,u'妻':2016,u'学':-1356,u'安':-423,u'実':-1008,u'家':1078,u'小':-513,u'少':-3102,u'州':1155,u'市':3197,u'平':-1804,u'年':2416,u'広':-1030,u'府':1605,u'度':1452,u'建':-2352,u'当':-3885,u'得':1905,u'思':-1291,u'性':1822,u'戸':-488,u'指':-3973,u'政':-2013,u'教':-1479,u'数':3222,u'文':-1489,u'新':1764,u'日':2099,u'旧':5792,u'昨':-661,u'時':-1248,u'曜':-951,u'最':-937,u'月':4125,u'期':360,u'李':3094,u'村':364,u'東':-805,u'核':5156,u'森':2438,u'業':484,u'氏':2613,u'民':-1694,u'決':-1073,u'法':1868,u'海':-495,u'無':979,u'物':461,u'特':-3850,u'生':-273,u'用':914,u'町':1215,u'的':7313,u'直':-1835,u'省':792,u'県':6293,u'知':-1528,u'私':4231,u'税':401,u'立':-960,u'第':1201,u'米':7767,u'系':3066,u'約':3663,u'級':1384,u'統':-4229,u'総':1163,u'線':1255,u'者':6457,u'能':725,u'自':-2869,u'英':785,u'見':1044,u'調':-562,u'財':-733,u'費':1777,u'車':1835,u'軍':1375,u'込':-1504,u'通':-1136,u'選':-681,u'郎':1026,u'郡':4404,u'部':1200,u'金':2163,u'長':421,u'開':-1432,u'間':1302,u'関':-1282,u'雨':2009,u'電':-1045,u'非':2066,u'駅':1620,u'1':-800,u'」':2670,u'・':-3794,u'ッ':-1350,u'ア':551,u'グ':1319,u'ス':874,u'ト':521,u'ム':1109,u'ル':1591,u'ロ':2201,u'ン':278}
+ UW4__ = {u',':3930,u'.':3508,u'―':-4841,u'、':3930,u'。':3508,u'〇':4999,u'「':1895,u'」':3798,u'〓':-5156,u'あ':4752,u'い':-3435,u'う':-640,u'え':-2514,u'お':2405,u'か':530,u'が':6006,u'き':-4482,u'ぎ':-3821,u'く':-3788,u'け':-4376,u'げ':-4734,u'こ':2255,u'ご':1979,u'さ':2864,u'し':-843,u'じ':-2506,u'す':-731,u'ず':1251,u'せ':181,u'そ':4091,u'た':5034,u'だ':5408,u'ち':-3654,u'っ':-5882,u'つ':-1659,u'て':3994,u'で':7410,u'と':4547,u'な':5433,u'に':6499,u'ぬ':1853,u'ね':1413,u'の':7396,u'は':8578,u'ば':1940,u'ひ':4249,u'び':-4134,u'ふ':1345,u'へ':6665,u'べ':-744,u'ほ':1464,u'ま':1051,u'み':-2082,u'む':-882,u'め':-5046,u'も':4169,u'ゃ':-2666,u'や':2795,u'ょ':-1544,u'よ':3351,u'ら':-2922,u'り':-9726,u'る':-14896,u'れ':-2613,u'ろ':-4570,u'わ':-1783,u'を':13150,u'ん':-2352,u'カ':2145,u'コ':1789,u'セ':1287,u'ッ':-724,u'ト':-403,u'メ':-1635,u'ラ':-881,u'リ':-541,u'ル':-856,u'ン':-3637,u'・':-4371,u'ー':-11870,u'一':-2069,u'中':2210,u'予':782,u'事':-190,u'井':-1768,u'人':1036,u'以':544,u'会':950,u'体':-1286,u'作':530,u'側':4292,u'先':601,u'党':-2006,u'共':-1212,u'内':584,u'円':788,u'初':1347,u'前':1623,u'副':3879,u'力':-302,u'動':-740,u'務':-2715,u'化':776,u'区':4517,u'協':1013,u'参':1555,u'合':-1834,u'和':-681,u'員':-910,u'器':-851,u'回':1500,u'国':-619,u'園':-1200,u'地':866,u'場':-1410,u'塁':-2094,u'士':-1413,u'多':1067,u'大':571,u'子':-4802,u'学':-1397,u'定':-1057,u'寺':-809,u'小':1910,u'屋':-1328,u'山':-1500,u'島':-2056,u'川':-2667,u'市':2771,u'年':374,u'庁':-4556,u'後':456,u'性':553,u'感':916,u'所':-1566,u'支':856,u'改':787,u'政':2182,u'教':704,u'文':522,u'方':-856,u'日':1798,u'時':1829,u'最':845,u'月':-9066,u'木':-485,u'来':-442,u'校':-360,u'業':-1043,u'氏':5388,u'民':-2716,u'気':-910,u'沢':-939,u'済':-543,u'物':-735,u'率':672,u'球':-1267,u'生':-1286,u'産':-1101,u'田':-2900,u'町':1826,u'的':2586,u'目':922,u'省':-3485,u'県':2997,u'空':-867,u'立':-2112,u'第':788,u'米':2937,u'系':786,u'約':2171,u'経':1146,u'統':-1169,u'総':940,u'線':-994,u'署':749,u'者':2145,u'能':-730,u'般':-852,u'行':-792,u'規':792,u'警':-1184,u'議':-244,u'谷':-1000,u'賞':730,u'車':-1481,u'軍':1158,u'輪':-1433,u'込':-3370,u'近':929,u'道':-1291,u'選':2596,u'郎':-4866,u'都':1192,u'野':-1100,u'銀':-2213,u'長':357,u'間':-2344,u'院':-2297,u'際':-2604,u'電':-878,u'領':-1659,u'題':-792,u'館':-1984,u'首':1749,u'高':2120,u'「':1895,u'」':3798,u'・':-4371,u'ッ':-724,u'ー':-11870,u'カ':2145,u'コ':1789,u'セ':1287,u'ト':-403,u'メ':-1635,u'ラ':-881,u'リ':-541,u'ル':-856,u'ン':-3637}
+ UW5__ = {u',':465,u'.':-299,u'1':-514,u'E2':-32768,u']':-2762,u'、':465,u'。':-299,u'「':363,u'あ':1655,u'い':331,u'う':-503,u'え':1199,u'お':527,u'か':647,u'が':-421,u'き':1624,u'ぎ':1971,u'く':312,u'げ':-983,u'さ':-1537,u'し':-1371,u'す':-852,u'だ':-1186,u'ち':1093,u'っ':52,u'つ':921,u'て':-18,u'で':-850,u'と':-127,u'ど':1682,u'な':-787,u'に':-1224,u'の':-635,u'は':-578,u'べ':1001,u'み':502,u'め':865,u'ゃ':3350,u'ょ':854,u'り':-208,u'る':429,u'れ':504,u'わ':419,u'を':-1264,u'ん':327,u'イ':241,u'ル':451,u'ン':-343,u'中':-871,u'京':722,u'会':-1153,u'党':-654,u'務':3519,u'区':-901,u'告':848,u'員':2104,u'大':-1296,u'学':-548,u'定':1785,u'嵐':-1304,u'市':-2991,u'席':921,u'年':1763,u'思':872,u'所':-814,u'挙':1618,u'新':-1682,u'日':218,u'月':-4353,u'査':932,u'格':1356,u'機':-1508,u'氏':-1347,u'田':240,u'町':-3912,u'的':-3149,u'相':1319,u'省':-1052,u'県':-4003,u'研':-997,u'社':-278,u'空':-813,u'統':1955,u'者':-2233,u'表':663,u'語':-1073,u'議':1219,u'選':-1018,u'郎':-368,u'長':786,u'間':1191,u'題':2368,u'館':-689,u'1':-514,u'E2':-32768,u'「':363,u'イ':241,u'ル':451,u'ン':-343}
+ UW6__ = {u',':227,u'.':808,u'1':-270,u'E1':306,u'、':227,u'。':808,u'あ':-307,u'う':189,u'か':241,u'が':-73,u'く':-121,u'こ':-200,u'じ':1782,u'す':383,u'た':-428,u'っ':573,u'て':-1014,u'で':101,u'と':-105,u'な':-253,u'に':-149,u'の':-417,u'は':-236,u'も':-206,u'り':187,u'る':-135,u'を':195,u'ル':-673,u'ン':-496,u'一':-277,u'中':201,u'件':-800,u'会':624,u'前':302,u'区':1792,u'員':-1212,u'委':798,u'学':-960,u'市':887,u'広':-695,u'後':535,u'業':-697,u'相':753,u'社':-507,u'福':974,u'空':-822,u'者':1811,u'連':463,u'郎':1082,u'1':-270,u'E1':306,u'ル':-673,u'ン':-496}
+
+ # ctype_
+ def ctype_(self, char):
+ for pattern, value in self.patterns_.iteritems():
+ if pattern.match(char):
+ return value
+ return u'O'
+ # ts_
+ def ts_(self, dict, key):
+ if key in dict:
+ return dict[key]
+ return 0
+
+ # segment
+ def split(self, input):
+ if not input:
+ return []
+
+ result = []
+ seg = [u'B3',u'B2',u'B1']
+ ctype = [u'O',u'O',u'O']
+ for t in input:
+ seg.append(t)
+ ctype.append(self.ctype_(t))
+ seg.append(u'E1')
+ seg.append(u'E2')
+ seg.append(u'E3')
+ ctype.append(u'O')
+ ctype.append(u'O')
+ ctype.append(u'O')
+ word = seg[3]
+ p1 = u'U'
+ p2 = u'U'
+ p3 = u'U'
+
+ for i in range(4, len(seg) - 3):
+ score = self.BIAS__
+ w1 = seg[i-3]
+ w2 = seg[i-2]
+ w3 = seg[i-1]
+ w4 = seg[i]
+ w5 = seg[i+1]
+ w6 = seg[i+2]
+ c1 = ctype[i-3]
+ c2 = ctype[i-2]
+ c3 = ctype[i-1]
+ c4 = ctype[i]
+ c5 = ctype[i+1]
+ c6 = ctype[i+2]
+ score += self.ts_(self.UP1__, p1)
+ score += self.ts_(self.UP2__, p2)
+ score += self.ts_(self.UP3__, p3)
+ score += self.ts_(self.BP1__, p1 + p2)
+ score += self.ts_(self.BP2__, p2 + p3)
+ score += self.ts_(self.UW1__, w1)
+ score += self.ts_(self.UW2__, w2)
+ score += self.ts_(self.UW3__, w3)
+ score += self.ts_(self.UW4__, w4)
+ score += self.ts_(self.UW5__, w5)
+ score += self.ts_(self.UW6__, w6)
+ score += self.ts_(self.BW1__, w2 + w3)
+ score += self.ts_(self.BW2__, w3 + w4)
+ score += self.ts_(self.BW3__, w4 + w5)
+ score += self.ts_(self.TW1__, w1 + w2 + w3)
+ score += self.ts_(self.TW2__, w2 + w3 + w4)
+ score += self.ts_(self.TW3__, w3 + w4 + w5)
+ score += self.ts_(self.TW4__, w4 + w5 + w6)
+ score += self.ts_(self.UC1__, c1)
+ score += self.ts_(self.UC2__, c2)
+ score += self.ts_(self.UC3__, c3)
+ score += self.ts_(self.UC4__, c4)
+ score += self.ts_(self.UC5__, c5)
+ score += self.ts_(self.UC6__, c6)
+ score += self.ts_(self.BC1__, c2 + c3)
+ score += self.ts_(self.BC2__, c3 + c4)
+ score += self.ts_(self.BC3__, c4 + c5)
+ score += self.ts_(self.TC1__, c1 + c2 + c3)
+ score += self.ts_(self.TC2__, c2 + c3 + c4)
+ score += self.ts_(self.TC3__, c3 + c4 + c5)
+ score += self.ts_(self.TC4__, c4 + c5 + c6)
+# score += self.ts_(self.TC5__, c4 + c5 + c6)
+ score += self.ts_(self.UQ1__, p1 + c1)
+ score += self.ts_(self.UQ2__, p2 + c2)
+ score += self.ts_(self.UQ1__, p3 + c3)
+ score += self.ts_(self.BQ1__, p2 + c2 + c3)
+ score += self.ts_(self.BQ2__, p2 + c3 + c4)
+ score += self.ts_(self.BQ3__, p3 + c2 + c3)
+ score += self.ts_(self.BQ4__, p3 + c3 + c4)
+ score += self.ts_(self.TQ1__, p2 + c1 + c2 + c3)
+ score += self.ts_(self.TQ2__, p2 + c2 + c3 + c4)
+ score += self.ts_(self.TQ3__, p3 + c1 + c2 + c3)
+ score += self.ts_(self.TQ4__, p3 + c2 + c3 + c4)
+ p = u'O'
+ if score > 0:
+ result.append(word)
+ word = u''
+ p = u'B'
+ p1 = p2
+ p2 = p3
+ p3 = p
+ word += seg[i]
+
+ result.append(word)
+ return result
+
+
+class SearchJapanese(SearchLanguage):
+ """
+ Japanese search implementation: uses no stemmer, but word splitting is quite
+ complicated.
+ """
+ lang = 'ja'
+
+ def init(self, options):
+ type = options.get('type', 'default')
+ if type not in ('mecab', 'default'):
+ raise ValueError(("Japanese tokenizer's type should be 'mecab'"
+ " or 'default'"))
+ self.libmecab = None
+ if type == 'mecab':
+ self.splitter = MecabBinder(options)
+ else:
+ self.splitter = TinySegmenter()
+
+ def split(self, input):
+ return self.splitter.split(input)
+
+ def word_filter(self, stemmed_word):
+ return len(stemmed_word) > 1
diff --git a/sphinx/setup_command.py b/sphinx/setup_command.py
index e2d83bc6c..ebbcf27b8 100644
--- a/sphinx/setup_command.py
+++ b/sphinx/setup_command.py
@@ -8,7 +8,7 @@
:author: Sebastian Wiesner
:contact: basti.wiesner@gmx.net
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
@@ -22,7 +22,8 @@ from sphinx.util.console import darkred, nocolor, color_terminal
class BuildDoc(Command):
- """Distutils command to build Sphinx documentation.
+ """
+ Distutils command to build Sphinx documentation.
The Sphinx build can then be triggered from distutils, and some Sphinx
options can be set in ``setup.py`` or ``setup.cfg`` instead of Sphinx own
@@ -35,13 +36,13 @@ class BuildDoc(Command):
cmdclass = {'build_sphinx': BuildDoc}
name = 'My project'
- version = 1.2
- release = 1.2.0
+ version = '1.2'
+ release = '1.2.0'
setup(
name=name,
author='Bernard Montgomery',
version=release,
- cmdclass={'build_sphinx': BuildDoc},
+ cmdclass=cmdclass,
# these are optional and override conf.py settings
command_options={
'build_sphinx': {
@@ -110,7 +111,6 @@ class BuildDoc(Command):
build = self.get_finalized_command('build')
self.build_dir = os.path.join(build.build_base, 'sphinx')
self.mkpath(self.build_dir)
- self.ensure_dirname('build_dir')
self.doctree_dir = os.path.join(self.build_dir, 'doctrees')
self.mkpath(self.doctree_dir)
self.builder_target_dir = os.path.join(self.build_dir, self.builder)
@@ -137,14 +137,11 @@ class BuildDoc(Command):
freshenv=self.fresh_env)
try:
- if self.all_files:
- app.builder.build_all()
- else:
- app.builder.build_update()
+ app.build(force_all=self.all_files)
except Exception, err:
from docutils.utils import SystemMessage
if isinstance(err, SystemMessage):
- sys.stderr, darkred('reST markup error:')
+ print >>sys.stderr, darkred('reST markup error:')
print >>sys.stderr, err.args[0].encode('ascii',
'backslashreplace')
else:
diff --git a/sphinx/texinputs/Makefile b/sphinx/texinputs/Makefile
index d5a73f5bb..f219a2fe6 100644
--- a/sphinx/texinputs/Makefile
+++ b/sphinx/texinputs/Makefile
@@ -14,6 +14,15 @@ all-pdf: $(ALLPDF)
all-dvi: $(ALLDVI)
all-ps: all-dvi
for f in *.dvi; do dvips $$f; done
+all-pdf-ja: $(wildcard *.tex)
+ ebb $(wildcard *.pdf *.png *.gif *.jpeg)
+ platex -kanji=utf8 $(LATEXOPTS) '$<'
+ platex -kanji=utf8 $(LATEXOPTS) '$<'
+ platex -kanji=utf8 $(LATEXOPTS) '$<'
+ -mendex -U -f -d '$(basename $<).dic' -s python.ist '$(basename $<).idx'
+ platex -kanji=utf8 $(LATEXOPTS) '$<'
+ platex -kanji=utf8 $(LATEXOPTS) '$<'
+ dvipdfmx '$(basename $<).dvi'
zip: all-$(FMT)
mkdir $(ARCHIVEPREFIX)docs-$(FMT)
@@ -49,8 +58,7 @@ bz2: tar
pdflatex $(LATEXOPTS) '$<'
clean:
- rm -f *.pdf *.dvi *.ps
- rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla
+ rm -f *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla
.PHONY: all all-pdf all-dvi all-ps clean
diff --git a/sphinx/texinputs/sphinx.sty b/sphinx/texinputs/sphinx.sty
index be8a6c15d..21a3d8941 100644
--- a/sphinx/texinputs/sphinx.sty
+++ b/sphinx/texinputs/sphinx.sty
@@ -16,6 +16,7 @@
\RequirePackage{amsmath} % for \text
\RequirePackage{makeidx}
\RequirePackage{framed}
+\RequirePackage{ifthen}
\RequirePackage{color}
% For highlighted code.
\RequirePackage{fancyvrb}
@@ -137,15 +138,11 @@
% Play with vspace to be able to keep the indentation.
\newlength\distancetoright
-\newlength\leftsidespace
\def\mycolorbox#1{%
- \setlength\leftsidespace{\@totalleftmargin}%
\setlength\distancetoright{\linewidth}%
\advance\distancetoright -\@totalleftmargin %
- \noindent\hspace*{\@totalleftmargin}%
\fcolorbox{VerbatimBorderColor}{VerbatimColor}{%
\begin{minipage}{\distancetoright}%
- \noindent\hspace*{-\leftsidespace}%
#1
\end{minipage}%
}%
@@ -178,23 +175,6 @@
}
-% Index-entry generation support.
-%
-
-% Command to generate two index entries (using subentries)
-\newcommand{\indexii}[2]{\index{#1!#2}\index{#2!#1}}
-
-% And three entries (using only one level of subentries)
-\newcommand{\indexiii}[3]{\index{#1!#2 #3}\index{#2!#3, #1}\index{#3!#1 #2}}
-
-% And four (again, using only one level of subentries)
-\newcommand{\indexiv}[4]{
-\index{#1!#2 #3 #4}
-\index{#2!#3 #4, #1}
-\index{#3!#4, #1 #2}
-\index{#4!#1 #2 #3}
-}
-
% \moduleauthor{name}{email}
\newcommand{\moduleauthor}[2]{}
@@ -209,7 +189,7 @@
{\py@TitleColor\thesubsection}{0.5em}{\py@TitleColor}{\py@NormalColor}
\titleformat{\subsubsection}{\py@HeaderFamily}%
{\py@TitleColor\thesubsubsection}{0.5em}{\py@TitleColor}{\py@NormalColor}
-\titleformat{\paragraph}{\large\py@HeaderFamily}%
+\titleformat{\paragraph}{\small\py@HeaderFamily}%
{\py@TitleColor}{0em}{\py@TitleColor}{\py@NormalColor}
% {fulllineitems} is the main environment for object descriptions.
@@ -240,21 +220,12 @@
\addtolength{\py@argswidth}{\linewidth}%
\item[#1\code{(}\py@sigparams{#2}{#3}]}
-% This version is being checked in for the historical record; it shows
-% how I've managed to get some aspects of this to work. It will not
-% be used in practice, so a subsequent revision will change things
-% again. This version has problems, but shows how to do something
-% that proved more tedious than I'd expected, so I don't want to lose
-% the example completely.
+% Production lists
%
-\newcommand{\grammartoken}[1]{\texttt{#1}}
-\newenvironment{productionlist}[1][\@undefined]{
- \def\optional##1{{\Large[}##1{\Large]}}
- \def\production##1##2{\hypertarget{grammar-token-##1}{}%
- \code{##1}&::=&\code{##2}\\}
- \def\productioncont##1{& &\code{##1}\\}
- \def\token##1{##1}
- \let\grammartoken=\token
+\newenvironment{productionlist}{
+% \def\optional##1{{\Large[}##1{\Large]}}
+ \def\production##1##2{\\\code{##1}&::=&\code{##2}}
+ \def\productioncont##1{\\& &\code{##1}}
\parindent=2em
\indent
\begin{tabular}{lcl}
@@ -268,11 +239,11 @@
\newcommand{\py@heavybox}{
\setlength{\fboxrule}{1pt}
- \setlength{\fboxsep}{7pt}
+ \setlength{\fboxsep}{6pt}
\setlength{\py@noticelength}{\linewidth}
\addtolength{\py@noticelength}{-2\fboxsep}
\addtolength{\py@noticelength}{-2\fboxrule}
- \setlength{\shadowsize}{3pt}
+ %\setlength{\shadowsize}{3pt}
\Sbox
\minipage{\py@noticelength}
}
@@ -282,15 +253,26 @@
\fbox{\TheSbox}
}
+\newcommand{\py@lightbox}{{%
+ \setlength\parskip{0pt}\par
+ \rule[0ex]{\linewidth}{0.5pt}%
+ \par\vspace{-0.5ex}%
+ }}
+\newcommand{\py@endlightbox}{{%
+ \setlength{\parskip}{0pt}%
+ \par\rule[0.5ex]{\linewidth}{0.5pt}%
+ \par\vspace{-0.5ex}%
+ }}
+
% Some are quite plain:
-\newcommand{\py@noticestart@note}{}
-\newcommand{\py@noticeend@note}{}
-\newcommand{\py@noticestart@hint}{}
-\newcommand{\py@noticeend@hint}{}
-\newcommand{\py@noticestart@important}{}
-\newcommand{\py@noticeend@important}{}
-\newcommand{\py@noticestart@tip}{}
-\newcommand{\py@noticeend@tip}{}
+\newcommand{\py@noticestart@note}{\py@lightbox}
+\newcommand{\py@noticeend@note}{\py@endlightbox}
+\newcommand{\py@noticestart@hint}{\py@lightbox}
+\newcommand{\py@noticeend@hint}{\py@endlightbox}
+\newcommand{\py@noticestart@important}{\py@lightbox}
+\newcommand{\py@noticeend@important}{\py@endlightbox}
+\newcommand{\py@noticestart@tip}{\py@lightbox}
+\newcommand{\py@noticeend@tip}{\py@endlightbox}
% Others gets more visible distinction:
\newcommand{\py@noticestart@warning}{\py@heavybox}
@@ -307,7 +289,7 @@
\newenvironment{notice}[2]{
\def\py@noticetype{#1}
\csname py@noticestart@#1\endcsname
- \par\strong{#2}
+ \strong{#2}
}{\csname py@noticeend@\py@noticetype\endcsname}
% Allow the release number to be specified independently of the
@@ -446,6 +428,10 @@
linkcolor=InnerLinkColor,filecolor=OuterLinkColor,
menucolor=OuterLinkColor,urlcolor=OuterLinkColor,
citecolor=InnerLinkColor]{hyperref}
+% Fix anchor placement for figures with captions.
+% (Note: we don't use a package option here; instead, we give an explicit
+% \capstart for figures that actually have a caption.)
+\RequirePackage{hypcap}
% From docutils.writers.latex2e
\providecommand{\DUspan}[2]{%
@@ -458,3 +444,21 @@
{#2}% node content
}% close "span"
}
+
+\providecommand*{\DUprovidelength}[2]{
+ \ifthenelse{\isundefined{#1}}{\newlength{#1}\setlength{#1}{#2}}{}
+}
+
+\DUprovidelength{\DUlineblockindent}{2.5em}
+\ifthenelse{\isundefined{\DUlineblock}}{
+ \newenvironment{DUlineblock}[1]{%
+ \list{}{\setlength{\partopsep}{\parskip}
+ \addtolength{\partopsep}{\baselineskip}
+ \setlength{\topsep}{0pt}
+ \setlength{\itemsep}{0.15\baselineskip}
+ \setlength{\parsep}{0pt}
+ \setlength{\leftmargin}{#1}}
+ \raggedright
+ }
+ {\endlist}
+}{}
diff --git a/sphinx/themes/agogo/layout.html b/sphinx/themes/agogo/layout.html
index 4a7e263ba..6668a7f67 100644
--- a/sphinx/themes/agogo/layout.html
+++ b/sphinx/themes/agogo/layout.html
@@ -5,7 +5,7 @@
Sphinx layout template for the agogo theme, originally written
by Andi Albrecht.
- :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
#}
{% extends "basic/layout.html" %}
@@ -22,7 +22,7 @@
{%- endblock %}
- {%- for rellink in rellinks %}
+ {%- for rellink in rellinks|reverse %}
{{ rellink[3] }}
{%- if not loop.last %}{{ reldelim2 }}{% endif %}
@@ -67,7 +67,7 @@
\ + Sort by:\ + best rated\ + newest\ + oldest\ +
\ +\ +
Add a comment\ + (markup):
\ +