merge heads

This commit is contained in:
Takayuki Shimizukawa 2012-12-10 10:18:32 +09:00
commit 3f9598394b
156 changed files with 2259 additions and 472 deletions

7
.travis.yml Normal file
View File

@ -0,0 +1,7 @@
language: python
python:
- "2.7"
- "3.3"
script: make test
install:
- python setup.py -q install

49
CHANGES
View File

@ -1,6 +1,13 @@
Release 1.2 (in development)
============================
* PR#25: In inheritance diagrams, the first line of the class docstring
is now the tooltip for the class.
* PR#47: Added :mod:`sphinx.ext.linkcode` extension.
* PR#75: Added ``--follow-links`` option to sphinx-apidoc.
* PR#45: The linkcheck builder now checks ``#anchor``\ s for existence.
* PR#28: Added Hungarian translation.
@ -9,11 +16,49 @@ Release 1.2 (in development)
* PR#54: Added Norwegian bokmaal translation.
* PR#52: ``special_members`` flag to autodoc now behaves like ``members``.
* #955: Fix i18n transformation.
* Handle duplicate domain indices in texinfo.
* PR#74: Fix some Russian translation.
* Update to jQuery 1.7.1 and Underscore.js 1.3.1.
* #1015: Stop overriding jQuery contains() in the JavaScript.
Release 1.1.4 (in development)
==============================
* #1028: Fix line block output in the text builder.
* #1018: Fix "container" directive handling in the text builder.
* #1012: Update Estonian translation.
* #1010: Make pngmath images transparent by default; IE7+ should handle it.
* #440: Fix coarse timestamp resolution in some filesystem generate wrong outdated file-list.
* #1008: Fix test failures with Python 3.3.
* #1029: Fix intersphinx_mapping values are not stable if mapping have plural key/value set with Python 3.3.
* #920: Rescue PIL packaging issue that allow import Image without PIL namespace. Thanks to Marc Schlaich.
* #1024: Improve Makefile/make.bat error message if Sphinx is not found. Thanks to anatoly techtonik.
* #1037: Fix typos in Polish translation. Thanks to Jakub Wilk.
* #1038: Fix cpp domain parser fails to parse C+11 "static constexpr" declarations. Thanks to Jakub Wilk.
* #1043: Fix sphinx-quickstart asks again and again Y|N because input() return value with extra '\r' on Python-3.2.0 + Windows. Thanks to Régis Décamps.
* #1041: Fix cpp domain parser fails to parse a const type with a modifier.
* PR#88: Added the "Sphinx Developer's Guide" (:file:`doc/devguide.rst`)
which outlines the basic development process of the Sphinx project.
* Added the Docutils-native XML and pseudo-XML builders. See
:class:`XMLBuilder` and :class:`PseudoXMLBuilder`.
Release 1.1.3 (Mar 10, 2012)

View File

@ -4,7 +4,7 @@ Projects using Sphinx
This is an (incomplete) alphabetic list of projects that use Sphinx or
are experimenting with using it for their documentation. If you like to
be included, please mail to `the Google group
<http://groups.google.com/group/sphinx-dev>`_.
<http://groups.google.com/group/sphinx-users>`_.
I've grouped the list into sections to make it easier to find
interesting examples.
@ -70,6 +70,7 @@ Documentation using a customized version of the default theme
* Chaco: http://code.enthought.com/projects/chaco/docs/html/
* Djagios: http://djagios.org/
* GetFEM++: http://home.gna.org/getfem/
* Google or-tools: https://or-tools.googlecode.com/svn/trunk/documentation/user_manual/index.html
* GPAW: https://wiki.fysik.dtu.dk/gpaw/
* Grok: http://grok.zope.org/doc/current/
* IFM: http://fluffybunny.memebot.com/ifm-docs/index.html
@ -105,10 +106,11 @@ Documentation using the sphinxdoc theme
http://www.tango-controls.org/static/PyTango/latest/doc/html/index.html
* Reteisi: http://www.reteisi.org/contents.html
* Satchmo: http://www.satchmoproject.com/docs/dev/
* Sphinx: http://sphinx.pocoo.org/
* Sphinx: http://sphinx-doc.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/
* Turbulenz: http://docs.turbulenz.com/
* WebFaction: http://docs.webfaction.com/
@ -128,6 +130,7 @@ Documentation using another builtin theme
(agogo)
* Sylli: http://sylli.sourceforge.net/ (nature)
* libLAS: http://liblas.org/ (nature)
* Valence: http://docs.valence.desire2learn.com/ (haiku)
Documentation using a custom theme/integrated in a site
@ -135,7 +138,8 @@ Documentation using a custom theme/integrated in a site
* Blender: http://www.blender.org/documentation/250PythonDoc/
* Blinker: http://discorporate.us/projects/Blinker/docs/
* Classy: classy: http://classy.pocoo.org/
* Classy: http://classy.pocoo.org/
* DEAP: http://deap.gel.ulaval.ca/doc/0.8/index.html
* Django: http://docs.djangoproject.com/
* e-cidadania: http://e-cidadania.readthedocs.org/en/latest/
* Flask: http://flask.pocoo.org/docs/
@ -143,13 +147,17 @@ Documentation using a custom theme/integrated in a site
* Gameduino: http://excamera.com/sphinx/gameduino/
* GeoServer: http://docs.geoserver.org/
* Glashammer: http://glashammer.org/
* Istihza (Turkish Python documentation project): http://www.istihza.com/py2/icindekiler_python.html
* MathJax: http://docs.mathjax.org/en/latest/
* MirrorBrain: http://mirrorbrain.org/docs/
* nose: http://somethingaboutorange.com/mrl/projects/nose/
* ObjectListView: http://objectlistview.sourceforge.net/python
* Open ERP: http://doc.openerp.com/
* OpenCV: http://docs.opencv.org/
* OpenLayers: http://docs.openlayers.org/
* PyEphem: http://rhodesmill.org/pyephem/
* German Plone 4.0 user manual: http://www.hasecke.com/plone-benutzerhandbuch/4.0/
* PSI4: http://sirius.chem.vt.edu/psi4manual/latest/index.html
* Pylons: http://pylonshq.com/docs/en/0.9.7/
* PyMOTW: http://www.doughellmann.com/PyMOTW/
* pypol: http://pypol.altervista.org/ (celery)
@ -161,6 +169,7 @@ Documentation using a custom theme/integrated in a site
* SQLAlchemy: http://www.sqlalchemy.org/docs/
* tinyTiM: http://tinytim.sourceforge.net/docs/2.0/
* tipfy: http://www.tipfy.org/docs/
* Ubuntu packaging guide: http://developer.ubuntu.com/packaging/html/
* Werkzeug: http://werkzeug.pocoo.org/docs/
* WFront: http://discorporate.us/projects/WFront/

View File

@ -21,7 +21,7 @@ After installing::
Then, direct your browser to ``_build/html/index.html``.
Or read them online at <http://sphinx.pocoo.org/>.
Or read them online at <http://sphinx-doc.org/>.
Testing

View File

@ -14,11 +14,14 @@ the appropriate options to ``use_setuptools()``.
This file can also be run as a script to install or upgrade setuptools.
"""
import os
import shutil
import sys
import time
import fnmatch
import tempfile
import tarfile
import optparse
from distutils import log
try:
@ -46,7 +49,7 @@ except ImportError:
args = [quote(arg) for arg in args]
return os.spawnl(os.P_WAIT, sys.executable, *args) == 0
DEFAULT_VERSION = "0.6.13"
DEFAULT_VERSION = "0.6.30"
DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/"
SETUPTOOLS_FAKED_VERSION = "0.6c11"
@ -63,7 +66,7 @@ Description: xxx
""" % SETUPTOOLS_FAKED_VERSION
def _install(tarball):
def _install(tarball, install_args=()):
# extracting the tarball
tmpdir = tempfile.mkdtemp()
log.warn('Extracting in %s', tmpdir)
@ -81,11 +84,14 @@ def _install(tarball):
# installing
log.warn('Installing Distribute')
if not _python_cmd('setup.py', 'install'):
if not _python_cmd('setup.py', 'install', *install_args):
log.warn('Something went wrong during the installation.')
log.warn('See the error message above.')
# exitcode will be 2
return 2
finally:
os.chdir(old_wd)
shutil.rmtree(tmpdir)
def _build_egg(egg, tarball, to_dir):
@ -110,6 +116,7 @@ def _build_egg(egg, tarball, to_dir):
finally:
os.chdir(old_wd)
shutil.rmtree(tmpdir)
# returning the result
log.warn(egg)
if not os.path.exists(egg):
@ -144,7 +151,7 @@ def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
except ImportError:
return _do_download(version, download_base, to_dir, download_delay)
try:
pkg_resources.require("distribute>="+version)
pkg_resources.require("distribute>=" + version)
return
except pkg_resources.VersionConflict:
e = sys.exc_info()[1]
@ -167,6 +174,7 @@ def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
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
@ -203,6 +211,7 @@ def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
dst.close()
return os.path.realpath(saveto)
def _no_sandbox(function):
def __no_sandbox(*args, **kw):
try:
@ -227,6 +236,7 @@ def _no_sandbox(function):
return __no_sandbox
def _patch_file(path, content):
"""Will backup the file then patch it"""
existing_content = open(path).read()
@ -245,15 +255,18 @@ def _patch_file(path, content):
_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)
log.warn('Renaming %s to %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)
@ -267,7 +280,7 @@ def _remove_flat_installation(placeholder):
log.warn('Could not locate setuptools*.egg-info')
return
log.warn('Removing elements out of the way...')
log.warn('Moving elements out of the way...')
pkg_info = os.path.join(placeholder, file)
if os.path.isdir(pkg_info):
patched = _patch_egg_dir(pkg_info)
@ -289,11 +302,13 @@ def _remove_flat_installation(placeholder):
_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')
@ -307,7 +322,11 @@ def _create_fake_setuptools_pkg_info(placeholder):
return
log.warn('Creating %s', pkg_info)
f = open(pkg_info, 'w')
try:
f = open(pkg_info, 'w')
except EnvironmentError:
log.warn("Don't have permissions to write %s, skipping", pkg_info)
return
try:
f.write(SETUPTOOLS_PKG_INFO)
finally:
@ -321,7 +340,10 @@ def _create_fake_setuptools_pkg_info(placeholder):
finally:
f.close()
_create_fake_setuptools_pkg_info = _no_sandbox(_create_fake_setuptools_pkg_info)
_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
@ -343,6 +365,7 @@ def _patch_egg_dir(path):
_patch_egg_dir = _no_sandbox(_patch_egg_dir)
def _before_install():
log.warn('Before install bootstrap.')
_fake_setuptools()
@ -351,7 +374,7 @@ def _before_install():
def _under_prefix(location):
if 'install' not in sys.argv:
return True
args = sys.argv[sys.argv.index('install')+1:]
args = sys.argv[sys.argv.index('install') + 1:]
for index, arg in enumerate(args):
for option in ('--root', '--prefix'):
if arg.startswith('%s=' % option):
@ -359,7 +382,7 @@ def _under_prefix(location):
return location.startswith(top_dir)
elif arg == option:
if len(args) > index:
top_dir = args[index+1]
top_dir = args[index + 1]
return location.startswith(top_dir)
if arg == '--user' and USER_SITE is not None:
return location.startswith(USER_SITE)
@ -376,11 +399,14 @@ def _fake_setuptools():
return
ws = pkg_resources.working_set
try:
setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools',
replacement=False))
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'))
setuptools_dist = ws.find(
pkg_resources.Requirement.parse('setuptools')
)
if setuptools_dist is None:
log.warn('No setuptools distribution found')
@ -414,7 +440,7 @@ def _fake_setuptools():
res = _patch_egg_dir(setuptools_location)
if not res:
return
log.warn('Patched done.')
log.warn('Patching complete.')
_relaunch()
@ -422,7 +448,9 @@ 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']:
_cmd1 = ['-c', 'install', '--single-version-externally-managed']
_cmd2 = ['-c', 'install', '--record']
if sys.argv[:3] == _cmd1 or sys.argv[:3] == _cmd2:
sys.argv[0] = 'setup.py'
args = [sys.executable] + sys.argv
sys.exit(subprocess.call(args))
@ -448,7 +476,7 @@ def _extractall(self, path=".", members=None):
# Extract directories with a safe mode.
directories.append(tarinfo)
tarinfo = copy.copy(tarinfo)
tarinfo.mode = 448 # decimal for oct 0700
tarinfo.mode = 448 # decimal for oct 0700
self.extract(tarinfo, path)
# Reverse sort directories.
@ -475,11 +503,39 @@ def _extractall(self, path=".", members=None):
self._dbg(1, "tarfile: %s" % e)
def main(argv, version=DEFAULT_VERSION):
"""Install or upgrade setuptools and EasyInstall"""
tarball = download_setuptools()
_install(tarball)
def _build_install_args(options):
"""
Build the arguments to 'python setup.py install' on the distribute package
"""
install_args = []
if options.user_install:
if sys.version_info < (2, 6):
log.warn("--user requires Python 2.6 or later")
raise SystemExit(1)
install_args.append('--user')
return install_args
def _parse_args():
"""
Parse the command line for options
"""
parser = optparse.OptionParser()
parser.add_option(
'--user', dest='user_install', action='store_true', default=False,
help='install in user site package (requires Python 2.6 or later)')
parser.add_option(
'--download-base', dest='download_base', metavar="URL",
default=DEFAULT_URL,
help='alternative URL from where to download the distribute package')
options, args = parser.parse_args()
# positional arguments are ignored
return options
def main(version=DEFAULT_VERSION):
"""Install or upgrade setuptools and EasyInstall"""
options = _parse_args()
tarball = download_setuptools(download_base=options.download_base)
return _install(tarball, _build_install_args(options))
if __name__ == '__main__':
main(sys.argv[1:])
sys.exit(main())

View File

@ -13,7 +13,8 @@ ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) \
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) $(O) .
.PHONY: help clean html dirhtml singlehtml text man pickle json htmlhelp \
qthelp devhelp epub latex latexpdf changes linkcheck doctest
qthelp devhelp epub latex latexpdf changes linkcheck doctest xml \
pseudoxml
help:
@echo "Please use \`make <target>' where <target> is one of"
@ -147,3 +148,13 @@ info:
@echo "Running Texinfo files through makeinfo..."
make -C _build/texinfo info
@echo "makeinfo finished; the Info files are in _build/texinfo."
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) _build/xml
@echo
@echo "Build finished. The XML files are in _build/XML."
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) _build/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in _build/pseudoxml."

View File

@ -62,9 +62,9 @@
<p>
You can also download PDF versions of the Sphinx documentation:
a <a href="http://sphinx.pocoo.org/sphinx.pdf">version</a> generated from
a <a href="http://sphinx-doc.org/sphinx.pdf">version</a> generated from
the LaTeX Sphinx produces, and
a <a href="http://sphinx.pocoo.org/sphinx-rst2pdf.pdf">version</a> generated
a <a href="http://sphinx-doc.org/sphinx-rst2pdf.pdf">version</a> generated
by rst2pdf.
</p>

View File

@ -14,14 +14,14 @@
<p>Get Sphinx from the <a href="http://pypi.python.org/pypi/Sphinx">Python Package
Index</a>, or install it with:</p>
<pre>easy_install -U Sphinx</pre>
<p>Latest <a href="http://sphinx.pocoo.org/latest/">development version docs</a>
<p>Latest <a href="http://sphinx-doc.org/latest/">development version docs</a>
are also available.</p>
{% endif %}
<h3>Questions? Suggestions?</h3>
<p>Join the <a href="http://groups.google.com/group/sphinx-dev">Google group</a>:</p>
<form action="http://groups.google.com/group/sphinx-dev/boxsubscribe"
<p>Join the <a href="http://groups.google.com/group/sphinx-users">Google group</a>:</p>
<form action="http://groups.google.com/group/sphinx-users/boxsubscribe"
style="padding-left: 1em">
<input type="text" name="email" value="your@email"/>
<input type="submit" name="sub" value="Subscribe" />

View File

@ -272,6 +272,29 @@ Note that a direct PDF builder using ReportLab is available in `rst2pdf
Its name is ``linkcheck``.
.. module:: sphinx.builders.xml
.. class:: XMLBuilder
This builder produces Docutils-native XML files. The output can be
transformed with standard XML tools such as XSLT processors into arbitrary
final forms.
Its name is ``xml``.
.. versionadded:: 1.2
.. class:: PseudoXMLBuilder
This builder is used for debugging the Sphinx/Docutils "Reader to Transform
to Writer" pipeline. It produces compact pretty-printed "pseudo-XML", files
where nesting is indicated by indentation (no end-tags). External
attributes for all elements are output, and internal attributes for any
leftover "pending" elements are also given.
Its name is ``pseudoxml``.
.. versionadded:: 1.2
Built-in Sphinx extensions that offer more builders are:

View File

@ -23,14 +23,14 @@ modindex_common_prefix = ['sphinx.']
html_static_path = ['_static']
html_sidebars = {'index': ['indexsidebar.html', 'searchbox.html']}
html_additional_pages = {'index': 'index.html'}
html_use_opensearch = 'http://sphinx.pocoo.org'
html_use_opensearch = 'http://sphinx-doc.org'
htmlhelp_basename = 'Sphinxdoc'
epub_theme = 'epub'
epub_basename = 'sphinx'
epub_author = 'Georg Brandl'
epub_publisher = 'http://sphinx.pocoo.org/'
epub_publisher = 'http://sphinx-doc.org/'
epub_scheme = 'url'
epub_identifier = epub_publisher
epub_pre_files = [('index.html', 'Welcome')]

View File

@ -383,6 +383,7 @@ documentation on :ref:`intl` for details.
* ``ko`` -- Korean
* ``lt`` -- Lithuanian
* ``lv`` -- Latvian
* ``nb_NO`` -- Norwegian Bokmal
* ``ne`` -- Nepali
* ``nl`` -- Dutch
* ``pl`` -- Polish
@ -1341,6 +1342,16 @@ Options for the linkcheck builder
.. versionadded:: 1.2
Options for the XML builder
---------------------------
.. confval:: xml_pretty
If True, pretty-print the XML. Default is ``True``.
.. versionadded:: 1.2
.. rubric:: Footnotes
.. [1] A note on available globbing syntax: you can use the standard shell

View File

@ -22,6 +22,7 @@ Sphinx documentation contents
faq
glossary
devguide
changes
examples

214
doc/devguide.rst Normal file
View File

@ -0,0 +1,214 @@
Sphinx Developer's Guide
========================
.. topic:: Abstract
This document describes the development process of Sphinx, a documentation
system used by developers to document systems used by other developers to
develop other systems that may also be documented using Sphinx.
The Sphinx source code is managed using `Mercurial`_ and is hosted on
`BitBucket`_.
hg clone https://bitbucket.org/birkenfeld/sphinx
.. rubric:: Community
sphinx-users <sphinx-users@googlegroups.com>
Mailing list for user support.
sphinx-dev <sphinx-dev@googlegroups.com>
Mailing list for development related discussions.
#pocoo on irc.freenode.net
IRC channel for development questions and user support.
This channel is shared with other Pocoo projects. Archived logs are
available `here <http://dev.pocoo.org/irclogs/>`_.
.. _`BitBucket`: http://bitbucket.org
.. _`Mercurial`: http://mercurial.selenic.com/
Bug Reports and Feature Requests
--------------------------------
If you have encountered a problem with Sphinx or have an idea for a new
feature, please submit it to the `issue tracker`_ on BitBucket or discuss it
on the sphinx-dev mailing list.
For bug reports, please include the output produced during the build process
and also the log file Sphinx creates after it encounters an un-handled
exception. The location of this file should be shown towards the end of the
error message.
Including or providing a link to the source files involved may help us fix the
issue. If possible, try to create a minimal project that produces the error
and post that instead.
.. _`issue tracker`: http://bitbucket.org/birkenfeld/sphinx/issues
Contributing to Sphinx
----------------------
The recommended way for new contributors to submit code to Sphinx is to fork
the Mercurial repository on BitBucket and then submit a pull request after
committing the changes. The pull request will then need to be approved by one
of the core developers before it is merged into the main repository.
Getting Started
~~~~~~~~~~~~~~~
These are the basic steps needed to start developing on Sphinx.
#. Create an account on BitBucket.
#. Fork the main Sphinx repository (`birkenfeld/sphinx
<https://bitbucket.org/birkenfeld/sphinx>`_) using the BitBucket interface.
#. Clone the forked repository to your machine. ::
hg clone https://bitbucket.org/USERNAME/sphinx-fork
cd sphinx-fork
#. Checkout the appropriate branch.
For changes that should be included in the next minor release (namely bug
fixes), use the ``stable`` branch. ::
hg checkout stable
For new features or other substantial changes that should wait until the
next major release, use the ``default`` branch.
#. Setup your Python environment. ::
virtualenv ~/sphinxenv
. ~/sphinxenv/bin/activate
pip install -e .
#. Hack, hack, hack.
For tips on working with the code, see the `Coding Guide`_.
#. Test, test, test.
Run the unit tests::
pip install nose
make test
Build the documentation and check the output for different builders::
cd docs
make clean html text man info latexpdf
Run the unit tests under different Python environments using
:program:`tox`::
pip install tox
tox -v
Add a new unit test in the ``tests`` directory if you can.
For bug fixes, first add a test that fails without your changes and passes
after they are applied.
#. Commit your changes. ::
hg commit -m 'Add useful new feature that does this.'
BitBucket recognizes `certain phrases`__ that can be used to automatically
update the issue tracker.
For example::
hg commit -m 'Closes #42: Fix invalid markup in docstring of Foo.bar.'
would close issue #42.
__ https://confluence.atlassian.com/display/BITBUCKET/Automatically+Resolving+Issues+when+Users+Push+Code
#. Push changes to your forked repository on BitBucket. ::
hg push
#. Submit a pull request from your repository to ``birkenfeld/sphinx`` using
the BitBucket interface.
#. Wait for a core developer to review your changes.
Core Developers
~~~~~~~~~~~~~~~
The core developers of Sphinx have write access to the main repository. They
can commit changes, accept/reject pull requests, and manage items on the issue
tracker.
You do not need to be a core developer or have write access to be involved in
the development of Sphinx. You can submit patches or create pull requests
from forked repositories and have a core developer add the changes for you.
The following are some general guidelines for core developers:
* Questionable or extensive changes should be submitted as a pull request
instead of being committed directly to the main repository. The pull
request should be reviewed by another core developer before it is merged.
* Trivial changes can be committed directly but be sure to keep the repository
in a good working state and that all tests pass before pushing your changes.
* When committing code written by someone else, please attribute the original
author in the commit message and any relevant :file:`CHANGES` entry.
* Using Mercurial named branches other than ``default`` and ``stable`` is not
encouraged.
Coding Guide
------------
* Try to use the same code style as used in the rest of the project. See the
`Pocoo Styleguide`__ for more information.
__ http://flask.pocoo.org/docs/styleguide/
* For non-trivial changes, please update the :file:`CHANGES` file. If your
changes alter existing behavior, please document this.
* New features should be documented. Include examples and use cases where
appropriate. If possible, include a sample that is displayed in the
generated output.
* When adding a new configuration variable, be sure to document it and update
:file:`sphinx/quickstart.py`.
* Use the included :program:`utils/check_sources.py` script to check for
common formatting issues (trailing whitespace, lengthy lines, etc).
* Add appropriate unit tests.
Debugging Tips
~~~~~~~~~~~~~~
* Delete the build cache before building documents if you make changes in the
code by running the command ``make clean`` or using the
:option:`sphinx-build -E` option.
* Use the :option:`sphinx-build -P` option to run Pdb on exceptions.
* Use ``node.pformat()`` and ``node.asdom().toxml()`` to generate a printable
representation of the document structure.
* Set the configuration variable :confval:`keep_warnings` to True so warnings
will be displayed in the generated output.
* Set the configuration variable :confval:`nitpicky` to True so that Sphinx
will complain about references without a known target.
* Set the debugging options in the `Docutils configuration file
<http://docutils.sourceforge.net/docs/user/config.html>`_.

View File

@ -812,7 +812,15 @@ More domains
------------
The sphinx-contrib_ repository contains more domains available as extensions;
currently Ada, Erlang, HTTP, PHP, and Ruby domains.
currently Ada, CoffeeScript_, Erlang_, HTTP_, Jinja_, PHP_, Ruby, and Scala_
domains.
.. _sphinx-contrib: https://bitbucket.org/birkenfeld/sphinx-contrib/
.. _CoffeeScript: http://pypi.python.org/pypi/sphinxcontrib-coffee
.. _Erlang: http://pypi.python.org/pypi/sphinxcontrib-erlangdomain
.. _HTTP: http://pypi.python.org/pypi/sphinxcontrib-httpdomain
.. _Jinja: http://pypi.python.org/pypi/sphinxcontrib-jinjadomain
.. _Scala: http://pypi.python.org/pypi/sphinxcontrib-scaladomain
.. _PHP: http://pypi.python.org/pypi/sphinxcontrib-phpdomain

View File

@ -120,6 +120,9 @@ inserting them into the page source under a suitable :rst:dir:`py:module`,
.. versionadded:: 1.1
.. versionchanged:: 1.2
The option can now take arguments, i.e. the special members to document.
* For classes and exceptions, members inherited from base classes will be
left out when documenting all members, unless you give the
``inherited-members`` flag option, in addition to ``members``::
@ -194,12 +197,13 @@ inserting them into the page source under a suitable :rst:dir:`py:module`,
automethod
autoattribute
These work exactly like :rst:dir:`autoclass` etc., but do not offer the options
used for automatic member documentation.
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, or in a docstring *after* the definition.
Comments need to be either on a line of their own *before* the definition, or
into a comment with special formatting (using a ``#:`` to start the comment
instead of just ``#``), 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.

46
doc/ext/linkcode.rst Normal file
View File

@ -0,0 +1,46 @@
:mod:`sphinx.ext.linkcode` -- Add external links to source code
===============================================================
.. module:: sphinx.ext.linkcode
:synopsis: Add external links to source code.
.. moduleauthor:: Pauli Virtanen
.. versionadded:: 1.2
This extension looks at your object descriptions (``.. class::``,
``.. function::`` etc.) and adds external links to code hosted
somewhere on the web. The intent is similar to the
``sphinx.ext.viewcode`` extension, but assumes the source code can be
found somewhere on the Internet.
In your configuration, you need to specify a :confval:`linkcode_resolve`
function that returns an URL based on the object.
.. confval:: linkcode_resolve
This is a function ``linkcode_resolve(domain, info)``,
which should return the URL to source code corresponding to
the object in given domain with given information.
The function should return ``None`` if no link is to be added.
The argument ``domain`` specifies the language domain the object is
in. ``info`` is a dictionary with the following keys guaranteed to
be present (dependent on the domain):
- ``py``: ``module`` (name of the module), ``fullname`` (name of the object)
- ``c``: ``names`` (list of names for the object)
- ``cpp``: ``names`` (list of names for the object)
- ``javascript``: ``object`` (name of the object), ``fullname`` (name of the item)
Example:
.. code-block:: python
def linkcode_resolve(domain, info):
if domain != 'py':
return None
if not info['module']:
return None
filename = info['module'].replace('.', '/')
return "http://somesite/sourcerepo/%s.py" % filename

View File

@ -148,19 +148,12 @@ built:
.. confval:: pngmath_dvipng_args
Additional arguments to give to dvipng, as a list. The default value is
``['-gamma 1.5', '-D 110']`` which makes the image a bit darker and larger
then it is by default.
``['-gamma', '1.5', '-D', '110', '-bg', 'Transparent']`` which makes the
image a bit darker and larger then it is by default, and produces PNGs with a
transparent background.
An arguments you might want to add here is e.g. ``'-bg Transparent'``,
which produces PNGs with a transparent background. This is not enabled by
default because some Internet Explorer versions don't like transparent PNGs.
.. note::
When you "add" an argument, you need to reproduce the default arguments if
you want to keep them; that is, like this::
pngmath_dvipng_args = ['-gamma 1.5', '-D 110', '-bg Transparent']
.. versionchanged:: 1.2
Now includes ``-bg Transparent`` by default.
.. confval:: pngmath_use_preview

View File

@ -53,6 +53,7 @@ These extensions are built in and can be activated by respective entries in the
ext/todo
ext/extlinks
ext/viewcode
ext/linkcode
ext/oldcmarkup

View File

@ -50,19 +50,15 @@ See the :ref:`pertinent section in the FAQ list <usingwith>`.
Prerequisites
-------------
Sphinx needs at least **Python 2.4** or **Python 3.1** to run, as well as the
Sphinx needs at least **Python 2.5** or **Python 3.1** to run, as well as the
docutils_ and Jinja2_ libraries. Sphinx should work with docutils version 0.7
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/
.. _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

View File

@ -227,6 +227,17 @@ The :program:`sphinx-apidoc` script has several options:
This sets the maximum depth of the table of contents, if one is generated.
.. option:: -l, --follow-links
This option makes sphinx-apidoc follow symbolic links when recursing the
filesystem to discover packages and modules. You may need it if you want
to generate documentation from a source directory managed by
`collective.recipe.omelette
<http://pypi.python.org/pypi/collective.recipe.omelette/>`_.
By default, symbolic links are skipped.
.. versionadded:: 1.2
.. option:: -T, --no-toc
This prevents the generation of a table-of-contents file ``modules.rst``.

View File

@ -182,13 +182,6 @@ Including content based on tags
The format of the current builder (``html``, ``latex`` or ``text``) is always
set as a tag.
.. note::
Due to docutils' specifics of parsing of directive content, you cannot put
a section with the same level as the main document heading inside an
``only`` directive. Such sections will appear to be ignored in the parsed
document.
.. versionadded:: 0.6

View File

@ -46,26 +46,20 @@ A development egg can be found `here
requires = ['Pygments>=1.2', 'Jinja2>=2.3', 'docutils>=0.7']
if sys.version_info < (2, 4):
print('ERROR: Sphinx requires at least Python 2.4 to run.')
sys.exit(1)
if sys.version_info[:3] >= (3, 3, 0):
requires[2] = 'docutils>=0.10'
if sys.version_info < (2, 5):
# Python 2.4's distutils doesn't automatically install an egg-info,
# so an existing docutils install won't be detected -- in that case,
# remove the dependency from setup.py
try:
import docutils
if int(docutils.__version__[2]) < 4:
raise ValueError('docutils not recent enough')
except:
pass
else:
del requires[-1]
# The uuid module is new in the stdlib in 2.5
requires.append('uuid>=1.30')
print('ERROR: Sphinx requires at least Python 2.5 to run.')
sys.exit(1)
# tell distribute to use 2to3 with our own fixers
extra = {}
if sys.version_info >= (3, 0):
extra.update(
use_2to3=True,
use_2to3_fixers=['custom_fixers']
)
# Provide a "compile_catalog" command that also creates the translated
# JavaScript files if Babel is available.
@ -164,7 +158,7 @@ else:
setup(
name='Sphinx',
version=sphinx.__version__,
url='http://sphinx.pocoo.org/',
url='http://sphinx-doc.org/',
download_url='http://pypi.python.org/pypi/Sphinx',
license='BSD',
author='Georg Brandl',
@ -203,6 +197,5 @@ setup(
},
install_requires=requires,
cmdclass=cmdclass,
use_2to3=True,
use_2to3_fixers=['custom_fixers'],
**extra
)

View File

@ -38,11 +38,20 @@ 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):
if sys.version_info[:3] < (2, 5, 0):
sys.stderr.write('Error: Sphinx requires at least '
'Python 2.4 to run.\n')
'Python 2.5 to run.\n')
return 1
if sys.version_info[:3] >= (3, 3, 0):
try:
import docutils
x, y = docutils.__version__.split('.')[:2]
if (int(x), int(y)) < (0, 10):
sys.stderr.write('Error: Sphinx requires at least '
'Docutils 0.10 for Python 3.3 and above.\n')
return 1
except Exception:
pass
try:
from sphinx import cmdline
except ImportError:

View File

@ -157,7 +157,8 @@ def recurse_tree(rootpath, excludes, opts):
root_package = None
toplevels = []
for root, subs, files in os.walk(rootpath):
followlinks = getattr(opts, 'followlinks', False)
for root, subs, files in os.walk(rootpath, followlinks=followlinks):
if is_excluded(root, excludes):
del subs[:]
continue
@ -246,6 +247,10 @@ Note: By default this script will not overwrite already created files.""")
'(default: 4)', type='int', default=4)
parser.add_option('-f', '--force', action='store_true', dest='force',
help='Overwrite all files')
parser.add_option('-l', '--follow-links', action='store_true',
dest='followlinks', default=False,
help='Follow symbolic links. Powerful when combined '
'with collective.recipe.omelette.')
parser.add_option('-n', '--dry-run', action='store_true', dest='dryrun',
help='Run the script without creating files')
parser.add_option('-T', '--no-toc', action='store_true', dest='notoc',

View File

@ -409,7 +409,7 @@ class Sphinx(object):
if domain.name not in self.domains:
raise ExtensionError('domain %s not yet registered' % domain.name)
if not issubclass(domain, self.domains[domain.name]):
raise ExtensionError('new domain not a subclass of registered '
raise ExtensionError('new domain not a subclass of registered %s '
'domain' % domain.name)
self.domains[domain.name] = domain

View File

@ -334,4 +334,6 @@ BUILTIN_BUILDERS = {
'linkcheck': ('linkcheck', 'CheckExternalLinksBuilder'),
'websupport': ('websupport', 'WebSupportBuilder'),
'gettext': ('gettext', 'MessageCatalogBuilder'),
'xml': ('xml', 'XMLBuilder'),
'pseudoxml': ('xml', 'PseudoXMLBuilder'),
}

View File

@ -610,7 +610,8 @@ class StandaloneHTMLBuilder(Builder):
"""
Builder.post_process_images(self, doctree)
for node in doctree.traverse(nodes.image):
if not node.has_key('scale') or \
scale_keys = ('scale', 'width', 'height')
if not any((key in node) for key in scale_keys) or \
isinstance(node.parent, nodes.reference):
# docutils does unfortunately not preserve the
# ``target`` attribute on images, so we need to check

View File

@ -102,7 +102,8 @@ class CheckExternalLinksBuilder(Builder):
def check():
# check for various conditions without bothering the network
if len(uri) == 0 or uri[0] == '#' or uri[0:7] == 'mailto:' or uri[0:4] == 'ftp:':
if len(uri) == 0 or 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', ''

85
sphinx/builders/xml.py Normal file
View File

@ -0,0 +1,85 @@
# -*- coding: utf-8 -*-
"""
sphinx.builders.xml
~~~~~~~~~~~~~~~~~~~
Docutils-native XML and pseudo-XML builders.
:copyright: Copyright 2007-2012 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import codecs
from os import path
from docutils.io import StringOutput
from sphinx.builders import Builder
from sphinx.util.osutil import ensuredir, os_path
from sphinx.writers.xml import XMLWriter, PseudoXMLWriter
class XMLBuilder(Builder):
"""
Builds Docutils-native XML.
"""
name = 'xml'
format = 'xml'
out_suffix = '.xml'
_writer_class = XMLWriter
def init(self):
pass
def get_outdated_docs(self):
for docname in self.env.found_docs:
if docname not in self.env.all_docs:
yield docname
continue
targetname = self.env.doc2path(docname, self.outdir,
self.out_suffix)
try:
targetmtime = path.getmtime(targetname)
except Exception:
targetmtime = 0
try:
srcmtime = path.getmtime(self.env.doc2path(docname))
if srcmtime > targetmtime:
yield docname
except EnvironmentError:
# source doesn't exist anymore
pass
def get_target_uri(self, docname, typ=None):
return ''
def prepare_writing(self, docnames):
self.writer = self._writer_class(self)
def write_doc(self, docname, doctree):
destination = StringOutput(encoding='utf-8')
self.writer.write(doctree, destination)
outfilename = path.join(self.outdir, os_path(docname) + self.out_suffix)
ensuredir(path.dirname(outfilename))
try:
f = codecs.open(outfilename, 'w', 'utf-8')
try:
f.write(self.writer.output)
finally:
f.close()
except (IOError, OSError), err:
self.warn("error writing file %s: %s" % (outfilename, err))
def finish(self):
pass
class PseudoXMLBuilder(XMLBuilder):
"""
Builds pseudo-XML for display purposes.
"""
name = 'pseudoxml'
format = 'pseudoxml'
out_suffix = '.pseudoxml'
_writer_class = PseudoXMLWriter

View File

@ -231,7 +231,7 @@ def main(argv):
'can be provided next time.')
print >>error, (
'Either send bugs to the mailing list at '
'<http://groups.google.com/group/sphinx-dev/>,\n'
'<http://groups.google.com/group/sphinx-users/>,\n'
'or report them in the tracker at '
'<http://bitbucket.org/birkenfeld/sphinx/issues/>. Thanks!')
return 1

View File

@ -184,6 +184,9 @@ class Config(object):
# gettext options
gettext_compact = (True, 'gettext'),
# XML options
xml_pretty = (True, 'env'),
)
def __init__(self, dirname, filename, overrides, tags):

View File

@ -338,9 +338,46 @@ class Only(Directive):
node.document = self.state.document
set_source_info(self, node)
node['expr'] = self.arguments[0]
self.state.nested_parse(self.content, self.content_offset, node,
match_titles=1)
return [node]
# Same as util.nested_parse_with_titles but try to handle nested
# sections which should be raised higher up the doctree.
surrounding_title_styles = self.state.memo.title_styles
surrounding_section_level = self.state.memo.section_level
self.state.memo.title_styles = []
self.state.memo.section_level = 0
try:
result = self.state.nested_parse(self.content, self.content_offset,
node, match_titles=1)
title_styles = self.state.memo.title_styles
if (not surrounding_title_styles
or not title_styles
or title_styles[0] not in surrounding_title_styles
or not self.state.parent):
# No nested sections so no special handling needed.
return [node]
# Calculate the depths of the current and nested sections.
current_depth = 0
parent = self.state.parent
while parent:
current_depth += 1
parent = parent.parent
current_depth -= 2
title_style = title_styles[0]
nested_depth = len(surrounding_title_styles)
if title_style in surrounding_title_styles:
nested_depth = surrounding_title_styles.index(title_style)
# Use these depths to determine where the nested sections should
# be placed in the doctree.
n_sects_to_raise = current_depth - nested_depth + 1
parent = self.state.parent
for i in xrange(n_sects_to_raise):
if parent.parent:
parent = parent.parent
parent.append(node)
return []
finally:
self.state.memo.title_styles = surrounding_title_styles
self.state.memo.section_level = surrounding_section_level
class Include(BaseInclude):

View File

@ -672,8 +672,9 @@ class DefinitionParser(object):
except ValueError:
return False
def _parse_builtin(self, modifier):
path = [modifier]
def _parse_builtin(self, modifiers):
modifier = modifiers[-1]
path = modifiers
following = self._modifiers[modifier]
while 1:
self.skip_ws()
@ -730,9 +731,10 @@ class DefinitionParser(object):
# impossible for a template to follow, so what
# we do is go to a different function that just
# eats types
if following is not None:
return self._parse_builtin(modifier)
modifiers.append(modifier)
if following is not None:
return self._parse_builtin(modifiers)
self.skip_ws()
else:
self.backout()
break
@ -760,17 +762,33 @@ class DefinitionParser(object):
self.skip_ws()
if self.match(_string_re):
return self.matched_text
idx1 = self.definition.find(',', self.pos)
idx2 = self.definition.find(')', self.pos)
if idx1 < 0:
idx = idx2
elif idx2 < 0:
idx = idx1
else:
idx = min(idx1, idx2)
if idx < 0:
self.fail('unexpected end in default expression')
rv = self.definition[self.pos:idx]
paren_stack_depth = 0
max_pos = len(self.definition)
rv_start = self.pos
while 1:
idx0 = self.definition.find('(', self.pos)
idx1 = self.definition.find(',', self.pos)
idx2 = self.definition.find(')', self.pos)
if idx0 < 0:
idx0 = max_pos
if idx1 < 0:
idx1 = max_pos
if idx2 < 0:
idx2 = max_pos
idx = min(idx0, idx1, idx2)
if idx >= max_pos:
self.fail('unexpected end in default expression')
if idx == idx0:
paren_stack_depth += 1
elif idx == idx2:
paren_stack_depth -= 1
if paren_stack_depth < 0:
break
elif paren_stack_depth == 0:
break
self.pos = idx+1
rv = self.definition[rv_start:idx]
self.pos = idx
return rv
@ -836,7 +854,7 @@ class DefinitionParser(object):
visibility = 'public'
if self.match(_visibility_re):
visibility = self.matched_text
static = self.skip_word('static')
static = self.skip_word_and_ws('static')
return visibility, static
def parse_type(self):

View File

@ -66,6 +66,7 @@ default_settings = {
'doctitle_xform': False,
'sectsubtitle_xform': False,
'halt_level': 5,
'file_insertion_enabled': True,
}
# This is increased every time an environment attribute is added
@ -193,6 +194,7 @@ 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']
@ -213,17 +215,63 @@ class Locale(Transform):
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
patch = new_document(source, settings)
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
# auto-numbered foot note reference should use original 'ids'.
is_autonumber_footnote_ref = lambda node: \
isinstance(node, nodes.footnote_reference) \
and node.get('auto') == 1
old_foot_refs = node.traverse(is_autonumber_footnote_ref)
new_foot_refs = patch.traverse(is_autonumber_footnote_ref)
if len(old_foot_refs) != len(new_foot_refs):
env.warn_node('inconsistent footnote references in '
'translated message', node)
for old, new in zip(old_foot_refs, new_foot_refs):
new['ids'] = old['ids']
self.document.autofootnote_refs.remove(old)
self.document.note_autofootnote_ref(new)
# reference should use original 'refname'.
# * reference target ".. _Python: ..." is not translatable.
# * section refname is not translatable.
# * inline reference "`Python <...>`_" has no 'refname'.
is_refnamed_ref = lambda node: \
isinstance(node, nodes.reference) \
and 'refname' in node
old_refs = node.traverse(is_refnamed_ref)
new_refs = patch.traverse(is_refnamed_ref)
applied_refname_map = {}
if len(old_refs) != len(new_refs):
env.warn_node('inconsistent references in '
'translated message', node)
for new in new_refs:
if new['refname'] in applied_refname_map:
# 2nd appearance of the reference
new['refname'] = applied_refname_map[new['refname']]
elif old_refs:
# 1st appearance of the reference in old_refs
old = old_refs.pop(0)
refname = old['refname']
new['refname'] = refname
applied_refname_map[new['refname']] = refname
else:
# the reference is not found in old_refs
applied_refname_map[new['refname']] = new['refname']
self.document.note_refname(new)
# update leaves
for child in patch.children:
child.parent = node
node.children = patch.children
@ -782,7 +830,11 @@ class BuildEnvironment:
app.emit('doctree-read', doctree)
# store time of build, for outdated files detection
self.all_docs[docname] = time.time()
# (Some filesystems have coarse timestamp resolution;
# therefore time.time() can be older than filesystem's timestamp.
# For example, FAT32 has 2sec timestamp resolution.)
self.all_docs[docname] = max(
time.time(), path.getmtime(self.doc2path(docname)))
if self.versioning_condition:
# get old doctree
@ -1759,4 +1811,3 @@ class BuildEnvironment:
if 'orphan' in self.metadata[docname]:
continue
self.warn(docname, 'document isn\'t included in any toctree')

View File

@ -489,20 +489,26 @@ class Documenter(object):
If *want_all* is True, return all members. Else, only return those
members given by *self.options.members* (which may also be none).
"""
analyzed_member_names = set()
if self.analyzer:
attr_docs = self.analyzer.find_attr_docs()
namespace = '.'.join(self.objpath)
for item in attr_docs.iteritems():
if item[0][0] == namespace:
analyzed_member_names.add(item[0][1])
if not want_all:
if not self.options.members:
return False, []
# specific members given
ret = []
members = []
for mname in self.options.members:
try:
ret.append((mname, self.get_attr(self.object, mname)))
members.append((mname, self.get_attr(self.object, mname)))
except AttributeError:
self.directive.warn('missing attribute %s in object %s'
% (mname, self.fullname))
return False, ret
if self.options.inherited_members:
if mname not in analyzed_member_names:
self.directive.warn('missing attribute %s in object %s'
% (mname, self.fullname))
elif self.options.inherited_members:
# safe_getmembers() uses dir() which pulls in members from all
# base classes
members = safe_getmembers(self.object)
@ -521,13 +527,10 @@ class Documenter(object):
for mname in obj_dict.keys()]
membernames = set(m[0] for m in members)
# add instance attributes from the analyzer
if self.analyzer:
attr_docs = self.analyzer.find_attr_docs()
namespace = '.'.join(self.objpath)
for item in attr_docs.iteritems():
if item[0][0] == namespace:
if item[0][1] not in membernames:
members.append((item[0][1], INSTANCEATTR))
for aname in analyzed_member_names:
if aname not in membernames and \
(want_all or aname in self.options.members):
members.append((aname, INSTANCEATTR))
return False, sorted(members)
def filter_members(self, members, want_all):
@ -573,7 +576,11 @@ class Documenter(object):
if want_all and membername.startswith('__') and \
membername.endswith('__') and len(membername) > 4:
# special __methods__
if self.options.special_members and membername != '__doc__':
if self.options.special_members is ALL and \
membername != '__doc__':
keep = has_doc or self.options.undoc_members
elif self.options.special_members and \
membername in self.options.special_members:
keep = has_doc or self.options.undoc_members
elif want_all and membername.startswith('_'):
# ignore members whose name starts with _ by default
@ -748,7 +755,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,
'private-members': bool_option, 'special-members': members_option,
}
@classmethod
@ -862,7 +869,7 @@ class DocstringSignatureMixin(object):
"""
def _find_signature(self, encoding=None):
docstrings = Documenter.get_doc(self, encoding, 2)
docstrings = Documenter.get_doc(self, encoding)
if len(docstrings) != 1:
return
doclines = docstrings[0]
@ -877,6 +884,9 @@ class DocstringSignatureMixin(object):
# the base name must match ours
if not self.objpath or base != self.objpath[-1]:
return
# re-prepare docstring to ignore indentation after signature
docstrings = Documenter.get_doc(self, encoding, 2)
doclines = docstrings[0]
# ok, now jump over remaining empty lines and set the remaining
# lines as the new doclines
i = 1
@ -949,7 +959,7 @@ 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,
'private-members': bool_option, 'special-members': members_option,
}
@classmethod
@ -1098,7 +1108,7 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter):
"""
objtype = 'method'
member_order = 50
priority = 0
priority = 1 # must be more than FunctionDocumenter
@classmethod
def can_document_member(cls, member, membername, isattr, parent):

View File

@ -125,7 +125,7 @@ def render_dot(self, code, options, format, prefix='graphviz'):
str(self.builder.config.graphviz_dot) + \
str(self.builder.config.graphviz_dot_args)
).encode('utf-8')
fname = '%s-%s.%s' % (prefix, sha(hashkey).hexdigest(), format)
if hasattr(self.builder, 'imgpath'):
# HTML
@ -229,10 +229,10 @@ def render_dot_html(self, node, code, options, prefix='graphviz',
(fname, alt, imgcss))
else:
# has a map: get the name of the map and connect the parts
mapname = mapname_re.match(imgmap[0]).group(1)
mapname = mapname_re.match(imgmap[0].decode('utf-8')).group(1)
self.body.append('<img src="%s" alt="%s" usemap="#%s" %s/>\n' %
(fname, alt, mapname, imgcss))
self.body.extend(imgmap)
self.body.extend([item.decode('utf-8') for item in imgmap])
if node.get('caption') and not inline:
self.body.append('</p>\n<p class="caption">')
self.body.append(self.encode(node['caption']))

View File

@ -168,7 +168,7 @@ class InheritanceGraph(object):
for cls in classes:
recurse(cls)
return all_classes.values()
return all_classes
def class_name(self, cls, parts=0):
"""Given a class object, return a fully-qualified name.
@ -188,7 +188,7 @@ class InheritanceGraph(object):
def get_all_class_names(self):
"""Get all of the class names involved in the graph."""
return [fullname for (_, fullname, _) in self.class_info]
return [fullname for (_, fullname, _) in self.class_info.values()]
# These are the default attrs for graphviz
default_graph_attrs = {
@ -199,8 +199,8 @@ class InheritanceGraph(object):
'shape': 'box',
'fontsize': 10,
'height': 0.25,
'fontname': 'Vera Sans, DejaVu Sans, Liberation Sans, '
'Arial, Helvetica, sans',
'fontname': '"Vera Sans, DejaVu Sans, Liberation Sans, '
'Arial, Helvetica, sans"',
'style': '"setlinewidth(0.5)"',
}
default_edge_attrs = {
@ -241,12 +241,16 @@ class InheritanceGraph(object):
res.append('digraph %s {\n' % name)
res.append(self._format_graph_attrs(g_attrs))
for name, fullname, bases in self.class_info:
for cls, (name, fullname, bases) in self.class_info.items():
# Write the node
this_node_attrs = n_attrs.copy()
url = urls.get(fullname)
if url is not None:
this_node_attrs['URL'] = '"%s"' % url
if fullname in urls:
this_node_attrs['URL'] = '"%s"' % urls[fullname]
# Use first line of docstring as tooltip, if available
if cls.__doc__:
doc = cls.__doc__.strip().split("\n")[0]
if doc:
this_node_attrs['tooltip'] = '"%s"' % doc
res.append(' "%s" [%s];\n' %
(name, self._format_node_attrs(this_node_attrs)))

View File

@ -188,7 +188,17 @@ def load_mappings(app):
if update:
env.intersphinx_inventory = {}
env.intersphinx_named_inventory = {}
for name, _, invdata in cache.itervalues():
# Duplicate values in different inventories will shadow each
# other; which one will override which can vary between builds
# since they are specified using an unordered dict. To make
# it more consistent, we sort the named inventories and then
# add the unnamed inventories last. This means that the
# unnamed inventories will shadow the named ones but the named
# ones can still be accessed when the name is specified.
cached_vals = list(cache.itervalues())
named_vals = sorted(v for v in cached_vals if v[0])
unnamed_vals = [v for v in cached_vals if not v[0]]
for name, _, invdata in named_vals + unnamed_vals:
if name:
env.intersphinx_named_inventory[name] = invdata
for type, objects in invdata.iteritems():

72
sphinx/ext/linkcode.py Normal file
View File

@ -0,0 +1,72 @@
# -*- coding: utf-8 -*-
"""
sphinx.ext.linkcode
~~~~~~~~~~~~~~~~~~~
Add external links to module code in Python object descriptions.
:copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
from docutils import nodes
from sphinx import addnodes
from sphinx.locale import _
from sphinx.errors import SphinxError
class LinkcodeError(SphinxError):
category = "linkcode error"
def doctree_read(app, doctree):
env = app.builder.env
resolve_target = getattr(env.config, 'linkcode_resolve', None)
if not callable(env.config.linkcode_resolve):
raise LinkcodeError(
"Function `linkcode_resolve` is not given in conf.py")
domain_keys = dict(
py=['module', 'fullname'],
c=['names'],
cpp=['names'],
js=['object', 'fullname'],
)
for objnode in doctree.traverse(addnodes.desc):
domain = objnode.get('domain')
uris = set()
for signode in objnode:
if not isinstance(signode, addnodes.desc_signature):
continue
# Convert signode to a specified format
info = {}
for key in domain_keys.get(domain, []):
value = signode.get(key)
if not value:
value = ''
info[key] = value
if not info:
continue
# Call user code to resolve the link
uri = resolve_target(domain, info)
if not uri:
# no source
continue
if uri in uris or not uri:
# only one link per name, please
continue
uris.add(uri)
onlynode = addnodes.only(expr='html')
onlynode += nodes.reference('', '', internal=False, refuri=uri)
onlynode[0] += nodes.inline('', _('[source]'),
classes=['viewcode-link'])
signode += onlynode
def setup(app):
app.connect('doctree-read', doctree_read)
app.add_config_value('linkcode_resolve', None, '')

View File

@ -16,7 +16,7 @@ from sphinx.util.compat import Directive
_warned_oldcmarkup = False
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'
'http://sphinx-doc.org/domains.html'
class OldCDirective(Directive):

View File

@ -237,7 +237,8 @@ def setup(app):
app.add_config_value('pngmath_latex', 'latex', 'html')
app.add_config_value('pngmath_use_preview', False, 'html')
app.add_config_value('pngmath_dvipng_args',
['-gamma 1.5', '-D 110'], 'html')
['-gamma', '1.5', '-D', '110', '-bg', 'Transparent'],
'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')

View File

@ -143,6 +143,12 @@ class PygmentsBridge(object):
# just replace all non-ASCII characters.
src = src.encode('ascii', 'replace')
if (3, 0) <= sys.version_info < (3, 2):
# Python 3.1 can't process '\r' as linesep.
# `parser.suite("print('hello')\r\n")` cause error.
if '\r\n' in src:
src = src.replace('\r\n', '\n')
if parser is None:
return True
@ -207,6 +213,8 @@ class PygmentsBridge(object):
if self.dest == 'html':
return hlsource
else:
if not isinstance(hlsource, unicode): # Py2 / Pygments < 1.6
hlsource = hlsource.decode()
return hlsource.translate(tex_hl_escape_map_new)
except ErrorToken:
# this is most probably not the selected language,

View File

@ -639,10 +639,10 @@ msgstr "%(last_updated)s সর্বশেষ পরিবর্তন কর
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"<a href=\"http://sphinx.pocoo.org/\">Sphinx</a> %(sphinx_version)s দিয়ে "
"<a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s দিয়ে "
"তৈরী।"
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -633,10 +633,10 @@ msgstr "Última actualització el %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Creat amb <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Creat amb <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -636,10 +636,10 @@ msgstr "Aktualizováno dne %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Vytvořeno pomocí <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Vytvořeno pomocí <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -628,10 +628,10 @@ msgstr "Sidst opdateret %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Bygget med <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Bygget med <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -629,10 +629,10 @@ msgstr "Zuletzt aktualisiert am %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Mit <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> %(sphinx_version)s "
"Mit <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s "
"erstellt."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -642,10 +642,10 @@ msgstr "Actualizado por última vez en %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Creado con <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Creado con <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -1 +1 @@
Documentation.addTranslations({"locale": "et", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Varja otsingutulemused", "Permalink to this definition": "P\u00fcsilink sellele definitsioonile", "Expand sidebar": "N\u00e4ita k\u00fclgriba", "Permalink to this headline": "P\u00fcsilink sellele pealkirjale", "Collapse sidebar": "Varja k\u00fclgriba"}});
Documentation.addTranslations({"locale": "et", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Varja otsingutulemused", "Permalink to this definition": "P\u00fcsiviit sellele definitsioonile", "Expand sidebar": "N\u00e4ita k\u00fclgriba", "Permalink to this headline": "P\u00fcsiviit sellele pealkirjale", "Collapse sidebar": "Varja k\u00fclgriba"}});

View File

@ -1,15 +1,20 @@
# Estonian translations for Sphinx.
# Copyright (C) 2010 ORGANIZATION
# This file is distributed under the same license as the Sphinx project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
# Sphinxi eesti keele tõlge.
#
# Copyright (C) 20112012 Pocoo Team.
#
# This file is distributed under the same license as the Sphinx project.
#
# Aivar Annamaa <aivar.annamaa@gmail.com>, 2011
# Ivar Smolin <okul at linux ee>, 2012
msgid ""
msgstr ""
"Project-Id-Version: Sphinx 1.0pre/8b971dbc7d36\n"
"Project-Id-Version: Sphinx 1.1.3"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-09-21 10:06+0200\n"
"PO-Revision-Date: 2011-09-18 11:40+0200\n"
"Last-Translator: Aivar Annamaa <aivar.annamaa@gmail.com>\n"
"PO-Revision-Date: 2012-09-15 12:56+0300\n"
"Last-Translator: Ivar Smolin <okul@linux.ee>\n"
"Language-Team: \n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
@ -18,7 +23,7 @@ msgstr ""
"Generated-By: Babel 0.9.6\n"
#: sphinx/config.py:81
#, fuzzy, python-format
#, python-format
msgid "%s %s documentation"
msgstr "%s %s dokumentatsioon"
@ -26,22 +31,22 @@ msgstr "%s %s dokumentatsioon"
#: sphinx/writers/manpage.py:67 sphinx/writers/texinfo.py:203
#, python-format
msgid "%B %d, %Y"
msgstr "%B %d, %Y"
msgstr "%d. %B %Y"
#: sphinx/environment.py:1625
#, python-format
msgid "see %s"
msgstr ""
msgstr "vaata %s"
#: sphinx/environment.py:1628
#, python-format
msgid "see also %s"
msgstr ""
msgstr "vaata ka %s"
#: sphinx/roles.py:175
#, fuzzy, python-format
#, python-format
msgid "Python Enhancement Proposals; PEP %s"
msgstr "Python Enhancement Proposals!PEP %s"
msgstr "Pythoni täiustusettepanekud, PEP %s"
#: sphinx/builders/changes.py:73
msgid "Builtins"
@ -54,7 +59,7 @@ msgstr "Mooduli tase"
#: sphinx/builders/html.py:274
#, python-format
msgid "%b %d, %Y"
msgstr "%b %d, %Y"
msgstr "%d. %b %Y"
#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
msgid "General Index"
@ -73,8 +78,11 @@ msgid "previous"
msgstr "eelmine"
#: sphinx/builders/latex.py:141 sphinx/builders/texinfo.py:196
# paistab olevat ristviitamiseks. ei oska öelda, kas siia sobiks paremini
# 'Sektsioonis' või 'Teema' või midagi muud. sestap panin enamvähem lollikindla
# 'Pealkirjas'. (okul)
msgid " (in "
msgstr " (in "
msgstr " (pealkirjas "
#: sphinx/directives/other.py:136
msgid "Section author: "
@ -196,9 +204,9 @@ msgid "%s() (%s method)"
msgstr "%s() (%s meetod)"
#: sphinx/domains/javascript.py:109
#, fuzzy, python-format
#, python-format
msgid "%s() (class)"
msgstr "%s (C++ klass)"
msgstr "%s() (klass)"
#: sphinx/domains/javascript.py:111
#, python-format
@ -216,7 +224,7 @@ msgstr "Argumendid"
#: sphinx/domains/javascript.py:125
msgid "Throws"
msgstr "Throws"
msgstr ""
#: sphinx/domains/javascript.py:164 sphinx/domains/python.py:560
msgid "data"
@ -232,7 +240,7 @@ msgstr "Muutujad"
#: sphinx/domains/python.py:104
msgid "Raises"
msgstr "Raises"
msgstr ""
#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
@ -278,12 +286,12 @@ msgstr "%s() (%s staatiline meetod)"
#: sphinx/domains/python.py:341
#, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (%s.%s klassi meetod)"
msgstr "%s() (klassi %s.%s meetod)"
#: sphinx/domains/python.py:344
#, python-format
msgid "%s() (%s class method)"
msgstr "%s() (%s klassi meetod)"
msgstr "%s() (klassi %s meetod)"
#: sphinx/domains/python.py:354
#, python-format
@ -305,7 +313,7 @@ msgstr "moodulid"
#: sphinx/domains/python.py:537
msgid "Deprecated"
msgstr "Ebaasoovitav"
msgstr "Iganenud"
#: sphinx/domains/python.py:562 sphinx/locale/__init__.py:179
msgid "exception"
@ -328,9 +336,8 @@ msgid "module"
msgstr "moodul"
#: sphinx/domains/python.py:695
#, fuzzy
msgid " (deprecated)"
msgstr "Ebaasoovitav"
msgstr " (iganenud)"
#: sphinx/domains/rst.py:55
#, python-format
@ -362,11 +369,11 @@ msgstr "%s käsurea valik; %s"
#: sphinx/domains/std.py:393
msgid "glossary term"
msgstr "termin"
msgstr "sõnastiku termin"
#: sphinx/domains/std.py:394
msgid "grammar token"
msgstr "grammatika märgend"
msgstr "grammatika märk"
#: sphinx/domains/std.py:395
msgid "reference label"
@ -378,7 +385,7 @@ msgstr "keskkonnamuutuja"
#: sphinx/domains/std.py:397
msgid "program option"
msgstr "programmi seade"
msgstr "programmi valik"
#: sphinx/domains/std.py:427 sphinx/themes/basic/genindex-single.html:32
#: sphinx/themes/basic/genindex-split.html:11
@ -395,26 +402,26 @@ msgstr "Mooduli indeks"
#: sphinx/domains/std.py:429 sphinx/themes/basic/defindex.html:25
msgid "Search Page"
msgstr "Otsingu lehekülg"
msgstr "Otsinguleht"
#: sphinx/ext/autodoc.py:1002
#, python-format
msgid " Bases: %s"
msgstr " Baasid: %s"
msgstr " Pärineb: %s"
#: sphinx/ext/autodoc.py:1038
#, python-format
msgid "alias of :class:`%s`"
msgstr "sünonüüm :class:`%s`"
msgstr "klassi :class:`%s` sünonüüm"
#: sphinx/ext/todo.py:41
msgid "Todo"
msgstr "Tegemata"
msgstr "Teha"
#: sphinx/ext/todo.py:109
#, python-format
msgid "(The <<original entry>> is located in %s, line %d.)"
msgstr "(Algne kirje asub failis %s, real %d.)"
msgstr "(<<Algne kirje>> asub failis %s real %d.)"
#: sphinx/ext/todo.py:117
msgid "original entry"
@ -498,7 +505,7 @@ msgstr "Muudetud versioonis %s"
#: sphinx/locale/__init__.py:170
#, python-format
msgid "Deprecated since version %s"
msgstr "Ebasoovitav alates versioonist %s"
msgstr "Iganenud alates versioonist %s"
#: sphinx/locale/__init__.py:176
msgid "keyword"
@ -536,7 +543,7 @@ msgstr "Otsi"
#: sphinx/themes/agogo/layout.html:57 sphinx/themes/basic/searchbox.html:20
msgid "Enter search terms or a module, class or function name."
msgstr "Sisesta otsingusõna"
msgstr "Sisesta otsingusõna või mooduli/klassi/funktsiooni nimi."
#: sphinx/themes/agogo/layout.html:78 sphinx/themes/basic/sourcelink.html:14
msgid "Show Source"
@ -609,17 +616,17 @@ msgstr "Info selle dokumentatsiooni kohta"
#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
msgstr "Autoriõigused"
#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Autoriõigused</a> %(copyright)s."
#: sphinx/themes/basic/layout.html:191
#, python-format
msgid "&copy; Copyright %(copyright)s."
msgstr "&copy; Copyright %(copyright)s."
msgstr "&copy; Autoriõigused %(copyright)s."
#: sphinx/themes/basic/layout.html:195
#, python-format
@ -629,10 +636,10 @@ msgstr "Viimati uuendatud %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Loodud <a href=\"http://sphinx.pocoo.org/\">Sphinx-iga</a> (versioon: "
"Loodud <a href=\"http://sphinx-doc.org/\">Sphinxiga</a> (versioon: "
"%(sphinx_version)s)."
#: sphinx/themes/basic/opensearch.xml:4
@ -669,9 +676,9 @@ msgid ""
" function will automatically search for all of the words. Pages\n"
" containing fewer words won't appear in the result list."
msgstr ""
"Siin saad otsida käesolevast dokumentatsioonist. Sisesta otsisõned "
"Siin saad otsida käesolevast dokumentatsioonist. Sisesta otsisõnad "
"allolevasse lahtrisse ning klõpsa \"Otsi\". Tulemuseks antakse "
"leheküljed, mis sisaldavad kõiki otsisõnesid."
"leheküljed, mis sisaldavad kõiki otsisõnasid."
#: sphinx/themes/basic/search.html:36
msgid "search"
@ -683,7 +690,7 @@ msgstr "Otsingutulemused"
#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Otsing ei andnud tulemusi"
msgstr "Otsing ei andnud tulemusi."
#: sphinx/themes/basic/searchbox.html:12
msgid "Quick search"
@ -691,13 +698,13 @@ msgstr "Kiirotsing"
#: sphinx/themes/basic/sourcelink.html:11
msgid "This Page"
msgstr "Käesolev lehekülg"
msgstr "Käesolev leht"
#: sphinx/themes/basic/changes/frameset.html:5
#: sphinx/themes/basic/changes/versionchanges.html:12
#, python-format
msgid "Changes in Version %(version)s &mdash; %(docstitle)s"
msgstr "Muudatused versioonis %(version)s &mdash; %(docstitle)s"
msgstr "Muutused versioonis %(version)s &mdash; %(docstitle)s"
#: sphinx/themes/basic/changes/rstsource.html:5
#, python-format
@ -707,28 +714,28 @@ msgstr "%(filename)s &mdash; %(docstitle)s"
#: sphinx/themes/basic/changes/versionchanges.html:17
#, python-format
msgid "Automatically generated list of changes in version %(version)s"
msgstr "Automaatselt genereeritud nimekiri versiooni %(version)s muudatustest"
msgstr "Automaatselt genereeritud nimekiri versiooni %(version)s muutustest"
#: sphinx/themes/basic/changes/versionchanges.html:18
msgid "Library changes"
msgstr "Teegi muudatused"
msgstr "Teegi muutused"
#: sphinx/themes/basic/changes/versionchanges.html:23
msgid "C API changes"
msgstr "C API muudatused"
msgstr "C API muutused"
#: sphinx/themes/basic/changes/versionchanges.html:25
msgid "Other changes"
msgstr "Ülejäänud muudatused"
msgstr "Ülejäänud muutused"
#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:504
#: sphinx/writers/html.py:510
msgid "Permalink to this headline"
msgstr "Püsilink sellele pealkirjale"
msgstr "Püsiviit sellele pealkirjale"
#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
msgid "Permalink to this definition"
msgstr "Püsilink sellele definitsioonile"
msgstr "Püsiviit sellele definitsioonile"
#: sphinx/themes/basic/static/doctools.js:189
msgid "Hide Search Matches"

View File

@ -635,10 +635,10 @@ msgstr ". %(last_updated)s آخرین بروز رسانی در"
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
". <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> %(sphinx_version)s "
". <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s "
"ایجاد شده با"
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -632,7 +632,7 @@ msgstr ""
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""

View File

@ -635,10 +635,10 @@ msgstr "Mis à jour le %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Créé avec <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Créé avec <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -630,10 +630,10 @@ msgstr "Zadnji put ažurirano %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Izrađeno sa <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Izrađeno sa <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -1 +1 @@
Documentation.addTranslations({"locale": "hu", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Keresési találatok elrejtése", "Permalink to this definition": "Hivatkozás erre a definícióra", "Expand sidebar": "Oldalsáv kinyitása", "Permalink to this headline": "Hivatkozás erre a fejezetcímre", "Collapse sidebar": "Oldalsáv összezárása"}});
Documentation.addTranslations({"locale": "hu", "plural_expr": "0", "messages": {"Hide Search Matches": "Keres\u00e9si Tal\u00e1latok Elrejt\u00e9se", "Permalink to this definition": "Hivatkoz\u00e1s erre a defin\u00edci\u00f3ra", "Expand sidebar": "Oldals\u00e1v kinyit\u00e1sa", "Permalink to this headline": "Hivatkoz\u00e1s erre a fejezetc\u00edmre", "Collapse sidebar": "Oldals\u00e1v \u00f6sszez\u00e1r\u00e1sa"}});

View File

@ -438,10 +438,10 @@ msgstr "Utolsó frissítés %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"<a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"<a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s használatával készült."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -633,10 +633,10 @@ msgstr "Ultimo aggiornamento %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Creato con <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Creato con <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -630,10 +630,10 @@ msgstr "最終更新: %(last_updated)s"
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"このドキュメントは <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"このドキュメントは <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s で生成しました。"
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -635,10 +635,10 @@ msgstr "최종 업데이트: %(last_updated)s"
#: sphinx/themes/basic/layout.html:198
#, fuzzy, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"이 문서는 <a href=\"http://sphinx.pocoo.org/\">Sphinx</a>%(sphinx_version)s로 "
"이 문서는 <a href=\"http://sphinx-doc.org/\">Sphinx</a>%(sphinx_version)s로 "
"제공됩니다."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -628,10 +628,10 @@ msgstr "Paskutinis atnaujinimas %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Sukurta naudojant <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Sukurta naudojant <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -628,10 +628,10 @@ msgstr "Pēdējas izmaiņas %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Sagatavots izmantojot <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Sagatavots izmantojot <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -0,0 +1 @@
Documentation.addTranslations({"locale": "nb_NO", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Skjul s\u00f8keresultat", "Permalink to this definition": "Permalink til denne definisjonen", "Expand sidebar": "Utvid sidepanelet", "Permalink to this headline": "Permalink til denne oversikten", "Collapse sidebar": "Skjul sidepanelet"}});

Binary file not shown.

View File

@ -624,10 +624,10 @@ msgstr "Sist oppdatert %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Lagd med <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Lagd med <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -600,7 +600,7 @@ msgstr "नेभिगेसन "
#: sphinx/themes/basic/layout.html:122
#, python-format
msgid "Search within %(docstitle)s"
msgstr "भित्र-भित्रै खोज्नुहोस्"
msgstr ""
#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
@ -628,14 +628,14 @@ msgstr "यो भन्दा अगाडी %(last_updated)s मा अपड
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr "<a href=\"http://sphinx.pocoo.org/\">Sphinx</a> प्रयोग गरेर बनाइएको"
msgstr ""
#: sphinx/themes/basic/opensearch.xml:4
#, python-format
msgid "Search %(docstitle)s"
msgstr "खोज्नुहोस्"
msgstr ""
#: sphinx/themes/basic/relations.html:11
msgid "Previous topic"

View File

@ -632,10 +632,10 @@ msgstr "Laatste aanpassing op %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Aangemaakt met <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Aangemaakt met <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -1 +0,0 @@
Documentation.addTranslations({"locale": "no_NB", "plural_expr": "(n != 1)", "messages": {"Hide Search Matches": "Skjul S\u00f6kresultater", "Permalink to this definition": "Permalink til denne definisjonen", "Expand sidebar": "Utvid sidepanelet", "Permalink to this headline": "Permalink til denne overskriften", "Collapse sidebar": "Kollaps sidepanelet"}});

View File

@ -556,7 +556,7 @@ msgstr "wszystkie rozdziały i podrozdziały"
#: sphinx/themes/basic/defindex.html:26
msgid "search this documentation"
msgstr "przyszukaj tę dokumentację"
msgstr "przeszukaj tę dokumentację"
#: sphinx/themes/basic/defindex.html:28
msgid "Global Module Index"
@ -625,10 +625,10 @@ msgstr "Ostatnia modyfikacja %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Utworzone przy pomocy <a href=\"http://sphinx.pocoo.org/\">Sphinx</a>'a "
"Utworzone przy pomocy <a href=\"http://sphinx-doc.org/\">Sphinx</a>'a "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4
@ -656,7 +656,7 @@ msgstr "następny rozdział"
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr "Aby umożliwić wuszukiwanie, proszę włączyć JavaScript."
msgstr "Aby umożliwić wyszukiwanie, proszę włączyć JavaScript."
#: sphinx/themes/basic/search.html:29
msgid ""
@ -696,7 +696,7 @@ msgstr "Ta strona"
#: sphinx/themes/basic/changes/versionchanges.html:12
#, python-format
msgid "Changes in Version %(version)s &mdash; %(docstitle)s"
msgstr "Zmiany w wesji %(version)s &mdash; %(docstitle)s"
msgstr "Zmiany w wersji %(version)s &mdash; %(docstitle)s"
#: sphinx/themes/basic/changes/rstsource.html:5
#, python-format

View File

@ -628,10 +628,10 @@ msgstr "Última atualização em %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Criado com <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Criado com <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -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": {"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": ""}});
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": "\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c", "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": "\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0431\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0430\u043d\u0435\u043b\u044c"}});

View File

@ -1,21 +1,20 @@
# Russian translations for Sphinx.
# Copyright (C) 2008 ORGANIZATION
# This file is distributed under the same license as the Sphinx project.
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: Sphinx 0.6b1\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2011-09-21 10:06+0200\n"
"PO-Revision-Date: 2011-09-21 10:14+0200\n"
"Last-Translator: alexander smishlajev <alex@tycobka.lv>\n"
"Language-Team: ru <LL@li.org>\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-08-12 21:48+0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
#: sphinx/config.py:81
#, python-format
@ -24,21 +23,22 @@ msgstr ""
#: sphinx/environment.py:119 sphinx/writers/latex.py:190
#: sphinx/writers/manpage.py:67 sphinx/writers/texinfo.py:203
#: sphinx/writers/latex.py:191 sphinx/environment.py:113
#, python-format
msgid "%B %d, %Y"
msgstr "%d %B %Y"
#: sphinx/environment.py:1625
#: sphinx/environment.py:1625 sphinx/environment.py:1638
#, python-format
msgid "see %s"
msgstr ""
#: sphinx/environment.py:1628
#: sphinx/environment.py:1628 sphinx/environment.py:1641
#, python-format
msgid "see also %s"
msgstr ""
#: sphinx/roles.py:175
#: sphinx/roles.py:175 sphinx/roles.py:176
#, fuzzy, python-format
msgid "Python Enhancement Proposals; PEP %s"
msgstr "Python Enhancement Proposals; PEP %s"
@ -51,24 +51,25 @@ msgstr "Встроенные функции"
msgid "Module level"
msgstr "Модуль"
#: sphinx/builders/html.py:274
#: sphinx/builders/html.py:274 sphinx/builders/html.py:276
#, python-format
msgid "%b %d, %Y"
msgstr "%d %b %Y"
#: sphinx/builders/html.py:293 sphinx/themes/basic/defindex.html:30
#: sphinx/builders/html.py:295
msgid "General Index"
msgstr "Словарь-указатель"
msgstr "Алфавитный указатель"
#: sphinx/builders/html.py:293
#: sphinx/builders/html.py:293 sphinx/builders/html.py:295
msgid "index"
msgstr "словарь"
msgstr "указатель"
#: sphinx/builders/html.py:353
#: sphinx/builders/html.py:353 sphinx/builders/html.py:355
msgid "next"
msgstr "следующий"
#: sphinx/builders/html.py:362
#: sphinx/builders/html.py:362 sphinx/builders/html.py:364
msgid "previous"
msgstr "предыдущий"
@ -76,24 +77,24 @@ msgstr "предыдущий"
msgid " (in "
msgstr " (в "
#: sphinx/directives/other.py:136
#: sphinx/directives/other.py:136 sphinx/directives/other.py:138
msgid "Section author: "
msgstr "Автор секции: "
msgstr "Автор раздела: "
#: sphinx/directives/other.py:138
#: sphinx/directives/other.py:138 sphinx/directives/other.py:140
msgid "Module author: "
msgstr "Автор модуля: "
#: sphinx/directives/other.py:140
#: sphinx/directives/other.py:140 sphinx/directives/other.py:142
#, fuzzy
msgid "Code author: "
msgstr "Автор модуля: "
#: sphinx/directives/other.py:142
#: sphinx/directives/other.py:142 sphinx/directives/other.py:144
msgid "Author: "
msgstr "Автор: "
#: sphinx/directives/other.py:215
#: sphinx/directives/other.py:215 sphinx/directives/other.py:219
msgid "See also"
msgstr "См.также"
@ -162,22 +163,22 @@ msgstr "тип"
msgid "variable"
msgstr "Переменная"
#: sphinx/domains/cpp.py:904
#: sphinx/domains/cpp.py:904 sphinx/domains/cpp.py:1020
#, python-format
msgid "%s (C++ class)"
msgstr "%s (класс C++)"
#: sphinx/domains/cpp.py:919
#: sphinx/domains/cpp.py:919 sphinx/domains/cpp.py:1043
#, python-format
msgid "%s (C++ type)"
msgstr "%s (тип C++)"
#: sphinx/domains/cpp.py:938
#: sphinx/domains/cpp.py:938 sphinx/domains/cpp.py:1063
#, python-format
msgid "%s (C++ member)"
msgstr "%s (поле C++)"
#: sphinx/domains/cpp.py:990
#: sphinx/domains/cpp.py:990 sphinx/domains/cpp.py:1119
#, python-format
msgid "%s (C++ function)"
msgstr "%s (функция C++)"
@ -188,11 +189,13 @@ msgid "class"
msgstr "класс"
#: sphinx/domains/javascript.py:106 sphinx/domains/python.py:254
#: sphinx/domains/python.py:253
#, python-format
msgid "%s() (built-in function)"
msgstr "%s() (встроенная функция)"
#: sphinx/domains/javascript.py:107 sphinx/domains/python.py:318
#: sphinx/domains/python.py:317
#, python-format
msgid "%s() (%s method)"
msgstr "%s() (метод %s)"
@ -208,6 +211,7 @@ msgid "%s (global variable or constant)"
msgstr ""
#: sphinx/domains/javascript.py:113 sphinx/domains/python.py:356
#: sphinx/domains/python.py:355
#, python-format
msgid "%s (%s attribute)"
msgstr "%s (атрибут %s)"
@ -240,56 +244,59 @@ msgstr "Исключение"
#: sphinx/domains/python.py:255 sphinx/domains/python.py:312
#: sphinx/domains/python.py:324 sphinx/domains/python.py:337
#: sphinx/domains/python.py:254 sphinx/domains/python.py:311
#: sphinx/domains/python.py:323 sphinx/domains/python.py:336
#, python-format
msgid "%s() (in module %s)"
msgstr "%s() (в модуле %s)"
#: sphinx/domains/python.py:258
#: sphinx/domains/python.py:258 sphinx/domains/python.py:257
#, python-format
msgid "%s (built-in variable)"
msgstr "%s (встроенная переменная)"
#: sphinx/domains/python.py:259 sphinx/domains/python.py:350
#: sphinx/domains/python.py:258 sphinx/domains/python.py:349
#, python-format
msgid "%s (in module %s)"
msgstr "%s (в модуле %s)"
#: sphinx/domains/python.py:275
#: sphinx/domains/python.py:275 sphinx/domains/python.py:274
#, python-format
msgid "%s (built-in class)"
msgstr "%s (встроенный класс)"
#: sphinx/domains/python.py:276
#: sphinx/domains/python.py:276 sphinx/domains/python.py:275
#, python-format
msgid "%s (class in %s)"
msgstr "%s (класс в %s)"
#: sphinx/domains/python.py:316
#: sphinx/domains/python.py:316 sphinx/domains/python.py:315
#, python-format
msgid "%s() (%s.%s method)"
msgstr "%s() (метод %s.%s)"
#: sphinx/domains/python.py:328
#: sphinx/domains/python.py:328 sphinx/domains/python.py:327
#, python-format
msgid "%s() (%s.%s static method)"
msgstr "%s() (статический метод %s.%s)"
#: sphinx/domains/python.py:331
#: sphinx/domains/python.py:331 sphinx/domains/python.py:330
#, python-format
msgid "%s() (%s static method)"
msgstr "%s() (статический метод %s)"
#: sphinx/domains/python.py:341
#: sphinx/domains/python.py:341 sphinx/domains/python.py:340
#, fuzzy, python-format
msgid "%s() (%s.%s class method)"
msgstr "%s() (метод %s.%s)"
#: sphinx/domains/python.py:344
#: sphinx/domains/python.py:344 sphinx/domains/python.py:343
#, fuzzy, python-format
msgid "%s() (%s class method)"
msgstr "%s() (метод %s)"
#: sphinx/domains/python.py:354
#: sphinx/domains/python.py:354 sphinx/domains/python.py:353
#, python-format
msgid "%s (%s.%s attribute)"
msgstr "%s (атрибут %s.%s)"
@ -308,7 +315,7 @@ msgstr "Состав модуля"
msgid "modules"
msgstr "модули"
#: sphinx/domains/python.py:537
#: sphinx/domains/python.py:537 sphinx/domains/python.py:538
msgid "Deprecated"
msgstr "Не рекомендуется"
@ -332,17 +339,17 @@ msgstr "статический метод"
msgid "module"
msgstr "модуль"
#: sphinx/domains/python.py:695
#: sphinx/domains/python.py:695 sphinx/domains/python.py:696
#, fuzzy
msgid " (deprecated)"
msgstr " (не рекомендуется)"
#: sphinx/domains/rst.py:55
#: sphinx/domains/rst.py:55 sphinx/domains/rst.py:53
#, python-format
msgid "%s (directive)"
msgstr ""
#: sphinx/domains/rst.py:57
#: sphinx/domains/rst.py:57 sphinx/domains/rst.py:55
#, python-format
msgid "%s (role)"
msgstr ""
@ -391,6 +398,7 @@ msgstr ""
#: 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:179 sphinx/writers/texinfo.py:456
#: sphinx/writers/latex.py:180
msgid "Index"
msgstr "Алфавитный указатель"
@ -402,36 +410,36 @@ msgstr "Состав модуля"
msgid "Search Page"
msgstr "Поиск"
#: sphinx/ext/autodoc.py:1002
#: sphinx/ext/autodoc.py:1002 sphinx/ext/autodoc.py:1010
#, python-format
msgid " Bases: %s"
msgstr " Базовые классы: %s"
#: sphinx/ext/autodoc.py:1038
#: sphinx/ext/autodoc.py:1038 sphinx/ext/autodoc.py:1046
#, python-format
msgid "alias of :class:`%s`"
msgstr "псевдоним класса :class:`%s`"
#: sphinx/ext/todo.py:41
#: sphinx/ext/todo.py:41 sphinx/ext/todo.py:42
msgid "Todo"
msgstr "План"
#: sphinx/ext/todo.py:109
#: sphinx/ext/todo.py:109 sphinx/ext/todo.py:110
#, fuzzy, python-format
msgid "(The <<original entry>> is located in %s, line %d.)"
msgstr "(Исходный элемент находится в %s, в строке %d.)"
#: sphinx/ext/todo.py:117
#: sphinx/ext/todo.py:117 sphinx/ext/todo.py:119
msgid "original entry"
msgstr ""
#: sphinx/ext/viewcode.py:70
msgid "[source]"
msgstr ""
msgstr "[исходный код]"
#: sphinx/ext/viewcode.py:117
msgid "[docs]"
msgstr ""
msgstr "[документация]"
#: sphinx/ext/viewcode.py:131
#, fuzzy
@ -441,15 +449,15 @@ msgstr "модуль"
#: sphinx/ext/viewcode.py:137
#, python-format
msgid "<h1>Source code for %s</h1>"
msgstr ""
msgstr "<h1>Исходный код %s</h1>"
#: sphinx/ext/viewcode.py:164
msgid "Overview: module code"
msgstr ""
msgstr "Обзор: исходный код модуля"
#: sphinx/ext/viewcode.py:165
msgid "<h1>All modules for which code is available</h1>"
msgstr ""
msgstr "<h1>Все модули, в которых есть код</h1>"
#: sphinx/locale/__init__.py:155
msgid "Attention"
@ -481,7 +489,7 @@ msgstr "Примечание"
#: sphinx/locale/__init__.py:162
msgid "See Also"
msgstr "См.также"
msgstr "См. также"
#: sphinx/locale/__init__.py:163
msgid "Tip"
@ -529,7 +537,7 @@ msgstr "базовая функция"
#: sphinx/themes/agogo/layout.html:45 sphinx/themes/basic/globaltoc.html:10
#: sphinx/themes/basic/localtoc.html:11
msgid "Table Of Contents"
msgstr "Содержание"
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
@ -546,7 +554,7 @@ msgstr "Введите слова для поиска или имя модуля
#: sphinx/themes/agogo/layout.html:78 sphinx/themes/basic/sourcelink.html:14
msgid "Show Source"
msgstr "Показать исходный текст"
msgstr "Исходный текст"
#: sphinx/themes/basic/defindex.html:11
msgid "Overview"
@ -558,7 +566,7 @@ msgstr "Таблицы и указатели:"
#: sphinx/themes/basic/defindex.html:23
msgid "Complete Table of Contents"
msgstr "Подробное оглавление"
msgstr "Полное оглавление"
#: sphinx/themes/basic/defindex.html:24
msgid "lists all sections and subsections"
@ -566,7 +574,7 @@ msgstr "список всех разделов и подразделов"
#: sphinx/themes/basic/defindex.html:26
msgid "search this documentation"
msgstr "поиск во всем документе"
msgstr "поиск в документации"
#: sphinx/themes/basic/defindex.html:28
msgid "Global Module Index"
@ -611,16 +619,16 @@ msgstr "Поиск в документе «%(docstitle)s»"
#: sphinx/themes/basic/layout.html:131
msgid "About these documents"
msgstr "Об этих документах"
msgstr "Об этих документах"
#: sphinx/themes/basic/layout.html:140
msgid "Copyright"
msgstr "Copyright"
msgstr "Авторские права"
#: sphinx/themes/basic/layout.html:189
#, python-format
msgid "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "&copy; <a href=\"%(path)s\">Авторские права</a> %(copyright)s."
#: sphinx/themes/basic/layout.html:191
#, python-format
@ -630,15 +638,15 @@ msgstr "&copy; Copyright %(copyright)s."
#: sphinx/themes/basic/layout.html:195
#, python-format
msgid "Last updated on %(last_updated)s."
msgstr "Дата последнего обновления: %(last_updated)s."
msgstr "Обновлено: %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"При создании использован <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Создано с помощью <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4
@ -666,7 +674,7 @@ msgstr "следующая глава"
msgid ""
"Please activate JavaScript to enable the search\n"
" functionality."
msgstr "Для выполнения поиска необходима поддержка JavaScript в браузере."
msgstr "Для работы поиска включите JavaScript в браузере."
#: sphinx/themes/basic/search.html:29
msgid ""
@ -675,11 +683,10 @@ msgid ""
" 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"
@ -691,7 +698,7 @@ msgstr "Результаты поиска"
#: sphinx/themes/basic/search.html:42
msgid "Your search did not match any results."
msgstr "Результатов по вашему запросу не найдено."
msgstr "Страниц по вашему запросу не найдено."
#: sphinx/themes/basic/searchbox.html:12
msgid "Quick search"
@ -723,18 +730,19 @@ msgstr "Изменения в библиотеке"
#: sphinx/themes/basic/changes/versionchanges.html:23
msgid "C API changes"
msgstr "Изменения в C API"
msgstr "Изменения в API C"
#: sphinx/themes/basic/changes/versionchanges.html:25
msgid "Other changes"
msgstr "Другие изменения"
#: sphinx/themes/basic/static/doctools.js:154 sphinx/writers/html.py:504
#: sphinx/writers/html.py:510
#: sphinx/writers/html.py:510 sphinx/writers/html.py:516
msgid "Permalink to this headline"
msgstr "Ссылка на этот заголовок"
#: sphinx/themes/basic/static/doctools.js:160 sphinx/writers/html.py:92
#: sphinx/writers/html.py:94
msgid "Permalink to this definition"
msgstr "Ссылка на это определение"
@ -744,36 +752,55 @@ msgstr "Снять выделение"
#: sphinx/themes/default/static/sidebar.js:69
msgid "Expand sidebar"
msgstr ""
msgstr "Развернуть боковую панель"
#: 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:177
#: sphinx/writers/latex.py:177 sphinx/writers/latex.py:178
msgid "Release"
msgstr "Выпуск"
#: sphinx/writers/latex.py:594 sphinx/writers/manpage.py:182
#: sphinx/writers/texinfo.py:589
#: sphinx/writers/texinfo.py:589 sphinx/writers/latex.py:601
msgid "Footnotes"
msgstr ""
msgstr "Сноски"
#: sphinx/writers/latex.py:676
#: sphinx/writers/latex.py:676 sphinx/writers/latex.py:685
msgid "continued from previous page"
msgstr ""
msgstr "продолжение с предыдущей страницы"
#: sphinx/writers/latex.py:681
#: sphinx/writers/latex.py:681 sphinx/writers/latex.py:691
#, fuzzy
msgid "Continued on next page"
msgstr "Полный алфавитный указатель на одной странице"
msgstr "Продолжается на следующей странице"
#: sphinx/writers/text.py:437
#: sphinx/writers/text.py:437 sphinx/writers/manpage.py:234
#: sphinx/writers/text.py:439
msgid "[image]"
msgstr "[рисунок]"
#: sphinx/writers/manpage.py:233 sphinx/writers/text.py:438
#, python-format
msgid "[image: %s]"
msgstr "[рисунок: %s]"
#: sphinx/ext/graphviz.py:302 sphinx/ext/graphviz.py:310
#, python-format
msgid "[graph: %s]"
msgstr "[иллюстрация: %s]"
#: sphinx/ext/graphviz.py:304 sphinx/ext/graphviz.py:312
msgid "[graph]"
msgstr "[иллюстрация]"
#: sphinx/ext/intersphinx.py:224
#, python-format
msgid "(in %s v%s)"
msgstr ""

View File

@ -1 +1 @@
Documentation.addTranslations({"locale": "sk", "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": ""}});
Documentation.addTranslations({"locale": "sk", "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": "Skry\u0165 v\u00fdsledky vyh\u013ead\u00e1vania", "Permalink to this definition": "Trval\u00fd odkaz na t\u00fato defin\u00edciu", "Expand sidebar": "", "Permalink to this headline": "Trval\u00fd odkaz na tento nadpis", "Collapse sidebar": ""}});

View File

@ -635,10 +635,10 @@ msgstr "Aktualizované dňa %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Vytvorené pomocou <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Vytvorené pomocou <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -630,10 +630,10 @@ msgstr "Zadnjič posodobljeno %(last_updated)s."
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""
"Narejeno s <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Narejeno s <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
#: sphinx/themes/basic/opensearch.xml:4

View File

@ -628,7 +628,7 @@ msgstr ""
#: sphinx/themes/basic/layout.html:198
#, python-format
msgid ""
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
"Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> "
"%(sphinx_version)s."
msgstr ""

Some files were not shown because too many files have changed in this diff Show More