mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
merge with main
This commit is contained in:
commit
1219e3e73a
43
CHANGES
43
CHANGES
@ -37,6 +37,9 @@ New features added
|
|||||||
the directive -- this allows you to define your document
|
the directive -- this allows you to define your document
|
||||||
structure, but place the links yourself.
|
structure, but place the links yourself.
|
||||||
|
|
||||||
|
- Image paths can now be absolute (like ``/images/foo.png``).
|
||||||
|
They are treated as relative to the top source directory.
|
||||||
|
|
||||||
- #52: There is now a ``hlist`` directive, creating a compact
|
- #52: There is now a ``hlist`` directive, creating a compact
|
||||||
list by placing distributing items into multiple columns.
|
list by placing distributing items into multiple columns.
|
||||||
|
|
||||||
@ -49,11 +52,15 @@ New features added
|
|||||||
- #23: Added a ``classmethod`` directive along with ``method``
|
- #23: Added a ``classmethod`` directive along with ``method``
|
||||||
and ``staticmethod``.
|
and ``staticmethod``.
|
||||||
|
|
||||||
- Added a toctree variable to the templates, and the ability to
|
- Added a ``toctree`` callable to the templates, and the ability
|
||||||
include external links in toctrees.
|
to include external links in toctrees.
|
||||||
|
|
||||||
* Configuration:
|
* Configuration:
|
||||||
|
|
||||||
|
- The new config value ``rst_epilog`` can contain reST that is
|
||||||
|
appended to each source file that is read. This is the right
|
||||||
|
place for global substitutions.
|
||||||
|
|
||||||
- The new ``html_add_permalinks`` config value can be used to
|
- The new ``html_add_permalinks`` config value can be used to
|
||||||
switch off the generated "paragraph sign" permalinks for each
|
switch off the generated "paragraph sign" permalinks for each
|
||||||
heading and definition environment.
|
heading and definition environment.
|
||||||
@ -61,12 +68,21 @@ New features added
|
|||||||
- The new ``html_show_sourcelink`` config value can be used to
|
- The new ``html_show_sourcelink`` config value can be used to
|
||||||
switch off the links to the reST sources in the sidebar.
|
switch off the links to the reST sources in the sidebar.
|
||||||
|
|
||||||
|
- The new ``html_collapse_toctree`` config value can be used to
|
||||||
|
"collapse" the generated toctree given to the templates.
|
||||||
|
|
||||||
- The default value for ``htmlhelp_basename`` is now the project
|
- The default value for ``htmlhelp_basename`` is now the project
|
||||||
title, cleaned up as a filename.
|
title, cleaned up as a filename.
|
||||||
|
|
||||||
|
|
||||||
- The new ``modindex_common_prefix`` config value can be used to
|
- The new ``modindex_common_prefix`` config value can be used to
|
||||||
ignore certain package names for module index sorting.
|
ignore certain package names for module index sorting.
|
||||||
|
|
||||||
|
- The new ``trim_footnote_reference_space`` config value mirrors
|
||||||
|
the docutils config value of the same name and removes the
|
||||||
|
space before a footnote reference that is necessary for reST
|
||||||
|
to recognize the reference.
|
||||||
|
|
||||||
* Builders:
|
* Builders:
|
||||||
|
|
||||||
- New builder for Qt help collections, by Antonio Valentino.
|
- New builder for Qt help collections, by Antonio Valentino.
|
||||||
@ -78,12 +94,19 @@ New features added
|
|||||||
|
|
||||||
- Italian by Sandro Dentella.
|
- Italian by Sandro Dentella.
|
||||||
|
|
||||||
|
- Ukrainian by Petro Sasnyk.
|
||||||
|
|
||||||
|
- Finnish by Jukka Inkeri.
|
||||||
|
|
||||||
* Extensions and API:
|
* Extensions and API:
|
||||||
|
|
||||||
- Autodoc now handles documented attributes.
|
- Autodoc now handles documented attributes.
|
||||||
|
|
||||||
- Autodoc now handles inner classes and their methods.
|
- Autodoc now handles inner classes and their methods.
|
||||||
|
|
||||||
|
- Autodoc can document classes as functions now if explicitly
|
||||||
|
marked with `autofunction`.
|
||||||
|
|
||||||
- There is now a ``Sphinx.add_lexer()`` method to be able to use
|
- There is now a ``Sphinx.add_lexer()`` method to be able to use
|
||||||
custom Pygments lexers easily.
|
custom Pygments lexers easily.
|
||||||
|
|
||||||
@ -106,6 +129,22 @@ New features added
|
|||||||
Release 0.5.2 (in development)
|
Release 0.5.2 (in development)
|
||||||
==============================
|
==============================
|
||||||
|
|
||||||
|
* Recognize toctree directives that are not on section toplevel,
|
||||||
|
but within block items, such as tables.
|
||||||
|
|
||||||
|
* Use a new RFC base URL, since rfc.org seems down.
|
||||||
|
|
||||||
|
* Fix a crash in the todolist directive when no todo items are
|
||||||
|
defined.
|
||||||
|
|
||||||
|
* Don't call LaTeX or dvipng over and over again if it was not
|
||||||
|
found once, and use text-only latex as a substitute in that case.
|
||||||
|
|
||||||
|
* Fix problems with footnotes in the LaTeX output.
|
||||||
|
|
||||||
|
* Prevent double hyphens becoming en-dashes in literal code in
|
||||||
|
the LaTeX output.
|
||||||
|
|
||||||
* Open literalinclude files in universal newline mode to allow
|
* Open literalinclude files in universal newline mode to allow
|
||||||
arbitrary newline conventions.
|
arbitrary newline conventions.
|
||||||
|
|
||||||
|
15
EXAMPLES
15
EXAMPLES
@ -7,8 +7,10 @@ included, please mail to `the Google group
|
|||||||
<http://groups.google.com/group/sphinx-dev>`_.
|
<http://groups.google.com/group/sphinx-dev>`_.
|
||||||
|
|
||||||
* APSW: http://apsw.googlecode.com/svn/publish/index.html
|
* APSW: http://apsw.googlecode.com/svn/publish/index.html
|
||||||
|
* boostmpi: http://documen.tician.de/boostmpi/
|
||||||
* Calibre: http://calibre.kovidgoyal.net/user_manual/
|
* Calibre: http://calibre.kovidgoyal.net/user_manual/
|
||||||
* Chaco: http://code.enthought.com/projects/chaco/docs/html/
|
* Chaco: http://code.enthought.com/projects/chaco/docs/html/
|
||||||
|
* CodePy: http://documen.tician.de/codepy/
|
||||||
* Cython: http://docs.cython.org/
|
* Cython: http://docs.cython.org/
|
||||||
* Director: http://packages.python.org/director/
|
* Director: http://packages.python.org/director/
|
||||||
* Django: http://docs.djangoproject.com/
|
* Django: http://docs.djangoproject.com/
|
||||||
@ -16,30 +18,39 @@ included, please mail to `the Google group
|
|||||||
* GeoDjango: http://geodjango.org/docs/
|
* GeoDjango: http://geodjango.org/docs/
|
||||||
* Glashammer: http://glashammer.org/
|
* Glashammer: http://glashammer.org/
|
||||||
* Grok: http://grok.zope.org/doc/current/
|
* Grok: http://grok.zope.org/doc/current/
|
||||||
|
* Hedge: http://documen.tician.de/hedge/
|
||||||
* IFM: http://fluffybunny.memebot.com/ifm-docs/index.html
|
* IFM: http://fluffybunny.memebot.com/ifm-docs/index.html
|
||||||
* Jinja: http://jinja.pocoo.org/2/documentation/
|
* Jinja: http://jinja.pocoo.org/2/documentation/
|
||||||
* MapServer: http://mapserver.osgeo.org/
|
* MapServer: http://mapserver.osgeo.org/
|
||||||
* Matplotlib: http://matplotlib.sourceforge.net/
|
* Matplotlib: http://matplotlib.sourceforge.net/
|
||||||
* Mayavi: http://code.enthought.com/projects/mayavi/docs/development/html/mayavi
|
* Mayavi: http://code.enthought.com/projects/mayavi/docs/development/html/mayavi
|
||||||
|
* MeshPy: http://documen.tician.de/meshpy/
|
||||||
* Mixin.com: http://dev.mixin.com/
|
* Mixin.com: http://dev.mixin.com/
|
||||||
* mpmath: http://mpmath.googlecode.com/svn/trunk/doc/build/index.html
|
* mpmath: http://mpmath.googlecode.com/svn/trunk/doc/build/index.html
|
||||||
* NetworkX: http://networkx.lanl.gov/
|
* NetworkX: http://networkx.lanl.gov/
|
||||||
* NumPy: http://docs.scipy.org/doc/numpy/reference/
|
* NumPy: http://docs.scipy.org/doc/numpy/reference/
|
||||||
* ObjectListView: http://objectlistview.sourceforge.net/python
|
* ObjectListView: http://objectlistview.sourceforge.net/python
|
||||||
* OpenLayers: http://docs.openlayers.org/
|
* OpenLayers: http://docs.openlayers.org/
|
||||||
|
* openWNS: http://docs.openwns.org/
|
||||||
* Paste: http://pythonpaste.org/script/
|
* Paste: http://pythonpaste.org/script/
|
||||||
* Paver: http://www.blueskyonmars.com/projects/paver/
|
* Paver: http://www.blueskyonmars.com/projects/paver/
|
||||||
* Py on Windows: http://timgolden.me.uk/python-on-windows/
|
* Py on Windows: http://timgolden.me.uk/python-on-windows/
|
||||||
|
* PyCuda: http://documen.tician.de/pycuda/
|
||||||
* PyEphem: http://rhodesmill.org/pyephem/
|
* PyEphem: http://rhodesmill.org/pyephem/
|
||||||
* PyPubSub: http://pubsub.sourceforge.net/
|
* Pyevolve: http://pyevolve.sourceforge.net/
|
||||||
* PyUblas: http://tiker.net/doc/pyublas/
|
* Pylo: http://documen.tician.de/pylo/
|
||||||
* Pylons: http://docs.pylonshq.com/
|
* Pylons: http://docs.pylonshq.com/
|
||||||
|
* PyPubSub: http://pubsub.sourceforge.net/
|
||||||
|
* pyrticle: http://documen.tician.de/pyrticle/
|
||||||
* Pysparse: http://pysparse.sourceforge.net/
|
* Pysparse: http://pysparse.sourceforge.net/
|
||||||
* Python: http://docs.python.org/dev/
|
* Python: http://docs.python.org/dev/
|
||||||
* python-apt: http://people.debian.org/~jak/python-apt-doc/
|
* python-apt: http://people.debian.org/~jak/python-apt-doc/
|
||||||
|
* PyUblas: http://documen.tician.de/pyublas/
|
||||||
* Reteisi: http://docs.argolinux.org/reteisi/
|
* Reteisi: http://docs.argolinux.org/reteisi/
|
||||||
|
* Roundup: http://www.roundup-tracker.org/
|
||||||
* Satchmo: http://www.satchmoproject.com/docs/svn/
|
* Satchmo: http://www.satchmoproject.com/docs/svn/
|
||||||
* Self: http://selflanguage.org/
|
* Self: http://selflanguage.org/
|
||||||
|
* SimPy: http://simpy.sourceforge.net/
|
||||||
* Sphinx: http://sphinx.pocoo.org/
|
* Sphinx: http://sphinx.pocoo.org/
|
||||||
* SQLAlchemy: http://www.sqlalchemy.org/docs/
|
* SQLAlchemy: http://www.sqlalchemy.org/docs/
|
||||||
* Sqlkit: http://sqlkit.argolinux.org/
|
* Sqlkit: http://sqlkit.argolinux.org/
|
||||||
|
@ -57,8 +57,8 @@ tables of contents. The ``toctree`` directive is the central element.
|
|||||||
chapter", "previous chapter" and "parent chapter" links.
|
chapter", "previous chapter" and "parent chapter" links.
|
||||||
|
|
||||||
Document titles in the :dir:`toctree` will be automatically read from the
|
Document titles in the :dir:`toctree` will be automatically read from the
|
||||||
title of the referenced document. If that isn't what you want, you can give
|
title of the referenced document. If that isn't what you want, you can
|
||||||
the specify an explicit title and target using a similar syntax to reST
|
specify an explicit title and target using a similar syntax to reST
|
||||||
hyperlinks (and Sphinx's :ref:`cross-referencing syntax <xref-syntax>`). This
|
hyperlinks (and Sphinx's :ref:`cross-referencing syntax <xref-syntax>`). This
|
||||||
looks like::
|
looks like::
|
||||||
|
|
||||||
|
@ -141,8 +141,24 @@ General configuration
|
|||||||
instance is then used to render HTML documents, and possibly the output of
|
instance is then used to render HTML documents, and possibly the output of
|
||||||
other builders (currently the changes builder).
|
other builders (currently the changes builder).
|
||||||
|
|
||||||
|
.. confval:: rst_epilog
|
||||||
|
|
||||||
|
.. index:: pair: global; substitutions
|
||||||
|
|
||||||
|
A string of reStructuredText that will be included at the end of every source
|
||||||
|
file that is read. This is the right place to add substitutions that should
|
||||||
|
be available in every file. An example::
|
||||||
|
|
||||||
|
rst_epilog = """
|
||||||
|
.. |psf| replace:: Python Software Foundation
|
||||||
|
"""
|
||||||
|
|
||||||
|
.. versionadded:: 0.6
|
||||||
|
|
||||||
.. confval:: default_role
|
.. confval:: default_role
|
||||||
|
|
||||||
|
.. index:: default; role
|
||||||
|
|
||||||
The name of a reST role (builtin or Sphinx extension) to use as the default
|
The name of a reST role (builtin or Sphinx extension) to use as the default
|
||||||
role, that is, for text marked up ```like this```. This can be set to
|
role, that is, for text marked up ```like this```. This can be set to
|
||||||
``'obj'`` to make ```filter``` a cross-reference to the function "filter".
|
``'obj'`` to make ```filter``` a cross-reference to the function "filter".
|
||||||
@ -214,12 +230,14 @@ Project information
|
|||||||
* ``de`` -- German
|
* ``de`` -- German
|
||||||
* ``en`` -- English
|
* ``en`` -- English
|
||||||
* ``es`` -- Spanish
|
* ``es`` -- Spanish
|
||||||
|
* ``fi`` -- Finnish
|
||||||
* ``fr`` -- French
|
* ``fr`` -- French
|
||||||
* ``it`` -- Italian
|
* ``it`` -- Italian
|
||||||
* ``nl`` -- Dutch
|
* ``nl`` -- Dutch
|
||||||
* ``pl`` -- Polish
|
* ``pl`` -- Polish
|
||||||
* ``pt_BR`` -- Brazilian Portuguese
|
* ``pt_BR`` -- Brazilian Portuguese
|
||||||
* ``sl`` -- Slovenian
|
* ``sl`` -- Slovenian
|
||||||
|
* ``uk_UA`` -- Ukrainian
|
||||||
* ``zh_TW`` -- Traditional Chinese
|
* ``zh_TW`` -- Traditional Chinese
|
||||||
|
|
||||||
.. confval:: today
|
.. confval:: today
|
||||||
@ -271,7 +289,14 @@ Project information
|
|||||||
A boolean that decides whether :dir:`moduleauthor` and :dir:`sectionauthor`
|
A boolean that decides whether :dir:`moduleauthor` and :dir:`sectionauthor`
|
||||||
directives produce any output in the built files.
|
directives produce any output in the built files.
|
||||||
|
|
||||||
|
.. confval:: trim_footnote_reference_space
|
||||||
|
|
||||||
|
Trim spaces before footnote references that are necessary for the reST parser
|
||||||
|
to recognize the footnote, but do not look too nice in the output.
|
||||||
|
|
||||||
|
.. versionadded:: 0.6
|
||||||
|
|
||||||
|
|
||||||
.. _html-options:
|
.. _html-options:
|
||||||
|
|
||||||
Options for HTML output
|
Options for HTML output
|
||||||
@ -464,6 +489,14 @@ that use Sphinx' HTMLWriter class.
|
|||||||
|
|
||||||
.. versionadded:: 0.4
|
.. versionadded:: 0.4
|
||||||
|
|
||||||
|
.. confval:: html_collapse_toctree
|
||||||
|
|
||||||
|
If true, the toctree given to the templates as ``toctree`` will be collapsed,
|
||||||
|
i.e. only the subitems that contain the current page are visible. Default is
|
||||||
|
``False``.
|
||||||
|
|
||||||
|
.. versionadded:: 0.6
|
||||||
|
|
||||||
.. confval:: htmlhelp_basename
|
.. confval:: htmlhelp_basename
|
||||||
|
|
||||||
Output file base name for HTML help builder. Default is ``'pydoc'``.
|
Output file base name for HTML help builder. Default is ``'pydoc'``.
|
||||||
|
@ -15,6 +15,7 @@ Sphinx documentation contents
|
|||||||
templating
|
templating
|
||||||
extensions
|
extensions
|
||||||
|
|
||||||
|
faq
|
||||||
glossary
|
glossary
|
||||||
changes
|
changes
|
||||||
examples
|
examples
|
||||||
|
@ -17,8 +17,9 @@ if possible, reuse that support too.
|
|||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
:mod:`sphinx.ext.mathbase` does not need to be added to the
|
:mod:`sphinx.ext.mathbase` is not meant to be added to the
|
||||||
:confval:`extensions` config value.
|
:confval:`extensions` config value, instead, use either
|
||||||
|
:mod:`sphinx.ext.pngmath` or :mod:`sphinx.ext.jsmath` as described below.
|
||||||
|
|
||||||
The input language for mathematics is LaTeX markup. This is the de-facto
|
The input language for mathematics is LaTeX markup. This is the de-facto
|
||||||
standard for plain-text math notation and has the added advantage that no
|
standard for plain-text math notation and has the added advantage that no
|
||||||
|
20
doc/faq.rst
Normal file
20
doc/faq.rst
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
.. _faq:
|
||||||
|
|
||||||
|
Sphinx FAQ
|
||||||
|
==========
|
||||||
|
|
||||||
|
This is a list of Frequently Asked Questions about Sphinx. Feel free to
|
||||||
|
suggest new entries!
|
||||||
|
|
||||||
|
How do I...
|
||||||
|
-----------
|
||||||
|
|
||||||
|
... add global substitutions?
|
||||||
|
Add them in the :confval:`rst_epilog` config value.
|
||||||
|
|
||||||
|
... use Sphinx with Epydoc?
|
||||||
|
There's a third-party extension providing an `api role`_ which refers to
|
||||||
|
Epydoc's API docs for a given identifier.
|
||||||
|
|
||||||
|
|
||||||
|
.. _api role: http://git.savannah.gnu.org/cgit/kenozooid.git/tree/doc/extapi.py
|
15
doc/rest.rst
15
doc/rest.rst
@ -212,10 +212,14 @@ reST supports an image directive, used like so::
|
|||||||
.. image:: gnu.png
|
.. image:: gnu.png
|
||||||
(options)
|
(options)
|
||||||
|
|
||||||
When used within Sphinx, the file name given (here ``gnu.png``) must be relative
|
When used within Sphinx, the file name given (here ``gnu.png``) must either be
|
||||||
to the source file, and Sphinx will automatically copy image files over to a
|
relative to the source file, or absolute which means that they are relative to
|
||||||
subdirectory of the output directory on building (e.g. the ``_static`` directory
|
the top source directory. For example, the file ``sketch/spam.rst`` could refer
|
||||||
for HTML output.)
|
to the image ``images/spam.png`` as ``../images/spam.png`` or
|
||||||
|
``/images/spam.png``.
|
||||||
|
|
||||||
|
Sphinx will automatically copy image files over to a subdirectory of the output
|
||||||
|
directory on building (e.g. the ``_static`` directory for HTML output.)
|
||||||
|
|
||||||
Interpretation of image size options (``width`` and ``height``) is as follows:
|
Interpretation of image size options (``width`` and ``height``) is as follows:
|
||||||
if the size has no unit or the unit is pixels, the given size will only be
|
if the size has no unit or the unit is pixels, the given size will only be
|
||||||
@ -236,6 +240,9 @@ the former, while the HTML builder would prefer the latter.
|
|||||||
.. versionchanged:: 0.4
|
.. versionchanged:: 0.4
|
||||||
Added the support for file names ending in an asterisk.
|
Added the support for file names ending in an asterisk.
|
||||||
|
|
||||||
|
.. versionchanged:: 0.6
|
||||||
|
Image paths can now be absolute.
|
||||||
|
|
||||||
|
|
||||||
Footnotes
|
Footnotes
|
||||||
---------
|
---------
|
||||||
|
@ -18,15 +18,8 @@ from cStringIO import StringIO
|
|||||||
from docutils import nodes
|
from docutils import nodes
|
||||||
from docutils.parsers.rst import directives, roles
|
from docutils.parsers.rst import directives, roles
|
||||||
|
|
||||||
import sphinx
|
# create the error classes before importing the rest of Sphinx, so that
|
||||||
from sphinx.roles import xfileref_role, innernodetypes
|
# they can be imported in a circular fashion
|
||||||
from sphinx.config import Config
|
|
||||||
from sphinx.builders import BUILTIN_BUILDERS
|
|
||||||
from sphinx.directives import desc_directive, target_directive, \
|
|
||||||
additional_xref_types
|
|
||||||
from sphinx.environment import SphinxStandaloneReader
|
|
||||||
from sphinx.util.console import bold
|
|
||||||
|
|
||||||
|
|
||||||
class SphinxError(Exception):
|
class SphinxError(Exception):
|
||||||
"""
|
"""
|
||||||
@ -56,6 +49,16 @@ class ExtensionError(SphinxError):
|
|||||||
return parent_str
|
return parent_str
|
||||||
|
|
||||||
|
|
||||||
|
import sphinx
|
||||||
|
from sphinx.roles import xfileref_role, innernodetypes
|
||||||
|
from sphinx.config import Config
|
||||||
|
from sphinx.builders import BUILTIN_BUILDERS
|
||||||
|
from sphinx.directives import desc_directive, target_directive, \
|
||||||
|
additional_xref_types
|
||||||
|
from sphinx.environment import SphinxStandaloneReader
|
||||||
|
from sphinx.util.console import bold
|
||||||
|
|
||||||
|
|
||||||
# List of all known core events. Maps name to arguments description.
|
# List of all known core events. Maps name to arguments description.
|
||||||
events = {
|
events = {
|
||||||
'builder-inited': '',
|
'builder-inited': '',
|
||||||
|
@ -26,6 +26,7 @@ from sphinx.util import SEP, os_path, relative_uri, ensuredir, \
|
|||||||
movefile, ustrftime
|
movefile, ustrftime
|
||||||
from sphinx.search import js_index
|
from sphinx.search import js_index
|
||||||
from sphinx.builders import Builder, ENV_PICKLE_FILENAME
|
from sphinx.builders import Builder, ENV_PICKLE_FILENAME
|
||||||
|
from sphinx.application import SphinxError
|
||||||
from sphinx.highlighting import PygmentsBridge
|
from sphinx.highlighting import PygmentsBridge
|
||||||
from sphinx.util.console import bold
|
from sphinx.util.console import bold
|
||||||
from sphinx.writers.html import HTMLWriter, HTMLTranslator, \
|
from sphinx.writers.html import HTMLWriter, HTMLTranslator, \
|
||||||
@ -180,6 +181,10 @@ class StandaloneHTMLBuilder(Builder):
|
|||||||
)
|
)
|
||||||
self.globalcontext.update(self.config.html_context)
|
self.globalcontext.update(self.config.html_context)
|
||||||
|
|
||||||
|
def _get_local_toctree(self, docname):
|
||||||
|
return self.render_partial(self.env.get_toctree_for(
|
||||||
|
docname, self, self.config.html_collapse_toctree))['fragment']
|
||||||
|
|
||||||
def get_doc_context(self, docname, body, metatags):
|
def get_doc_context(self, docname, body, metatags):
|
||||||
"""Collect items for the template context of a page."""
|
"""Collect items for the template context of a page."""
|
||||||
# find out relations
|
# find out relations
|
||||||
@ -446,6 +451,9 @@ class StandaloneHTMLBuilder(Builder):
|
|||||||
[path.join(self.confdir, spath)
|
[path.join(self.confdir, spath)
|
||||||
for spath in self.config.html_static_path]
|
for spath in self.config.html_static_path]
|
||||||
for staticdirname in staticdirnames:
|
for staticdirname in staticdirnames:
|
||||||
|
if not path.isdir(staticdirname):
|
||||||
|
self.warn('static directory %r does not exist' % staticdirname)
|
||||||
|
continue
|
||||||
for filename in os.listdir(staticdirname):
|
for filename in os.listdir(staticdirname):
|
||||||
if filename.startswith('.'):
|
if filename.startswith('.'):
|
||||||
continue
|
continue
|
||||||
@ -533,6 +541,7 @@ class StandaloneHTMLBuilder(Builder):
|
|||||||
ctx['pathto'] = pathto
|
ctx['pathto'] = pathto
|
||||||
ctx['hasdoc'] = lambda name: name in self.env.all_docs
|
ctx['hasdoc'] = lambda name: name in self.env.all_docs
|
||||||
ctx['customsidebar'] = self.config.html_sidebars.get(pagename)
|
ctx['customsidebar'] = self.config.html_sidebars.get(pagename)
|
||||||
|
ctx['toctree'] = lambda: self._get_local_toctree(pagename)
|
||||||
ctx.update(addctx)
|
ctx.update(addctx)
|
||||||
|
|
||||||
self.app.emit('html-page-context', pagename, templatename,
|
self.app.emit('html-page-context', pagename, templatename,
|
||||||
@ -695,7 +704,6 @@ class JSONHTMLBuilder(SerializingHTMLBuilder):
|
|||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
if json is None:
|
if json is None:
|
||||||
from sphinx.application import SphinxError
|
|
||||||
raise SphinxError(
|
raise SphinxError(
|
||||||
'The module simplejson (or json in Python >= 2.6) '
|
'The module simplejson (or json in Python >= 2.6) '
|
||||||
'is not available. The JSONHTMLBuilder builder will not work.')
|
'is not available. The JSONHTMLBuilder builder will not work.')
|
||||||
|
@ -52,6 +52,10 @@ class LaTeXBuilder(Builder):
|
|||||||
else:
|
else:
|
||||||
return '%' + docname
|
return '%' + docname
|
||||||
|
|
||||||
|
def get_relative_uri(self, from_, to, typ=None):
|
||||||
|
# ignore source path
|
||||||
|
return self.get_target_uri(to, typ)
|
||||||
|
|
||||||
def init_document_data(self):
|
def init_document_data(self):
|
||||||
preliminary_document_data = map(list, self.config.latex_documents)
|
preliminary_document_data = map(list, self.config.latex_documents)
|
||||||
if not preliminary_document_data:
|
if not preliminary_document_data:
|
||||||
@ -72,11 +76,6 @@ class LaTeXBuilder(Builder):
|
|||||||
self.titles.append((docname, entry[2]))
|
self.titles.append((docname, entry[2]))
|
||||||
|
|
||||||
def write(self, *ignored):
|
def write(self, *ignored):
|
||||||
# first, assemble the "appendix" docs that are in every PDF
|
|
||||||
appendices = []
|
|
||||||
for fname in self.config.latex_appendices:
|
|
||||||
appendices.append(self.env.get_doctree(fname))
|
|
||||||
|
|
||||||
docwriter = LaTeXWriter(self)
|
docwriter = LaTeXWriter(self)
|
||||||
docsettings = OptionParser(
|
docsettings = OptionParser(
|
||||||
defaults=self.env.settings,
|
defaults=self.env.settings,
|
||||||
@ -94,7 +93,8 @@ class LaTeXBuilder(Builder):
|
|||||||
encoding='utf-8')
|
encoding='utf-8')
|
||||||
self.info("processing " + targetname + "... ", nonl=1)
|
self.info("processing " + targetname + "... ", nonl=1)
|
||||||
doctree = self.assemble_doctree(docname, toctree_only,
|
doctree = self.assemble_doctree(docname, toctree_only,
|
||||||
appendices=(docclass == 'manual') and appendices or [])
|
appendices=((docclass == 'manual') and
|
||||||
|
self.config.latex_appendices or []))
|
||||||
self.post_process_images(doctree)
|
self.post_process_images(doctree)
|
||||||
self.info("writing... ", nonl=1)
|
self.info("writing... ", nonl=1)
|
||||||
doctree.settings = docsettings
|
doctree.settings = docsettings
|
||||||
@ -142,7 +142,11 @@ class LaTeXBuilder(Builder):
|
|||||||
new_sect += node
|
new_sect += node
|
||||||
tree = new_tree
|
tree = new_tree
|
||||||
largetree = process_tree(indexfile, tree)
|
largetree = process_tree(indexfile, tree)
|
||||||
largetree.extend(appendices)
|
largetree['docname'] = indexfile
|
||||||
|
for docname in appendices:
|
||||||
|
appendix = self.env.get_doctree(docname)
|
||||||
|
appendix['docname'] = docname
|
||||||
|
largetree.append(appendix)
|
||||||
self.info()
|
self.info()
|
||||||
self.info("resolving references...")
|
self.info("resolving references...")
|
||||||
self.env.resolve_references(largetree, indexfile, self)
|
self.env.resolve_references(largetree, indexfile, self)
|
||||||
|
@ -45,6 +45,7 @@ class Config(object):
|
|||||||
default_role = (None, True),
|
default_role = (None, True),
|
||||||
add_function_parentheses = (True, True),
|
add_function_parentheses = (True, True),
|
||||||
add_module_names = (True, True),
|
add_module_names = (True, True),
|
||||||
|
trim_footnote_reference_space = (False, True),
|
||||||
show_authors = (False, True),
|
show_authors = (False, True),
|
||||||
pygments_style = (None, False),
|
pygments_style = (None, False),
|
||||||
highlight_language = ('python', False),
|
highlight_language = ('python', False),
|
||||||
@ -52,6 +53,7 @@ class Config(object):
|
|||||||
template_bridge = (None, False),
|
template_bridge = (None, False),
|
||||||
keep_warnings = (False, True),
|
keep_warnings = (False, True),
|
||||||
modindex_common_prefix = ([], False),
|
modindex_common_prefix = ([], False),
|
||||||
|
rst_epilog = (None, True),
|
||||||
|
|
||||||
# HTML options
|
# HTML options
|
||||||
html_theme = ('default', False),
|
html_theme = ('default', False),
|
||||||
@ -69,6 +71,7 @@ class Config(object):
|
|||||||
html_use_smartypants = (True, False),
|
html_use_smartypants = (True, False),
|
||||||
html_translator_class = (None, False),
|
html_translator_class = (None, False),
|
||||||
html_sidebars = ({}, False),
|
html_sidebars = ({}, False),
|
||||||
|
html_collapse_toctree = (False, False),
|
||||||
html_additional_pages = ({}, False),
|
html_additional_pages = ({}, False),
|
||||||
html_use_modindex = (True, False),
|
html_use_modindex = (True, False),
|
||||||
html_add_permalinks = (True, False),
|
html_add_permalinks = (True, False),
|
||||||
|
@ -429,6 +429,7 @@ def desc_directive(desctype, arguments, options, content, lineno,
|
|||||||
env = state.document.settings.env
|
env = state.document.settings.env
|
||||||
inode = addnodes.index(entries=[])
|
inode = addnodes.index(entries=[])
|
||||||
node = addnodes.desc()
|
node = addnodes.desc()
|
||||||
|
node.document = state.document
|
||||||
node['desctype'] = desctype
|
node['desctype'] = desctype
|
||||||
|
|
||||||
noindex = ('noindex' in options)
|
noindex = ('noindex' in options)
|
||||||
@ -525,6 +526,7 @@ def desc_directive(desctype, arguments, options, content, lineno,
|
|||||||
inode['entries'].append(('single', indextext, fullname, fullname))
|
inode['entries'].append(('single', indextext, fullname, fullname))
|
||||||
|
|
||||||
subnode = addnodes.desc_content()
|
subnode = addnodes.desc_content()
|
||||||
|
node.append(subnode)
|
||||||
# needed for automatic qualification of members
|
# needed for automatic qualification of members
|
||||||
clsname_set = False
|
clsname_set = False
|
||||||
if desctype in ('class', 'exception') and names:
|
if desctype in ('class', 'exception') and names:
|
||||||
@ -542,7 +544,6 @@ def desc_directive(desctype, arguments, options, content, lineno,
|
|||||||
if clsname_set:
|
if clsname_set:
|
||||||
env.currclass = None
|
env.currclass = None
|
||||||
env.currdesc = None
|
env.currdesc = None
|
||||||
node.append(subnode)
|
|
||||||
return [inode, node]
|
return [inode, node]
|
||||||
|
|
||||||
desc_directive.content = 1
|
desc_directive.content = 1
|
||||||
|
@ -14,7 +14,7 @@ from docutils.parsers.rst import directives
|
|||||||
|
|
||||||
from sphinx import addnodes
|
from sphinx import addnodes
|
||||||
from sphinx.locale import pairindextypes
|
from sphinx.locale import pairindextypes
|
||||||
from sphinx.util import patfilter, ws_re, caption_ref_re, docname_join
|
from sphinx.util import patfilter, ws_re, caption_ref_re, url_re, docname_join
|
||||||
from sphinx.util.compat import make_admonition
|
from sphinx.util.compat import make_admonition
|
||||||
|
|
||||||
|
|
||||||
@ -53,14 +53,14 @@ def toctree_directive(name, arguments, options, content, lineno,
|
|||||||
docname = docname[:-len(suffix)]
|
docname = docname[:-len(suffix)]
|
||||||
# absolutize filenames
|
# absolutize filenames
|
||||||
docname = docname_join(env.docname, docname)
|
docname = docname_join(env.docname, docname)
|
||||||
if ref.startswith('http://'): # FIXME: generalize to arbitrary xrefs
|
if url_re.match(ref):
|
||||||
entries.append((title, ref))
|
entries.append((title, ref))
|
||||||
elif docname not in env.found_docs:
|
elif docname not in env.found_docs:
|
||||||
ret.append(state.document.reporter.warning(
|
ret.append(state.document.reporter.warning(
|
||||||
'toctree references unknown document %r' % docname,
|
'toctree references unknown document %r' % docname,
|
||||||
line=lineno))
|
line=lineno))
|
||||||
else:
|
else:
|
||||||
entries.append((title, ref))
|
entries.append((title, docname))
|
||||||
includefiles.append(docname)
|
includefiles.append(docname)
|
||||||
else:
|
else:
|
||||||
patname = docname_join(env.docname, entry)
|
patname = docname_join(env.docname, entry)
|
||||||
@ -230,6 +230,7 @@ directives.register_directive('index', index_directive)
|
|||||||
def version_directive(name, arguments, options, content, lineno,
|
def version_directive(name, arguments, options, content, lineno,
|
||||||
content_offset, block_text, state, state_machine):
|
content_offset, block_text, state, state_machine):
|
||||||
node = addnodes.versionmodified()
|
node = addnodes.versionmodified()
|
||||||
|
node.document = state.document
|
||||||
node['type'] = name
|
node['type'] = name
|
||||||
node['version'] = arguments[0]
|
node['version'] = arguments[0]
|
||||||
if len(arguments) == 2:
|
if len(arguments) == 2:
|
||||||
@ -335,6 +336,7 @@ def glossary_directive(name, arguments, options, content, lineno,
|
|||||||
"""Glossary with cross-reference targets for :term: roles."""
|
"""Glossary with cross-reference targets for :term: roles."""
|
||||||
env = state.document.settings.env
|
env = state.document.settings.env
|
||||||
node = addnodes.glossary()
|
node = addnodes.glossary()
|
||||||
|
node.document = state.document
|
||||||
state.nested_parse(content, content_offset, node)
|
state.nested_parse(content, content_offset, node)
|
||||||
|
|
||||||
# the content should be definition lists
|
# the content should be definition lists
|
||||||
@ -383,6 +385,7 @@ directives.register_directive('centered', centered_directive)
|
|||||||
def acks_directive(name, arguments, options, content, lineno,
|
def acks_directive(name, arguments, options, content, lineno,
|
||||||
content_offset, block_text, state, state_machine):
|
content_offset, block_text, state, state_machine):
|
||||||
node = addnodes.acks()
|
node = addnodes.acks()
|
||||||
|
node.document = state.document
|
||||||
state.nested_parse(content, content_offset, node)
|
state.nested_parse(content, content_offset, node)
|
||||||
if len(node.children) != 1 or not isinstance(node.children[0],
|
if len(node.children) != 1 or not isinstance(node.children[0],
|
||||||
nodes.bullet_list):
|
nodes.bullet_list):
|
||||||
@ -399,6 +402,7 @@ def hlist_directive(name, arguments, options, content, lineno,
|
|||||||
content_offset, block_text, state, state_machine):
|
content_offset, block_text, state, state_machine):
|
||||||
ncolumns = options.get('columns', 2)
|
ncolumns = options.get('columns', 2)
|
||||||
node = nodes.paragraph()
|
node = nodes.paragraph()
|
||||||
|
node.document = state.document
|
||||||
state.nested_parse(content, content_offset, node)
|
state.nested_parse(content, content_offset, node)
|
||||||
if len(node.children) != 1 or not isinstance(node.children[0],
|
if len(node.children) != 1 or not isinstance(node.children[0],
|
||||||
nodes.bullet_list):
|
nodes.bullet_list):
|
||||||
|
@ -44,14 +44,15 @@ from docutils.transforms.parts import ContentsFilter
|
|||||||
|
|
||||||
from sphinx import addnodes
|
from sphinx import addnodes
|
||||||
from sphinx.util import movefile, get_matching_docs, SEP, ustrftime, \
|
from sphinx.util import movefile, get_matching_docs, SEP, ustrftime, \
|
||||||
docname_join, FilenameUniqDict
|
docname_join, FilenameUniqDict, url_re
|
||||||
from sphinx.directives import additional_xref_types
|
from sphinx.directives import additional_xref_types
|
||||||
|
from sphinx.application import SphinxError
|
||||||
|
|
||||||
default_settings = {
|
default_settings = {
|
||||||
'embed_stylesheet': False,
|
'embed_stylesheet': False,
|
||||||
'cloak_email_addresses': True,
|
'cloak_email_addresses': True,
|
||||||
'pep_base_url': 'http://www.python.org/dev/peps/',
|
'pep_base_url': 'http://www.python.org/dev/peps/',
|
||||||
'rfc_base_url': 'http://rfc.net/',
|
'rfc_base_url': 'http://tools.ietf.org/html/',
|
||||||
'input_encoding': 'utf-8',
|
'input_encoding': 'utf-8',
|
||||||
'doctitle_xform': False,
|
'doctitle_xform': False,
|
||||||
'sectsubtitle_xform': False,
|
'sectsubtitle_xform': False,
|
||||||
@ -59,7 +60,7 @@ default_settings = {
|
|||||||
|
|
||||||
# This is increased every time an environment attribute is added
|
# This is increased every time an environment attribute is added
|
||||||
# or changed to properly invalidate pickle files.
|
# or changed to properly invalidate pickle files.
|
||||||
ENV_VERSION = 27
|
ENV_VERSION = 28
|
||||||
|
|
||||||
|
|
||||||
default_substitutions = set([
|
default_substitutions = set([
|
||||||
@ -526,15 +527,20 @@ class BuildEnvironment:
|
|||||||
|
|
||||||
self.docname = docname
|
self.docname = docname
|
||||||
self.settings['input_encoding'] = self.config.source_encoding
|
self.settings['input_encoding'] = self.config.source_encoding
|
||||||
|
self.settings['trim_footnote_reference_space'] = \
|
||||||
|
self.config.trim_footnote_reference_space
|
||||||
|
|
||||||
class SphinxSourceClass(FileInput):
|
class SphinxSourceClass(FileInput):
|
||||||
def read(self):
|
def read(self_):
|
||||||
data = FileInput.read(self)
|
data = FileInput.read(self_)
|
||||||
if app:
|
if app:
|
||||||
arg = [data]
|
arg = [data]
|
||||||
app.emit('source-read', docname, arg)
|
app.emit('source-read', docname, arg)
|
||||||
data = arg[0]
|
data = arg[0]
|
||||||
return data
|
if self.config.rst_epilog:
|
||||||
|
return data + '\n' + self.config.rst_epilog + '\n'
|
||||||
|
else:
|
||||||
|
return data
|
||||||
|
|
||||||
# publish manually
|
# publish manually
|
||||||
pub = Publisher(reader=SphinxStandaloneReader(),
|
pub = Publisher(reader=SphinxStandaloneReader(),
|
||||||
@ -549,7 +555,6 @@ class BuildEnvironment:
|
|||||||
pub.publish()
|
pub.publish()
|
||||||
doctree = pub.document
|
doctree = pub.document
|
||||||
except UnicodeError, err:
|
except UnicodeError, err:
|
||||||
from sphinx.application import SphinxError
|
|
||||||
raise SphinxError(str(err))
|
raise SphinxError(str(err))
|
||||||
self.filter_messages(doctree)
|
self.filter_messages(doctree)
|
||||||
self.process_dependencies(docname, doctree)
|
self.process_dependencies(docname, doctree)
|
||||||
@ -653,7 +658,11 @@ class BuildEnvironment:
|
|||||||
candidates['?'] = imguri
|
candidates['?'] = imguri
|
||||||
continue
|
continue
|
||||||
# imgpath is the image path *from srcdir*
|
# imgpath is the image path *from srcdir*
|
||||||
imgpath = path.normpath(path.join(docdir, imguri))
|
if imguri.startswith('/') or imguri.startswith(os.sep):
|
||||||
|
# absolute path (= relative to srcdir)
|
||||||
|
imgpath = path.normpath(imguri[1:])
|
||||||
|
else:
|
||||||
|
imgpath = path.normpath(path.join(docdir, imguri))
|
||||||
# set imgpath as default URI
|
# set imgpath as default URI
|
||||||
node['uri'] = imgpath
|
node['uri'] = imgpath
|
||||||
if imgpath.endswith(os.extsep + '*'):
|
if imgpath.endswith(os.extsep + '*'):
|
||||||
@ -790,20 +799,32 @@ class BuildEnvironment:
|
|||||||
except ValueError:
|
except ValueError:
|
||||||
maxdepth = 0
|
maxdepth = 0
|
||||||
|
|
||||||
|
def traverse_in_section(node, cls):
|
||||||
|
"""Like traverse(), but stay within the same section."""
|
||||||
|
result = []
|
||||||
|
if isinstance(node, cls):
|
||||||
|
result.append(node)
|
||||||
|
for child in node.children:
|
||||||
|
if isinstance(child, nodes.section):
|
||||||
|
continue
|
||||||
|
result.extend(traverse_in_section(child, cls))
|
||||||
|
return result
|
||||||
|
|
||||||
def build_toc(node, depth=1):
|
def build_toc(node, depth=1):
|
||||||
entries = []
|
entries = []
|
||||||
for subnode in node:
|
for sectionnode in node:
|
||||||
if isinstance(subnode, addnodes.toctree):
|
# find all toctree nodes in this section and add them
|
||||||
# just copy the toctree node which is then resolved
|
# to the toc (just copying the toctree node which is then
|
||||||
# in self.get_and_resolve_doctree
|
# resolved in self.get_and_resolve_doctree)
|
||||||
item = subnode.copy()
|
if not isinstance(sectionnode, nodes.section):
|
||||||
entries.append(item)
|
for toctreenode in traverse_in_section(sectionnode,
|
||||||
# do the inventory stuff
|
addnodes.toctree):
|
||||||
self.note_toctree(docname, subnode)
|
item = toctreenode.copy()
|
||||||
|
entries.append(item)
|
||||||
|
# important: do the inventory stuff
|
||||||
|
self.note_toctree(docname, toctreenode)
|
||||||
continue
|
continue
|
||||||
if not isinstance(subnode, nodes.section):
|
title = sectionnode[0]
|
||||||
continue
|
|
||||||
title = subnode[0]
|
|
||||||
# copy the contents of the section title, but without references
|
# copy the contents of the section title, but without references
|
||||||
# and unnecessary stuff
|
# and unnecessary stuff
|
||||||
visitor = SphinxContentsFilter(document)
|
visitor = SphinxContentsFilter(document)
|
||||||
@ -814,7 +835,7 @@ class BuildEnvironment:
|
|||||||
# as it is the file's title anyway
|
# as it is the file's title anyway
|
||||||
anchorname = ''
|
anchorname = ''
|
||||||
else:
|
else:
|
||||||
anchorname = '#' + subnode['ids'][0]
|
anchorname = '#' + sectionnode['ids'][0]
|
||||||
numentries[0] += 1
|
numentries[0] += 1
|
||||||
reference = nodes.reference('', '', refuri=docname,
|
reference = nodes.reference('', '', refuri=docname,
|
||||||
anchorname=anchorname,
|
anchorname=anchorname,
|
||||||
@ -822,7 +843,7 @@ class BuildEnvironment:
|
|||||||
para = addnodes.compact_paragraph('', '', reference)
|
para = addnodes.compact_paragraph('', '', reference)
|
||||||
item = nodes.list_item('', para)
|
item = nodes.list_item('', para)
|
||||||
if maxdepth == 0 or depth < maxdepth:
|
if maxdepth == 0 or depth < maxdepth:
|
||||||
item += build_toc(subnode, depth+1)
|
item += build_toc(sectionnode, depth+1)
|
||||||
entries.append(item)
|
entries.append(item)
|
||||||
if entries:
|
if entries:
|
||||||
return nodes.bullet_list('', *entries)
|
return nodes.bullet_list('', *entries)
|
||||||
@ -841,14 +862,12 @@ class BuildEnvironment:
|
|||||||
node['refuri'] = node['anchorname']
|
node['refuri'] = node['anchorname']
|
||||||
return toc
|
return toc
|
||||||
|
|
||||||
def get_toctree_for(self, docname, builder):
|
def get_toctree_for(self, docname, builder, collapse):
|
||||||
"""Return the global TOC nodetree."""
|
"""Return the global TOC nodetree."""
|
||||||
|
|
||||||
# XXX why master_doc?
|
|
||||||
doctree = self.get_doctree(self.config.master_doc)
|
doctree = self.get_doctree(self.config.master_doc)
|
||||||
for toctreenode in doctree.traverse(addnodes.toctree):
|
for toctreenode in doctree.traverse(addnodes.toctree):
|
||||||
result = self.resolve_toctree(docname, builder, toctreenode,
|
result = self.resolve_toctree(docname, builder, toctreenode,
|
||||||
prune=True)
|
prune=True, collapse=collapse)
|
||||||
if result is not None:
|
if result is not None:
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@ -924,7 +943,7 @@ class BuildEnvironment:
|
|||||||
return doctree
|
return doctree
|
||||||
|
|
||||||
def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0,
|
def resolve_toctree(self, docname, builder, toctree, prune=True, maxdepth=0,
|
||||||
titles_only=False):
|
titles_only=False, collapse=False):
|
||||||
"""
|
"""
|
||||||
Resolve a *toctree* node into individual bullet lists with titles
|
Resolve a *toctree* node into individual bullet lists with titles
|
||||||
as items, returning None (if no containing titles are found) or
|
as items, returning None (if no containing titles are found) or
|
||||||
@ -934,6 +953,8 @@ class BuildEnvironment:
|
|||||||
to the value of the *maxdepth* option on the *toctree* node.
|
to the value of the *maxdepth* option on the *toctree* node.
|
||||||
If *titles_only* is True, only toplevel document titles will be in the
|
If *titles_only* is True, only toplevel document titles will be in the
|
||||||
resulting tree.
|
resulting tree.
|
||||||
|
If *collapse* is True, all branches not containing docname will
|
||||||
|
be collapsed.
|
||||||
"""
|
"""
|
||||||
if toctree.get('hidden', False):
|
if toctree.get('hidden', False):
|
||||||
return None
|
return None
|
||||||
@ -951,13 +972,30 @@ class BuildEnvironment:
|
|||||||
else:
|
else:
|
||||||
_walk_depth(subnode, depth+1, maxdepth)
|
_walk_depth(subnode, depth+1, maxdepth)
|
||||||
|
|
||||||
|
# cull sub-entries whose parents aren't 'current'
|
||||||
|
if (collapse and
|
||||||
|
depth > 1 and
|
||||||
|
'current' not in subnode.parent['classes']):
|
||||||
|
subnode.parent.remove(subnode)
|
||||||
|
|
||||||
|
elif isinstance(subnode, nodes.reference):
|
||||||
|
# Identify the toc entry pointing to the current document.
|
||||||
|
if subnode['refuri'] == docname and not subnode['anchorname']:
|
||||||
|
# tag the whole branch as 'current'
|
||||||
|
# (We can't use traverse here as 'ascend' un-intuitively
|
||||||
|
# implies 'siblings'.)
|
||||||
|
p = subnode
|
||||||
|
while p:
|
||||||
|
p['classes'].append('current')
|
||||||
|
p = p.parent
|
||||||
|
|
||||||
def _entries_from_toctree(toctreenode, separate=False, subtree=False):
|
def _entries_from_toctree(toctreenode, separate=False, subtree=False):
|
||||||
"""Return TOC entries for a toctree node."""
|
"""Return TOC entries for a toctree node."""
|
||||||
refs = [(e[0], str(e[1])) for e in toctreenode['entries']]
|
refs = [(e[0], str(e[1])) for e in toctreenode['entries']]
|
||||||
entries = []
|
entries = []
|
||||||
for (title, ref) in refs:
|
for (title, ref) in refs:
|
||||||
try:
|
try:
|
||||||
if ref.startswith('http://'): # FIXME: (see directives/other.py)
|
if url_re.match(ref):
|
||||||
reference = nodes.reference('', '', refuri=ref, anchorname='',
|
reference = nodes.reference('', '', refuri=ref, anchorname='',
|
||||||
*[nodes.Text(title)])
|
*[nodes.Text(title)])
|
||||||
para = addnodes.compact_paragraph('', '', reference)
|
para = addnodes.compact_paragraph('', '', reference)
|
||||||
@ -1019,11 +1057,13 @@ class BuildEnvironment:
|
|||||||
|
|
||||||
newnode = addnodes.compact_paragraph('', '', *tocentries)
|
newnode = addnodes.compact_paragraph('', '', *tocentries)
|
||||||
newnode['toctree'] = True
|
newnode['toctree'] = True
|
||||||
|
|
||||||
# prune the tree to maxdepth and replace titles, also set level classes
|
# prune the tree to maxdepth and replace titles, also set level classes
|
||||||
_walk_depth(newnode, 1, prune and maxdepth or 0)
|
_walk_depth(newnode, 1, prune and maxdepth or 0)
|
||||||
|
|
||||||
# set the target paths in the toctrees (they are not known at TOC generation time)
|
# set the target paths in the toctrees (they are not known at TOC generation time)
|
||||||
for refnode in newnode.traverse(nodes.reference):
|
for refnode in newnode.traverse(nodes.reference):
|
||||||
if not refnode['refuri'].startswith('http://'): # FIXME: see above
|
if not url_re.match(refnode['refuri']):
|
||||||
refnode['refuri'] = builder.get_relative_uri(
|
refnode['refuri'] = builder.get_relative_uri(
|
||||||
docname, refnode['refuri']) + refnode['anchorname']
|
docname, refnode['refuri']) + refnode['anchorname']
|
||||||
return newnode
|
return newnode
|
||||||
|
@ -329,7 +329,18 @@ class RstGenerator(object):
|
|||||||
# can never get arguments of a C function or method
|
# can never get arguments of a C function or method
|
||||||
getargs = False
|
getargs = False
|
||||||
if getargs:
|
if getargs:
|
||||||
argspec = inspect.getargspec(obj)
|
try:
|
||||||
|
argspec = inspect.getargspec(obj)
|
||||||
|
except TypeError:
|
||||||
|
# if a class should be documented as function (yay duck
|
||||||
|
# typing) we try to use the constructor signature as function
|
||||||
|
# signature without the first argument.
|
||||||
|
try:
|
||||||
|
argspec = inspect.getargspec(obj.__new__)
|
||||||
|
except TypeError:
|
||||||
|
argspec = inspect.getargspec(obj.__init__)
|
||||||
|
if argspec[0]:
|
||||||
|
del argspec[0][0]
|
||||||
if what in ('class', 'method', 'staticmethod',
|
if what in ('class', 'method', 'staticmethod',
|
||||||
'classmethod') and argspec[0] and \
|
'classmethod') and argspec[0] and \
|
||||||
argspec[0][0] in ('cls', 'self'):
|
argspec[0][0] in ('cls', 'self'):
|
||||||
@ -354,7 +365,7 @@ class RstGenerator(object):
|
|||||||
return ''
|
return ''
|
||||||
|
|
||||||
def generate(self, what, name, members, add_content, indent=u'',
|
def generate(self, what, name, members, add_content, indent=u'',
|
||||||
check_module=False, no_docstring=False):
|
check_module=False, no_docstring=False, real_module=None):
|
||||||
"""
|
"""
|
||||||
Generate reST for the object in self.result.
|
Generate reST for the object in self.result.
|
||||||
"""
|
"""
|
||||||
@ -385,9 +396,17 @@ class RstGenerator(object):
|
|||||||
(what, str(fullname), err))
|
(what, str(fullname), err))
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# If there is no real module defined, figure out which to use.
|
||||||
|
# The real module is used in the module analyzer to look up the module
|
||||||
|
# where the attribute documentation would actually be found in.
|
||||||
|
# This is used for situations where you have a module that collects the
|
||||||
|
# functions and classes of internal submodules.
|
||||||
|
if real_module is None:
|
||||||
|
real_module = getattr(todoc, '__module__', None) or mod
|
||||||
|
|
||||||
# try to also get a source code analyzer for attribute docs
|
# try to also get a source code analyzer for attribute docs
|
||||||
try:
|
try:
|
||||||
analyzer = ModuleAnalyzer.for_module(mod)
|
analyzer = ModuleAnalyzer.for_module(real_module)
|
||||||
# parse right now, to get PycodeErrors on parsing
|
# parse right now, to get PycodeErrors on parsing
|
||||||
analyzer.parse()
|
analyzer.parse()
|
||||||
except PycodeError, err:
|
except PycodeError, err:
|
||||||
@ -463,7 +482,7 @@ class RstGenerator(object):
|
|||||||
sys.getfilesystemencoding(), 'replace')
|
sys.getfilesystemencoding(), 'replace')
|
||||||
sourcename = u'%s:docstring of %s' % (srcname, fullname)
|
sourcename = u'%s:docstring of %s' % (srcname, fullname)
|
||||||
attr_docs = analyzer.find_attr_docs()
|
attr_docs = analyzer.find_attr_docs()
|
||||||
if what in ('data', 'attribute'):
|
if objpath:
|
||||||
key = ('.'.join(objpath[:-1]), objpath[-1])
|
key = ('.'.join(objpath[:-1]), objpath[-1])
|
||||||
if key in attr_docs:
|
if key in attr_docs:
|
||||||
no_docstring = True
|
no_docstring = True
|
||||||
@ -610,7 +629,8 @@ class RstGenerator(object):
|
|||||||
full_membername = mod + '::' + '.'.join(objpath + [membername])
|
full_membername = mod + '::' + '.'.join(objpath + [membername])
|
||||||
self.generate(memberwhat, full_membername, ['__all__'],
|
self.generate(memberwhat, full_membername, ['__all__'],
|
||||||
add_content=content, no_docstring=bool(content),
|
add_content=content, no_docstring=bool(content),
|
||||||
indent=indent, check_module=members_check_module)
|
indent=indent, check_module=members_check_module,
|
||||||
|
real_module=real_module)
|
||||||
|
|
||||||
self.env.autodoc_current_module = None
|
self.env.autodoc_current_module = None
|
||||||
self.env.autodoc_current_class = None
|
self.env.autodoc_current_class = None
|
||||||
@ -648,9 +668,12 @@ def _auto_directive(dirname, arguments, options, content, lineno,
|
|||||||
state.memo.reporter = AutodocReporter(generator.result, state.memo.reporter)
|
state.memo.reporter = AutodocReporter(generator.result, state.memo.reporter)
|
||||||
if dirname == 'automodule':
|
if dirname == 'automodule':
|
||||||
node = nodes.section()
|
node = nodes.section()
|
||||||
|
node.document = state.document # necessary so that the child nodes
|
||||||
|
# get the right source/line set
|
||||||
nested_parse_with_titles(state, generator.result, node)
|
nested_parse_with_titles(state, generator.result, node)
|
||||||
else:
|
else:
|
||||||
node = nodes.paragraph()
|
node = nodes.paragraph()
|
||||||
|
node.document = state.document
|
||||||
state.nested_parse(generator.result, 0, node)
|
state.nested_parse(generator.result, 0, node)
|
||||||
state.memo.reporter = old_reporter
|
state.memo.reporter = old_reporter
|
||||||
return generator.warnings + node.children
|
return generator.warnings + node.children
|
||||||
|
@ -82,6 +82,11 @@ def render_math(self, math):
|
|||||||
depth = read_png_depth(outfn)
|
depth = read_png_depth(outfn)
|
||||||
return relfn, depth
|
return relfn, depth
|
||||||
|
|
||||||
|
# if latex or dvipng has failed once, don't bother to try again
|
||||||
|
if hasattr(self.builder, '_mathpng_warned_latex') or \
|
||||||
|
hasattr(self.builder, '_mathpng_warned_dvipng'):
|
||||||
|
return None, None
|
||||||
|
|
||||||
latex = DOC_HEAD + self.builder.config.pngmath_latex_preamble
|
latex = DOC_HEAD + self.builder.config.pngmath_latex_preamble
|
||||||
latex += (use_preview and DOC_BODY_PREVIEW or DOC_BODY) % math
|
latex += (use_preview and DOC_BODY_PREVIEW or DOC_BODY) % math
|
||||||
if isinstance(latex, unicode):
|
if isinstance(latex, unicode):
|
||||||
@ -116,12 +121,11 @@ def render_math(self, math):
|
|||||||
except OSError, err:
|
except OSError, err:
|
||||||
if err.errno != 2: # No such file or directory
|
if err.errno != 2: # No such file or directory
|
||||||
raise
|
raise
|
||||||
if not hasattr(self.builder, '_mathpng_warned_latex'):
|
self.builder.warn('LaTeX command %r cannot be run (needed for math '
|
||||||
self.builder.warn('LaTeX command %r cannot be run (needed for '
|
'display), check the pngmath_latex setting' %
|
||||||
'math display), check the pngmath_latex '
|
self.builder.config.pngmath_latex)
|
||||||
'setting' % self.builder.config.pngmath_latex)
|
self.builder._mathpng_warned_latex = True
|
||||||
self.builder._mathpng_warned_latex = True
|
return None, None
|
||||||
return relfn, None
|
|
||||||
finally:
|
finally:
|
||||||
chdir(curdir)
|
chdir(curdir)
|
||||||
|
|
||||||
@ -145,12 +149,11 @@ def render_math(self, math):
|
|||||||
except OSError, err:
|
except OSError, err:
|
||||||
if err.errno != 2: # No such file or directory
|
if err.errno != 2: # No such file or directory
|
||||||
raise
|
raise
|
||||||
if not hasattr(self.builder, '_mathpng_warned_dvipng'):
|
self.builder.warn('dvipng command %r cannot be run (needed for math '
|
||||||
self.builder.warn('dvipng command %r cannot be run (needed for '
|
'display), check the pngmath_dvipng setting' %
|
||||||
'math display), check the pngmath_dvipng setting'
|
self.builder.config.pngmath_dvipng)
|
||||||
% self.builder.config.pngmath_dvipng)
|
self.builder._mathpng_warned_dvipng = True
|
||||||
self.builder._mathpng_warned_dvipng = True
|
return None, None
|
||||||
return relfn, None
|
|
||||||
stdout, stderr = p.communicate()
|
stdout, stderr = p.communicate()
|
||||||
if p.returncode != 0:
|
if p.returncode != 0:
|
||||||
raise MathExtError('dvipng exited with error:\n[stderr]\n%s\n'
|
raise MathExtError('dvipng exited with error:\n[stderr]\n%s\n'
|
||||||
@ -185,10 +188,15 @@ def html_visit_math(self, node):
|
|||||||
sm.walkabout(self)
|
sm.walkabout(self)
|
||||||
self.builder.warn('display latex %r: ' % node['latex'] + str(exc))
|
self.builder.warn('display latex %r: ' % node['latex'] + str(exc))
|
||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
self.body.append('<img class="math" src="%s" alt="%s" %s/>' %
|
if fname is None:
|
||||||
(fname, self.encode(node['latex']).strip(),
|
# something failed -- use text-only as a bad substitute
|
||||||
depth and 'style="vertical-align: %dpx" ' %
|
self.body.append('<span class="math">%s</span>' %
|
||||||
(-depth) or ''))
|
self.encode(node['latex']).strip())
|
||||||
|
else:
|
||||||
|
self.body.append(
|
||||||
|
'<img class="math" src="%s" alt="%s" %s/>' %
|
||||||
|
(fname, self.encode(node['latex']).strip(),
|
||||||
|
depth and 'style="vertical-align: %dpx" ' % (-depth) or ''))
|
||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
|
|
||||||
def html_visit_displaymath(self, node):
|
def html_visit_displaymath(self, node):
|
||||||
@ -208,8 +216,13 @@ def html_visit_displaymath(self, node):
|
|||||||
self.body.append('<p>')
|
self.body.append('<p>')
|
||||||
if node['number']:
|
if node['number']:
|
||||||
self.body.append('<span class="eqno">(%s)</span>' % node['number'])
|
self.body.append('<span class="eqno">(%s)</span>' % node['number'])
|
||||||
self.body.append('<img src="%s" alt="%s" />\n</div>' %
|
if fname is None:
|
||||||
(fname, self.encode(node['latex']).strip()))
|
# something failed -- use text-only as a bad substitute
|
||||||
|
self.body.append('<span class="math">%s</span>' %
|
||||||
|
self.encode(node['latex']).strip())
|
||||||
|
else:
|
||||||
|
self.body.append('<img src="%s" alt="%s" />\n</div>' %
|
||||||
|
(fname, self.encode(node['latex']).strip()))
|
||||||
self.body.append('</p>')
|
self.body.append('</p>')
|
||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
|
|
||||||
|
@ -61,6 +61,9 @@ def process_todo_nodes(app, doctree, fromdocname):
|
|||||||
# Augment each todo with a backlink to the original location.
|
# Augment each todo with a backlink to the original location.
|
||||||
env = app.builder.env
|
env = app.builder.env
|
||||||
|
|
||||||
|
if not hasattr(env, 'todo_all_todos'):
|
||||||
|
env.todo_all_todos = []
|
||||||
|
|
||||||
for node in doctree.traverse(todolist):
|
for node in doctree.traverse(todolist):
|
||||||
if not app.config['todo_include_todos']:
|
if not app.config['todo_include_todos']:
|
||||||
node.replace_self([])
|
node.replace_self([])
|
||||||
|
Binary file not shown.
@ -1 +1 @@
|
|||||||
Documentation.addTranslations({"locale": "de", "plural_expr": "(n != 1)", "messages": {"module, in ": "Modul, in ", "Preparing search...": "Suche wird vorbereitet...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Es wurden keine Dokumente gefunden. Haben Sie alle Suchworte richtig geschrieben und gen\u00fcgend Kategorien ausgew\u00e4hlt?", "Search finished, found %s page(s) matching the search query.": "Suche beendet, %s Seite(n) mit Ergebnissen wurden gefunden.", ", in ": "", "Permalink to this headline": "Permalink zu dieser \u00dcberschrift", "Searching": "Suchen...", "Permalink to this definition": "Permalink zu dieser Definition", "Hide Search Matches": "Suchergebnisse ausblenden", "Search Results": "Suchergebnisse"}});
|
Documentation.addTranslations({"locale": "de", "plural_expr": "(n != 1)", "messages": {"module, in ": "Modul, in ", "Preparing search...": "Suche wird vorbereitet...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Es wurden keine Dokumente gefunden. Haben Sie alle Suchworte richtig geschrieben und gen\u00fcgend Kategorien ausgew\u00e4hlt?", "Search finished, found %s page(s) matching the search query.": "Suche beendet, %s Seite(n) mit Ergebnissen wurden gefunden.", ", in ": ", in ", "Permalink to this headline": "Permalink zu dieser \u00dcberschrift", "Searching": "Suchen...", "Permalink to this definition": "Permalink zu dieser Definition", "Hide Search Matches": "Suchergebnisse ausblenden", "Search Results": "Suchergebnisse"}});
|
Binary file not shown.
Binary file not shown.
1
sphinx/locale/fi/LC_MESSAGES/sphinx.js
Normal file
1
sphinx/locale/fi/LC_MESSAGES/sphinx.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
Documentation.addTranslations({"locale": "fi", "plural_expr": "(n != 1)", "messages": {"module, in ": "", "Preparing search...": "Valmistellaan etsint\u00e4\u00e4...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Ei l\u00f6ytynyt yht\u00e4\u00e4n. Tarkista hakuehdot, sanahaku, ei sen osia", "Search finished, found %s page(s) matching the search query.": "Etsint\u00e4 tehty, l\u00f6ydetty %s sivu(a).", ", in ": "", "Permalink to this headline": "", "Searching": "Etsit\u00e4\u00e4n", "Permalink to this definition": "", "Hide Search Matches": "Piilota l\u00f6ydetyt", "Search Results": "Etsinn\u00e4n tulos"}});
|
BIN
sphinx/locale/fi/LC_MESSAGES/sphinx.mo
Normal file
BIN
sphinx/locale/fi/LC_MESSAGES/sphinx.mo
Normal file
Binary file not shown.
600
sphinx/locale/fi/LC_MESSAGES/sphinx.po
Normal file
600
sphinx/locale/fi/LC_MESSAGES/sphinx.po
Normal file
@ -0,0 +1,600 @@
|
|||||||
|
# Finnish translations for Sphinx.
|
||||||
|
# Copyright (C) 2009 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the Sphinx project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Sphinx 0.6\n"
|
||||||
|
"Report-Msgid-Bugs-To: sphinx@awot.fi\n"
|
||||||
|
"POT-Creation-Date: 2009-01-24 18:39+0000\n"
|
||||||
|
"PO-Revision-Date: 2009-02-11 11:21+0200\n"
|
||||||
|
"Last-Translator: Jukka Inkeri <sphinx@awot.fi>\n"
|
||||||
|
"Language-Team: fi <sphinx@awot.fi>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 0.9.4\n"
|
||||||
|
|
||||||
|
#: sphinx/environment.py:104 sphinx/writers/latex.py:170
|
||||||
|
#, python-format
|
||||||
|
msgid "%B %d, %Y"
|
||||||
|
msgstr "%d.%m.%Y"
|
||||||
|
|
||||||
|
#: sphinx/environment.py:300 sphinx/templates/genindex-single.html:2
|
||||||
|
#: sphinx/templates/genindex-split.html:2
|
||||||
|
#: sphinx/templates/genindex-split.html:5 sphinx/templates/genindex.html:2
|
||||||
|
#: sphinx/templates/genindex.html:5 sphinx/templates/genindex.html:48
|
||||||
|
#: sphinx/templates/layout.html:126 sphinx/writers/latex.py:176
|
||||||
|
msgid "Index"
|
||||||
|
msgstr "Sisällysluettelo"
|
||||||
|
|
||||||
|
#: sphinx/environment.py:301 sphinx/writers/latex.py:175
|
||||||
|
msgid "Module Index"
|
||||||
|
msgstr "Moduuli sisällysluettelo"
|
||||||
|
|
||||||
|
#: sphinx/environment.py:302 sphinx/templates/defindex.html:16
|
||||||
|
msgid "Search Page"
|
||||||
|
msgstr "Etsi sivu"
|
||||||
|
|
||||||
|
#: sphinx/roles.py:53 sphinx/directives/desc.py:580
|
||||||
|
#, python-format
|
||||||
|
msgid "environment variable; %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/roles.py:60
|
||||||
|
#, python-format
|
||||||
|
msgid "Python Enhancement Proposals!PEP %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/builders/changes.py:64
|
||||||
|
msgid "Builtins"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/builders/changes.py:66
|
||||||
|
msgid "Module level"
|
||||||
|
msgstr "Moduulitaso"
|
||||||
|
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:118
|
||||||
|
#, python-format
|
||||||
|
msgid "%b %d, %Y"
|
||||||
|
msgstr "%d.%m.%Y"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:137 sphinx/templates/defindex.html:21
|
||||||
|
msgid "General Index"
|
||||||
|
msgstr "Yleinen sisällysluettelo"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:137
|
||||||
|
msgid "index"
|
||||||
|
msgstr "hakemisto"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:139 sphinx/builders/htmlhelp.py:182
|
||||||
|
#: sphinx/builders/qthelp.py:131 sphinx/templates/defindex.html:19
|
||||||
|
#: sphinx/templates/modindex.html:2 sphinx/templates/modindex.html:13
|
||||||
|
msgid "Global Module Index"
|
||||||
|
msgstr "Yleinen moduulien sisällysluettelo"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:139
|
||||||
|
msgid "modules"
|
||||||
|
msgstr "moduulit"
|
||||||
|
#msgstr "osat"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:179
|
||||||
|
msgid "next"
|
||||||
|
msgstr ">"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:186
|
||||||
|
msgid "previous"
|
||||||
|
msgstr "<"
|
||||||
|
|
||||||
|
#: sphinx/builders/latex.py:155 sphinx/builders/pdf.py:162
|
||||||
|
msgid " (in "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:25
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (built-in function)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:26 sphinx/directives/desc.py:42
|
||||||
|
#: sphinx/directives/desc.py:54
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (in module %s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:29
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (built-in variable)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:30 sphinx/directives/desc.py:78
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (in module %s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:33
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (built-in class)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:34
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (class in %s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:46
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (%s.%s method)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:48
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (%s method)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:58
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (%s.%s static method)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:60
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (%s static method)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:82
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (%s.%s attribute)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:84
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (%s attribute)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:86
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (C function)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:88
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (C member)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:90
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (C macro)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:92
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (C type)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:94
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (C variable)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:112
|
||||||
|
msgid "Raises"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:116
|
||||||
|
msgid "Variable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:119
|
||||||
|
msgid "Returns"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:128
|
||||||
|
msgid "Return type"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:213
|
||||||
|
msgid "Parameter"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:217
|
||||||
|
msgid "Parameters"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:465
|
||||||
|
#, python-format
|
||||||
|
msgid "%scommand line option; %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:101
|
||||||
|
msgid "Platforms: "
|
||||||
|
msgstr "Ympäristö"
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:106
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (module)"
|
||||||
|
msgstr "%s (moduuli)"
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:146
|
||||||
|
msgid "Section author: "
|
||||||
|
msgstr "Luvun kirjoittaja: "
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:148
|
||||||
|
msgid "Module author: "
|
||||||
|
msgstr "Moduulin kirjoittaja: "
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:150
|
||||||
|
msgid "Author: "
|
||||||
|
msgstr "Tekijä: "
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:249
|
||||||
|
msgid "See also"
|
||||||
|
msgstr "Katso myös"
|
||||||
|
|
||||||
|
#: sphinx/ext/autodoc.py:442
|
||||||
|
#, python-format
|
||||||
|
msgid " Bases: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/ext/autodoc.py:566 sphinx/ext/autodoc.py:583
|
||||||
|
#, python-format
|
||||||
|
msgid "alias of :class:`%s`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/ext/todo.py:31
|
||||||
|
msgid "Todo"
|
||||||
|
msgstr "Tehtävä vielä"
|
||||||
|
|
||||||
|
#: sphinx/ext/todo.py:75
|
||||||
|
#, python-format
|
||||||
|
msgid "(The original entry is located in %s, line %d and can be found "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/ext/todo.py:81
|
||||||
|
msgid "here"
|
||||||
|
msgstr "tässä"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:15
|
||||||
|
msgid "Attention"
|
||||||
|
msgstr "Huom"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:16
|
||||||
|
msgid "Caution"
|
||||||
|
msgstr "Varoitus"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:17
|
||||||
|
msgid "Danger"
|
||||||
|
msgstr "Vaara"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:18
|
||||||
|
msgid "Error"
|
||||||
|
msgstr "Virhe"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:19
|
||||||
|
msgid "Hint"
|
||||||
|
msgstr "Vihje"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:20
|
||||||
|
msgid "Important"
|
||||||
|
msgstr "Tärkeä"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:21
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Muista"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:22
|
||||||
|
msgid "See Also"
|
||||||
|
msgstr "Katso myös"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:23
|
||||||
|
msgid "Tip"
|
||||||
|
msgstr "Vihje"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:24
|
||||||
|
msgid "Warning"
|
||||||
|
msgstr "Varoitus"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:28
|
||||||
|
#, python-format
|
||||||
|
msgid "New in version %s"
|
||||||
|
msgstr "Uusi versiossa %s"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:29
|
||||||
|
#, python-format
|
||||||
|
msgid "Changed in version %s"
|
||||||
|
msgstr "Muutettu versiossa %s"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:30
|
||||||
|
#, python-format
|
||||||
|
msgid "Deprecated since version %s"
|
||||||
|
msgstr "Poistettu versiosta %s alkaen"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:34
|
||||||
|
msgid "module"
|
||||||
|
msgstr "moduuli"
|
||||||
|
#msgstr "osa"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:35
|
||||||
|
msgid "keyword"
|
||||||
|
msgstr ""
|
||||||
|
#msgstr "avainsana"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:36
|
||||||
|
msgid "operator"
|
||||||
|
msgstr ""
|
||||||
|
#msgstr "operaattori"
|
||||||
|
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:37
|
||||||
|
msgid "object"
|
||||||
|
msgstr ""
|
||||||
|
#msgstr "objekti"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:38
|
||||||
|
msgid "exception"
|
||||||
|
msgstr ""
|
||||||
|
#msgstr "poikkeus"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:39
|
||||||
|
msgid "statement"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:40
|
||||||
|
msgid "built-in function"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/static/doctools.js:139 sphinx/writers/html.py:425
|
||||||
|
msgid "Permalink to this headline"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/static/doctools.js:145 sphinx/writers/html.py:80
|
||||||
|
msgid "Permalink to this definition"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/static/doctools.js:174
|
||||||
|
msgid "Hide Search Matches"
|
||||||
|
msgstr "Piilota löydetyt"
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:274
|
||||||
|
msgid "Searching"
|
||||||
|
msgstr "Etsitään"
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:279
|
||||||
|
msgid "Preparing search..."
|
||||||
|
msgstr "Valmistellaan etsintää..."
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:338
|
||||||
|
msgid "module, in "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:347
|
||||||
|
msgid ", in "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:453 sphinx/templates/search.html:25
|
||||||
|
msgid "Search Results"
|
||||||
|
msgstr "Etsinnän tulos"
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:455
|
||||||
|
msgid ""
|
||||||
|
"Your search did not match any documents. Please make sure that all words "
|
||||||
|
"are spelled correctly and that you've selected enough categories."
|
||||||
|
msgstr "Ei löytynyt yhtään. Tarkista hakuehdot, sanahaku, ei sen osia"
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:457
|
||||||
|
#, python-format
|
||||||
|
msgid "Search finished, found %s page(s) matching the search query."
|
||||||
|
msgstr "Etsintä tehty, löydetty %s sivu(a)."
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:2
|
||||||
|
msgid "Overview"
|
||||||
|
msgstr "Yhteenveto"
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:11
|
||||||
|
msgid "Indices and tables:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:14
|
||||||
|
msgid "Complete Table of Contents"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:15
|
||||||
|
msgid "lists all sections and subsections"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:17
|
||||||
|
msgid "search this documentation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:20
|
||||||
|
msgid "quick access to all modules"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:22
|
||||||
|
msgid "all functions, classes, terms"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/genindex-single.html:5
|
||||||
|
#, python-format
|
||||||
|
msgid "Index – %(key)s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/genindex-single.html:44
|
||||||
|
#: sphinx/templates/genindex-split.html:14
|
||||||
|
#: sphinx/templates/genindex-split.html:27 sphinx/templates/genindex.html:54
|
||||||
|
msgid "Full index on one page"
|
||||||
|
msgstr "Hakemisto yhtenä luettelona"
|
||||||
|
|
||||||
|
#: sphinx/templates/genindex-split.html:7
|
||||||
|
msgid "Index pages by letter"
|
||||||
|
msgstr "Hakemisto aakkostus sivuttain"
|
||||||
|
|
||||||
|
#: sphinx/templates/genindex-split.html:15
|
||||||
|
msgid "can be huge"
|
||||||
|
msgstr "voi olla iso"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:9
|
||||||
|
msgid "Navigation"
|
||||||
|
msgstr "Navikointi"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:40
|
||||||
|
msgid "Table Of Contents"
|
||||||
|
msgstr "Sisällysluettelo"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:46
|
||||||
|
msgid "Previous topic"
|
||||||
|
msgstr "<<"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:48
|
||||||
|
msgid "previous chapter"
|
||||||
|
msgstr "<<"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:51
|
||||||
|
msgid "Next topic"
|
||||||
|
msgstr ">>"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:53
|
||||||
|
msgid "next chapter"
|
||||||
|
msgstr ">>"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:58
|
||||||
|
msgid "This Page"
|
||||||
|
msgstr "Tämä sivu"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:61
|
||||||
|
msgid "Show Source"
|
||||||
|
msgstr "Näytä lähdekoodina"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:71
|
||||||
|
msgid "Quick search"
|
||||||
|
msgstr "Pikahaku"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:74
|
||||||
|
msgid "Go"
|
||||||
|
msgstr "Siirry"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:78
|
||||||
|
msgid "Enter search terms or a module, class or function name."
|
||||||
|
msgstr "Anna etsittävä termi tai moduuli, luokka tai funktio"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:115
|
||||||
|
#, python-format
|
||||||
|
msgid "Search within %(docstitle)s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:124
|
||||||
|
msgid "About these documents"
|
||||||
|
msgstr "Tietoja tästä documentistä"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:127 sphinx/templates/search.html:2
|
||||||
|
#: sphinx/templates/search.html:5
|
||||||
|
msgid "Search"
|
||||||
|
msgstr "Etsi"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:129
|
||||||
|
msgid "Copyright"
|
||||||
|
msgstr ""
|
||||||
|
#msgstr "(c)"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:174
|
||||||
|
#, python-format
|
||||||
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
msgstr ""
|
||||||
|
#msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
#msgstr "© <a href=\"%(path)s\">kaikki pidätetään</A> %(copyright)."
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:176
|
||||||
|
#, python-format
|
||||||
|
msgid "© Copyright %(copyright)s."
|
||||||
|
msgstr ""
|
||||||
|
##msgstr "© Copyright %(copyright)s."
|
||||||
|
#msgstr "© %(copyright)."
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:179
|
||||||
|
#, python-format
|
||||||
|
msgid "Last updated on %(last_updated)s."
|
||||||
|
msgstr ""
|
||||||
|
#msgstr "Viimeksi muutettu %(last_updated)."
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:182
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
|
||||||
|
"%(sphinx_version)s."
|
||||||
|
msgstr """
|
||||||
|
#msgstr "Tehty <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> %(sphinx_version)"
|
||||||
|
|
||||||
|
#: sphinx/templates/modindex.html:36
|
||||||
|
msgid "Deprecated"
|
||||||
|
msgstr "Poistettu"
|
||||||
|
|
||||||
|
#: sphinx/templates/opensearch.xml:4
|
||||||
|
#, python-format
|
||||||
|
msgid "Search %(docstitle)s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/search.html:9
|
||||||
|
msgid ""
|
||||||
|
"Please activate JavaScript to enable the search\n"
|
||||||
|
" functionality."
|
||||||
|
msgstr "Javascript pitää olla sallittu, jotta etsintä toimii."
|
||||||
|
|
||||||
|
#: sphinx/templates/search.html:14
|
||||||
|
msgid ""
|
||||||
|
"From here you can search these documents. Enter your search\n"
|
||||||
|
" words into the box below and click \"search\". Note that the search\n"
|
||||||
|
" function will automatically search for all of the words. Pages\n"
|
||||||
|
" containing fewer words won't appear in the result list."
|
||||||
|
msgstr "Anna hakusanat kokonaan, osasanoilla ei haeta."
|
||||||
|
|
||||||
|
#: sphinx/templates/search.html:21
|
||||||
|
msgid "search"
|
||||||
|
msgstr "etsi"
|
||||||
|
|
||||||
|
#: sphinx/templates/search.html:27
|
||||||
|
msgid "Your search did not match any results."
|
||||||
|
msgstr "Ei löytynyt ko. ehdoilla yhtään."
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/frameset.html:5
|
||||||
|
#: sphinx/templates/changes/versionchanges.html:12
|
||||||
|
#, python-format
|
||||||
|
msgid "Changes in Version %(version)s — %(docstitle)s"
|
||||||
|
msgstr "Muutos versiosta %(version) — %(docstitle)"
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/rstsource.html:5
|
||||||
|
#, python-format
|
||||||
|
msgid "%(filename)s — %(docstitle)s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/versionchanges.html:17
|
||||||
|
#, python-format
|
||||||
|
msgid "Automatically generated list of changes in version %(version)s"
|
||||||
|
msgstr "Automaattisesti luotu muutoshistoria alkaen versiosta %(version)"
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/versionchanges.html:18
|
||||||
|
msgid "Library changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/versionchanges.html:23
|
||||||
|
msgid "C API changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/versionchanges.html:25
|
||||||
|
msgid "Other changes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/writers/latex.py:173
|
||||||
|
msgid "Release"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/writers/text.py:166
|
||||||
|
#, python-format
|
||||||
|
msgid "Ympäristö: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/writers/text.py:427
|
||||||
|
msgid "[image]"
|
||||||
|
msgstr ""
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1
sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js
Normal file
1
sphinx/locale/uk_UA/LC_MESSAGES/sphinx.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
Documentation.addTranslations({"locale": "uk_UA", "plural_expr": "(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)", "messages": {"module, in ": "\u043c\u043e\u0434\u0443\u043b\u044c, \u0432 ", "Preparing search...": "\u041f\u0456\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0434\u043e \u043f\u043e\u0448\u0443\u043a\u0443...", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "\u0412\u0430\u0448 \u043f\u043e\u0448\u0443\u043a \u043d\u0435 \u0432\u0438\u044f\u0432\u0438\u0432 \u0436\u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043f\u0456\u0432\u043f\u0430\u0434\u0456\u043d\u043d\u044f. \u0411\u0443\u0434\u044c-\u043b\u0430\u0441\u043a\u0430 \u043f\u0435\u0440\u0435\u043a\u043e\u043d\u0430\u0439\u0442\u0435\u0441\u044f \u0449\u043e \u0432\u0441\u0456 \u0441\u043b\u043e\u0432\u0430 \u043d\u0430\u0431\u0440\u0430\u043d\u0456 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0456 \u0432\u0438 \u043e\u0431\u0440\u0430\u043b\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043d\u044c\u043e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0456\u0439.", "Search finished, found %s page(s) matching the search query.": "\u041f\u043e\u0448\u0443\u043a \u0437\u0430\u043a\u0456\u043d\u0447\u0435\u043d\u043e, \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e %s \u0441\u0442\u043e\u0440\u0456\u043d\u043e\u043a \u044f\u043a\u0456 \u0441\u043f\u0456\u0432\u043f\u0430\u043b\u0438 \u0437 \u043f\u043e\u0448\u0443\u043a\u043e\u0432\u0438\u043c \u0437\u0430\u043f\u0438\u0442\u043e\u043c.", ", in ": ", \u0432 ", "Permalink to this headline": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", "Searching": "\u0428\u0443\u043a\u0430\u044e", "Permalink to this definition": "\u041f\u043e\u0441\u0442\u0456\u0439\u043d\u0435 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f \u043d\u0430 \u0446\u0435 \u0432\u0438\u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f", "Hide Search Matches": "\u041f\u0440\u0438\u0445\u043e\u0432\u0430\u0442\u0438 \u0441\u043f\u0456\u0432\u043f\u0430\u0434\u0456\u043d\u043d\u044f \u043f\u043e\u0448\u0443\u043a\u0443", "Search Results": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0438 \u043f\u043e\u0448\u0443\u043a\u0443"}});
|
BIN
sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo
Normal file
BIN
sphinx/locale/uk_UA/LC_MESSAGES/sphinx.mo
Normal file
Binary file not shown.
595
sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po
Normal file
595
sphinx/locale/uk_UA/LC_MESSAGES/sphinx.po
Normal file
@ -0,0 +1,595 @@
|
|||||||
|
# Ukrainian (Ukraine) translations for Sphinx.
|
||||||
|
# Copyright (C) 2009 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the Sphinx project.
|
||||||
|
# Petro Sasnyk <petro@sasnyk.name>, 2009.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: Sphinx 0.6\n"
|
||||||
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
|
"POT-Creation-Date: 2008-12-28 23:40+0100\n"
|
||||||
|
"PO-Revision-Date: 2009-01-14 17:34+0200\n"
|
||||||
|
"Last-Translator: Petro Sasnyk <petro@sasnyk.name>\n"
|
||||||
|
"Language-Team: uk_UA <LL@li.org>\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
|
||||||
|
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 0.9.4\n"
|
||||||
|
|
||||||
|
#: sphinx/environment.py:104 sphinx/writers/latex.py:170
|
||||||
|
#, python-format
|
||||||
|
msgid "%B %d, %Y"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: sphinx/environment.py:300 sphinx/templates/genindex-single.html:2
|
||||||
|
#: sphinx/templates/genindex-split.html:2
|
||||||
|
#: sphinx/templates/genindex-split.html:5 sphinx/templates/genindex.html:2
|
||||||
|
#: sphinx/templates/genindex.html:5 sphinx/templates/genindex.html:48
|
||||||
|
#: sphinx/templates/layout.html:126 sphinx/writers/latex.py:176
|
||||||
|
msgid "Index"
|
||||||
|
msgstr "Індекс"
|
||||||
|
|
||||||
|
#: sphinx/environment.py:301 sphinx/writers/latex.py:175
|
||||||
|
msgid "Module Index"
|
||||||
|
msgstr "Індекс модулів"
|
||||||
|
|
||||||
|
#: sphinx/environment.py:302 sphinx/templates/defindex.html:16
|
||||||
|
msgid "Search Page"
|
||||||
|
msgstr "Сторінка пошуку"
|
||||||
|
|
||||||
|
#: sphinx/roles.py:53 sphinx/directives/desc.py:580
|
||||||
|
#, python-format
|
||||||
|
msgid "environment variable; %s"
|
||||||
|
msgstr "змінна оточення; %s"
|
||||||
|
|
||||||
|
#: sphinx/roles.py:60
|
||||||
|
#, python-format
|
||||||
|
msgid "Python Enhancement Proposals!PEP %s"
|
||||||
|
msgstr "Python Enhancement Proposals!PEP %s"
|
||||||
|
|
||||||
|
#: sphinx/builders/changes.py:64
|
||||||
|
msgid "Builtins"
|
||||||
|
msgstr "Вбудовані елементи"
|
||||||
|
|
||||||
|
#: sphinx/builders/changes.py:66
|
||||||
|
msgid "Module level"
|
||||||
|
msgstr "Рівень модуля"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:118
|
||||||
|
#, python-format
|
||||||
|
msgid "%b %d, %Y"
|
||||||
|
msgstr "%b %d, %Y"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:137 sphinx/templates/defindex.html:21
|
||||||
|
msgid "General Index"
|
||||||
|
msgstr "Загальний індекс"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:137
|
||||||
|
msgid "index"
|
||||||
|
msgstr "індекс"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:139 sphinx/builders/htmlhelp.py:182
|
||||||
|
#: sphinx/builders/qthelp.py:131 sphinx/templates/defindex.html:19
|
||||||
|
#: sphinx/templates/modindex.html:2 sphinx/templates/modindex.html:13
|
||||||
|
msgid "Global Module Index"
|
||||||
|
msgstr "Загальний індекс модулів"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:139
|
||||||
|
msgid "modules"
|
||||||
|
msgstr "модулі"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:179
|
||||||
|
msgid "next"
|
||||||
|
msgstr "наступний"
|
||||||
|
|
||||||
|
#: sphinx/builders/html.py:186
|
||||||
|
msgid "previous"
|
||||||
|
msgstr "попередній"
|
||||||
|
|
||||||
|
#: sphinx/builders/latex.py:155
|
||||||
|
msgid " (in "
|
||||||
|
msgstr " (в "
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:25
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (built-in function)"
|
||||||
|
msgstr "%s() (вбудована функція)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:26 sphinx/directives/desc.py:42
|
||||||
|
#: sphinx/directives/desc.py:54
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (in module %s)"
|
||||||
|
msgstr "%s() (в модулі %s)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:29
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (built-in variable)"
|
||||||
|
msgstr "%s (вбудована змінна)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:30 sphinx/directives/desc.py:78
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (in module %s)"
|
||||||
|
msgstr "%s (в модулі %s)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:33
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (built-in class)"
|
||||||
|
msgstr "%s (вбудований клас)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:34
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (class in %s)"
|
||||||
|
msgstr "%s (клас в %s)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:46
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (%s.%s method)"
|
||||||
|
msgstr "%s() (%s.%s метод)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:48
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (%s method)"
|
||||||
|
msgstr "%s() (%s метод)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:58
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (%s.%s static method)"
|
||||||
|
msgstr "%s() (%s.%s статичний метод)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:60
|
||||||
|
#, python-format
|
||||||
|
msgid "%s() (%s static method)"
|
||||||
|
msgstr "%s() (%s статичний метод)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:82
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (%s.%s attribute)"
|
||||||
|
msgstr "%s (%s.%s атрибут)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:84
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (%s attribute)"
|
||||||
|
msgstr "%s (%s атрибут)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:86
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (C function)"
|
||||||
|
msgstr "%s (С функція)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:88
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (C member)"
|
||||||
|
msgstr "%s (C член)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:90
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (C macro)"
|
||||||
|
msgstr "%s (C макрос)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:92
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (C type)"
|
||||||
|
msgstr "%s (C тип)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:94
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (C variable)"
|
||||||
|
msgstr "%s (C змінна)"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:112
|
||||||
|
msgid "Raises"
|
||||||
|
msgstr "Викликає"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:116
|
||||||
|
msgid "Variable"
|
||||||
|
msgstr "Змінна"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:119
|
||||||
|
msgid "Returns"
|
||||||
|
msgstr "Повертає"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:128
|
||||||
|
msgid "Return type"
|
||||||
|
msgstr "Тип повернення"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:213
|
||||||
|
msgid "Parameter"
|
||||||
|
msgstr "Параметр"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:217
|
||||||
|
msgid "Parameters"
|
||||||
|
msgstr "Параметри"
|
||||||
|
|
||||||
|
#: sphinx/directives/desc.py:465
|
||||||
|
#, python-format
|
||||||
|
msgid "%scommand line option; %s"
|
||||||
|
msgstr "%sопція командного рядка; %s"
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:101
|
||||||
|
msgid "Platforms: "
|
||||||
|
msgstr "Платформи: "
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:106
|
||||||
|
#, python-format
|
||||||
|
msgid "%s (module)"
|
||||||
|
msgstr "%s (модуль)"
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:146
|
||||||
|
msgid "Section author: "
|
||||||
|
msgstr "Автор секції: "
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:148
|
||||||
|
msgid "Module author: "
|
||||||
|
msgstr "Автор модуля: "
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:150
|
||||||
|
msgid "Author: "
|
||||||
|
msgstr "Автор: "
|
||||||
|
|
||||||
|
#: sphinx/directives/other.py:249
|
||||||
|
msgid "See also"
|
||||||
|
msgstr "Дивись також"
|
||||||
|
|
||||||
|
#: sphinx/ext/autodoc.py:442
|
||||||
|
#, python-format
|
||||||
|
msgid " Bases: %s"
|
||||||
|
msgstr " Базовий: %s"
|
||||||
|
|
||||||
|
#: sphinx/ext/autodoc.py:563 sphinx/ext/autodoc.py:580
|
||||||
|
#, python-format
|
||||||
|
msgid "alias of :class:`%s`"
|
||||||
|
msgstr "синонім :class:`%s`"
|
||||||
|
|
||||||
|
#: sphinx/ext/todo.py:31
|
||||||
|
msgid "Todo"
|
||||||
|
msgstr "Доробити"
|
||||||
|
|
||||||
|
#: sphinx/ext/todo.py:75
|
||||||
|
#, python-format
|
||||||
|
msgid "(The original entry is located in %s, line %d and can be found "
|
||||||
|
msgstr "(Початкове входження знаходиться в %s, рядок %d і може бути знайдений "
|
||||||
|
|
||||||
|
#: sphinx/ext/todo.py:81
|
||||||
|
msgid "here"
|
||||||
|
msgstr "тут"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:15
|
||||||
|
msgid "Attention"
|
||||||
|
msgstr "Увага"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:16
|
||||||
|
msgid "Caution"
|
||||||
|
msgstr "Застереження"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:17
|
||||||
|
msgid "Danger"
|
||||||
|
msgstr "Небезпека"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:18
|
||||||
|
msgid "Error"
|
||||||
|
msgstr "Помилка"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:19
|
||||||
|
msgid "Hint"
|
||||||
|
msgstr "Підказка"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:20
|
||||||
|
msgid "Important"
|
||||||
|
msgstr "Важливо"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:21
|
||||||
|
msgid "Note"
|
||||||
|
msgstr "Примітка"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:22
|
||||||
|
msgid "See Also"
|
||||||
|
msgstr "Дивись також"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:23
|
||||||
|
msgid "Tip"
|
||||||
|
msgstr "Порада"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:24
|
||||||
|
msgid "Warning"
|
||||||
|
msgstr "Попередження"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:28
|
||||||
|
#, python-format
|
||||||
|
msgid "New in version %s"
|
||||||
|
msgstr "Нове в версії %s"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:29
|
||||||
|
#, python-format
|
||||||
|
msgid "Changed in version %s"
|
||||||
|
msgstr "Змінено в версії %s"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:30
|
||||||
|
#, python-format
|
||||||
|
msgid "Deprecated since version %s"
|
||||||
|
msgstr "Застаріло починаючи з версії %s"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:34
|
||||||
|
msgid "module"
|
||||||
|
msgstr "модуль"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:35
|
||||||
|
msgid "keyword"
|
||||||
|
msgstr "ключове слово"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:36
|
||||||
|
msgid "operator"
|
||||||
|
msgstr "оператор"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:37
|
||||||
|
msgid "object"
|
||||||
|
msgstr "об'єкт"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:38
|
||||||
|
msgid "exception"
|
||||||
|
msgstr "виняткова ситуація"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:39
|
||||||
|
msgid "statement"
|
||||||
|
msgstr "вираз"
|
||||||
|
|
||||||
|
#: sphinx/locale/__init__.py:40
|
||||||
|
msgid "built-in function"
|
||||||
|
msgstr "вбудована функція"
|
||||||
|
|
||||||
|
#: sphinx/static/doctools.js:139 sphinx/writers/html.py:425
|
||||||
|
msgid "Permalink to this headline"
|
||||||
|
msgstr "Постійне посилання на цей заголовок"
|
||||||
|
|
||||||
|
#: sphinx/static/doctools.js:145 sphinx/writers/html.py:80
|
||||||
|
msgid "Permalink to this definition"
|
||||||
|
msgstr "Постійне посилання на це визначення"
|
||||||
|
|
||||||
|
#: sphinx/static/doctools.js:174
|
||||||
|
msgid "Hide Search Matches"
|
||||||
|
msgstr "Приховати співпадіння пошуку"
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:274
|
||||||
|
msgid "Searching"
|
||||||
|
msgstr "Шукаю"
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:279
|
||||||
|
msgid "Preparing search..."
|
||||||
|
msgstr "Підготовка до пошуку..."
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:338
|
||||||
|
msgid "module, in "
|
||||||
|
msgstr "модуль, в "
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:347
|
||||||
|
msgid ", in "
|
||||||
|
msgstr ", в "
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:453 sphinx/templates/search.html:25
|
||||||
|
msgid "Search Results"
|
||||||
|
msgstr "Результати пошуку"
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:455
|
||||||
|
msgid ""
|
||||||
|
"Your search did not match any documents. Please make sure that all words "
|
||||||
|
"are spelled correctly and that you've selected enough categories."
|
||||||
|
msgstr ""
|
||||||
|
"Ваш пошук не виявив жодного співпадіння. Будь-ласка переконайтеся що всі "
|
||||||
|
"слова набрані правильно і ви обрали достатньо категорій."
|
||||||
|
|
||||||
|
#: sphinx/static/searchtools.js:457
|
||||||
|
#, python-format
|
||||||
|
msgid "Search finished, found %s page(s) matching the search query."
|
||||||
|
msgstr "Пошук закінчено, знайдено %s сторінок які співпали з пошуковим запитом."
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:2
|
||||||
|
msgid "Overview"
|
||||||
|
msgstr "Огляд"
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:11
|
||||||
|
msgid "Indices and tables:"
|
||||||
|
msgstr "Індекси та таблиці:"
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:14
|
||||||
|
msgid "Complete Table of Contents"
|
||||||
|
msgstr "Повний Зміст"
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:15
|
||||||
|
msgid "lists all sections and subsections"
|
||||||
|
msgstr "перелічити всі секції та підсекції"
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:17
|
||||||
|
msgid "search this documentation"
|
||||||
|
msgstr "шукати цю документацію"
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:20
|
||||||
|
msgid "quick access to all modules"
|
||||||
|
msgstr "швидкий доступ до всіх модулів"
|
||||||
|
|
||||||
|
#: sphinx/templates/defindex.html:22
|
||||||
|
msgid "all functions, classes, terms"
|
||||||
|
msgstr "всі функції, класи, терміни"
|
||||||
|
|
||||||
|
#: sphinx/templates/genindex-single.html:5
|
||||||
|
#, python-format
|
||||||
|
msgid "Index – %(key)s"
|
||||||
|
msgstr "Індекс – %(key)"
|
||||||
|
|
||||||
|
#: sphinx/templates/genindex-single.html:44
|
||||||
|
#: sphinx/templates/genindex-split.html:14
|
||||||
|
#: sphinx/templates/genindex-split.html:27 sphinx/templates/genindex.html:54
|
||||||
|
msgid "Full index on one page"
|
||||||
|
msgstr "Повний індекс на одній сторінці"
|
||||||
|
|
||||||
|
#: sphinx/templates/genindex-split.html:7
|
||||||
|
msgid "Index pages by letter"
|
||||||
|
msgstr "Індексні сторінки по символам"
|
||||||
|
|
||||||
|
#: sphinx/templates/genindex-split.html:15
|
||||||
|
msgid "can be huge"
|
||||||
|
msgstr "може бути величезним"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:9
|
||||||
|
msgid "Navigation"
|
||||||
|
msgstr "Навігація"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:40
|
||||||
|
msgid "Table Of Contents"
|
||||||
|
msgstr "Зміст"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:46
|
||||||
|
msgid "Previous topic"
|
||||||
|
msgstr "Попередній розділ"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:48
|
||||||
|
msgid "previous chapter"
|
||||||
|
msgstr "Попередній розділ"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:51
|
||||||
|
msgid "Next topic"
|
||||||
|
msgstr "Наступна тема"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:53
|
||||||
|
msgid "next chapter"
|
||||||
|
msgstr "наступний розділ"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:58
|
||||||
|
msgid "This Page"
|
||||||
|
msgstr "Ця сторінка"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:61
|
||||||
|
msgid "Show Source"
|
||||||
|
msgstr "Відобразити вихідний текст"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:71
|
||||||
|
msgid "Quick search"
|
||||||
|
msgstr "Швидкий пошук"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:74
|
||||||
|
msgid "Go"
|
||||||
|
msgstr "Вперед"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:78
|
||||||
|
msgid "Enter search terms or a module, class or function name."
|
||||||
|
msgstr "Введіть пошуковий термін, модуль, клас чи назву функції."
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:115
|
||||||
|
#, python-format
|
||||||
|
msgid "Search within %(docstitle)s"
|
||||||
|
msgstr "Шукати в %(docstitle)s"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:124
|
||||||
|
msgid "About these documents"
|
||||||
|
msgstr "Про ці документи"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:127 sphinx/templates/search.html:2
|
||||||
|
#: sphinx/templates/search.html:5
|
||||||
|
msgid "Search"
|
||||||
|
msgstr "Пошук"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:129
|
||||||
|
msgid "Copyright"
|
||||||
|
msgstr "Авторські права"
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:174
|
||||||
|
#, python-format
|
||||||
|
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:176
|
||||||
|
#, python-format
|
||||||
|
msgid "© Copyright %(copyright)s."
|
||||||
|
msgstr "© Copyright %(copyright)s."
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:179
|
||||||
|
#, python-format
|
||||||
|
msgid "Last updated on %(last_updated)s."
|
||||||
|
msgstr "Востаннє оновлено %(last_updated)s."
|
||||||
|
|
||||||
|
#: sphinx/templates/layout.html:182
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Created using <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
|
||||||
|
"%(sphinx_version)s."
|
||||||
|
msgstr ""
|
||||||
|
"Створено з використанням <a href=\"http://sphinx.pocoo.org/\">Sphinx</a> "
|
||||||
|
"%(sphinx_version)s."
|
||||||
|
|
||||||
|
#: sphinx/templates/modindex.html:36
|
||||||
|
msgid "Deprecated"
|
||||||
|
msgstr "Застарілий"
|
||||||
|
|
||||||
|
#: sphinx/templates/opensearch.xml:4
|
||||||
|
#, python-format
|
||||||
|
msgid "Search %(docstitle)s"
|
||||||
|
msgstr "Пошук %(docstitle)s"
|
||||||
|
|
||||||
|
#: sphinx/templates/search.html:9
|
||||||
|
msgid ""
|
||||||
|
"Please activate JavaScript to enable the search\n"
|
||||||
|
" functionality."
|
||||||
|
msgstr "Будь-ласка вімкніть підтримку JavaScript, щоб ввікнути\n"
|
||||||
|
" пошук."
|
||||||
|
|
||||||
|
#: sphinx/templates/search.html:14
|
||||||
|
msgid ""
|
||||||
|
"From here you can search these documents. Enter your search\n"
|
||||||
|
" words into the box below and click \"search\". Note that the search\n"
|
||||||
|
" function will automatically search for all of the words. Pages\n"
|
||||||
|
" containing fewer words won't appear in the result list."
|
||||||
|
msgstr ""
|
||||||
|
"Звідси ви можете шукати ці документи. Введіть ваші пошукові\n"
|
||||||
|
" слова в поле нижче та натисніть \"пошук\". Зауважте що функція\n"
|
||||||
|
" пошуку автоматично шукатиме за всіма словами. Сторінки\n"
|
||||||
|
" що містять менше слів не з'являться в результуючому списку."
|
||||||
|
|
||||||
|
#: sphinx/templates/search.html:21
|
||||||
|
msgid "search"
|
||||||
|
msgstr "пошук"
|
||||||
|
|
||||||
|
#: sphinx/templates/search.html:27
|
||||||
|
msgid "Your search did not match any results."
|
||||||
|
msgstr "Ваш пошук не виявив жодних співпадінь."
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/frameset.html:5
|
||||||
|
#: sphinx/templates/changes/versionchanges.html:12
|
||||||
|
#, python-format
|
||||||
|
msgid "Changes in Version %(version)s — %(docstitle)s"
|
||||||
|
msgstr "Зміни в Версії %(version)s — %(docstitle)"
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/rstsource.html:5
|
||||||
|
#, python-format
|
||||||
|
msgid "%(filename)s — %(docstitle)s"
|
||||||
|
msgstr "%(filename) — %(docstitle)"
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/versionchanges.html:17
|
||||||
|
#, python-format
|
||||||
|
msgid "Automatically generated list of changes in version %(version)s"
|
||||||
|
msgstr "Автоматичного згенерований список змін в версії %(version)"
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/versionchanges.html:18
|
||||||
|
msgid "Library changes"
|
||||||
|
msgstr "Зміни в бібліотеці"
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/versionchanges.html:23
|
||||||
|
msgid "C API changes"
|
||||||
|
msgstr "зміни C API"
|
||||||
|
|
||||||
|
#: sphinx/templates/changes/versionchanges.html:25
|
||||||
|
msgid "Other changes"
|
||||||
|
msgstr "Інші зміни"
|
||||||
|
|
||||||
|
#: sphinx/writers/latex.py:173
|
||||||
|
msgid "Release"
|
||||||
|
msgstr "Реліз"
|
||||||
|
|
||||||
|
#: sphinx/writers/text.py:166
|
||||||
|
#, python-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr "Платформа: %s"
|
||||||
|
|
||||||
|
#: sphinx/writers/text.py:427
|
||||||
|
msgid "[image]"
|
||||||
|
msgstr ""
|
||||||
|
|
Binary file not shown.
@ -19,6 +19,9 @@
|
|||||||
\RequirePackage{color}
|
\RequirePackage{color}
|
||||||
\RequirePackage{fancyvrb}
|
\RequirePackage{fancyvrb}
|
||||||
\RequirePackage{threeparttable}
|
\RequirePackage{threeparttable}
|
||||||
|
% Handle footnotes in tables.
|
||||||
|
\RequirePackage{footnote}
|
||||||
|
\makesavenoteenv{tabulary}
|
||||||
|
|
||||||
% Redefine these colors to your liking in the preamble.
|
% Redefine these colors to your liking in the preamble.
|
||||||
\definecolor{TitleColor}{rgb}{0.126,0.263,0.361}
|
\definecolor{TitleColor}{rgb}{0.126,0.263,0.361}
|
||||||
|
@ -109,6 +109,8 @@ Z \string\tymax: \the\tymax^^J}%
|
|||||||
\global\advance\TY@linewidth-#1\relax}
|
\global\advance\TY@linewidth-#1\relax}
|
||||||
\def\endtabulary{%
|
\def\endtabulary{%
|
||||||
\gdef\@halignto{}%
|
\gdef\@halignto{}%
|
||||||
|
\let\TY@footnote\footnote%
|
||||||
|
\def\footnote{}% prevent footnotes from doing anything
|
||||||
\expandafter\TY@tab\the\toks@
|
\expandafter\TY@tab\the\toks@
|
||||||
\crcr\omit
|
\crcr\omit
|
||||||
{\xdef\TY@save@row{}%
|
{\xdef\TY@save@row{}%
|
||||||
@ -172,6 +174,7 @@ Z \message{> tymin}%
|
|||||||
\TY@checkmin
|
\TY@checkmin
|
||||||
\TY@count\z@
|
\TY@count\z@
|
||||||
\let\TY@box\TY@box@v
|
\let\TY@box\TY@box@v
|
||||||
|
\let\footnote\TY@footnote % restore footnotes
|
||||||
{\expandafter\TY@final\the\toks@\endTY@final}%
|
{\expandafter\TY@final\the\toks@\endTY@final}%
|
||||||
\count@\z@
|
\count@\z@
|
||||||
\@tempswatrue
|
\@tempswatrue
|
||||||
|
@ -13,6 +13,7 @@ import os
|
|||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
import types
|
||||||
import fnmatch
|
import fnmatch
|
||||||
import tempfile
|
import tempfile
|
||||||
import posixpath
|
import posixpath
|
||||||
@ -23,7 +24,7 @@ from os import path
|
|||||||
# Generally useful regular expressions.
|
# Generally useful regular expressions.
|
||||||
ws_re = re.compile(r'\s+')
|
ws_re = re.compile(r'\s+')
|
||||||
caption_ref_re = re.compile(r'^([^<]+?)\s*<(.+)>$')
|
caption_ref_re = re.compile(r'^([^<]+?)\s*<(.+)>$')
|
||||||
|
url_re = re.compile(r'(?P<schema>.+)://.*')
|
||||||
|
|
||||||
# SEP separates path elements in the canonical file names
|
# SEP separates path elements in the canonical file names
|
||||||
#
|
#
|
||||||
@ -280,9 +281,11 @@ def nested_parse_with_titles(state, content, node):
|
|||||||
surrounding_section_level = state.memo.section_level
|
surrounding_section_level = state.memo.section_level
|
||||||
state.memo.title_styles = []
|
state.memo.title_styles = []
|
||||||
state.memo.section_level = 0
|
state.memo.section_level = 0
|
||||||
state.nested_parse(content, 0, node, match_titles=1)
|
try:
|
||||||
state.memo.title_styles = surrounding_title_styles
|
return state.nested_parse(content, 0, node, match_titles=1)
|
||||||
state.memo.section_level = surrounding_section_level
|
finally:
|
||||||
|
state.memo.title_styles = surrounding_title_styles
|
||||||
|
state.memo.section_level = surrounding_section_level
|
||||||
|
|
||||||
|
|
||||||
def ustrftime(format, *args):
|
def ustrftime(format, *args):
|
||||||
@ -371,3 +374,40 @@ def movefile(source, dest):
|
|||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
os.rename(source, dest)
|
os.rename(source, dest)
|
||||||
|
|
||||||
|
|
||||||
|
# monkey-patch Node.traverse to get more speed
|
||||||
|
# traverse() is called so many times during a build that it saves
|
||||||
|
# on average 20-25% overall build time!
|
||||||
|
|
||||||
|
def _all_traverse(self):
|
||||||
|
"""Version of Node.traverse() that doesn't need a condition."""
|
||||||
|
result = []
|
||||||
|
result.append(self)
|
||||||
|
for child in self.children:
|
||||||
|
result.extend(child._all_traverse())
|
||||||
|
return result
|
||||||
|
|
||||||
|
def _fast_traverse(self, cls):
|
||||||
|
"""Version of Node.traverse() that only supports instance checks."""
|
||||||
|
result = []
|
||||||
|
if isinstance(self, cls):
|
||||||
|
result.append(self)
|
||||||
|
for child in self.children:
|
||||||
|
result.extend(child._fast_traverse(cls))
|
||||||
|
return result
|
||||||
|
|
||||||
|
def _new_traverse(self, condition=None,
|
||||||
|
include_self=1, descend=1, siblings=0, ascend=0):
|
||||||
|
if include_self and descend and not siblings and not ascend:
|
||||||
|
if condition is None:
|
||||||
|
return self._all_traverse()
|
||||||
|
elif isinstance(condition, (types.ClassType, type)):
|
||||||
|
return self._fast_traverse(condition)
|
||||||
|
return self._old_traverse(condition, include_self, descend, siblings, ascend)
|
||||||
|
|
||||||
|
import docutils.nodes
|
||||||
|
docutils.nodes.Node._old_traverse = docutils.nodes.Node.traverse
|
||||||
|
docutils.nodes.Node._all_traverse = _all_traverse
|
||||||
|
docutils.nodes.Node._fast_traverse = _fast_traverse
|
||||||
|
docutils.nodes.Node.traverse = _new_traverse
|
||||||
|
@ -49,8 +49,12 @@ def prepare_commentdoc(s):
|
|||||||
result = []
|
result = []
|
||||||
lines = [line.strip() for line in s.expandtabs().splitlines()]
|
lines = [line.strip() for line in s.expandtabs().splitlines()]
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if line.startswith('#: '):
|
if line.startswith('#:'):
|
||||||
result.append(line[3:])
|
line = line[2:]
|
||||||
|
# the first space after the comment is ignored
|
||||||
|
if line and line[0] == ' ':
|
||||||
|
line = line[1:]
|
||||||
|
result.append(line)
|
||||||
if result and result[-1]:
|
if result and result[-1]:
|
||||||
result.append('')
|
result.append('')
|
||||||
return result
|
return result
|
||||||
|
@ -22,6 +22,7 @@ from docutils.writers.latex2e import Babel
|
|||||||
from sphinx import addnodes
|
from sphinx import addnodes
|
||||||
from sphinx import highlighting
|
from sphinx import highlighting
|
||||||
from sphinx.locale import admonitionlabels, versionlabels
|
from sphinx.locale import admonitionlabels, versionlabels
|
||||||
|
from sphinx.application import SphinxError
|
||||||
from sphinx.util import ustrftime
|
from sphinx.util import ustrftime
|
||||||
from sphinx.util.texescape import tex_escape_map
|
from sphinx.util.texescape import tex_escape_map
|
||||||
from sphinx.util.smartypants import educateQuotesLatex
|
from sphinx.util.smartypants import educateQuotesLatex
|
||||||
@ -62,6 +63,12 @@ FOOTER = r'''
|
|||||||
\end{document}
|
\end{document}
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
class collected_footnote(nodes.footnote):
|
||||||
|
"""Footnotes that are collected are assigned this class."""
|
||||||
|
|
||||||
|
class UnsupportedError(SphinxError):
|
||||||
|
category = 'Markup is unsupported in LaTeX'
|
||||||
|
|
||||||
|
|
||||||
class LaTeXWriter(writers.Writer):
|
class LaTeXWriter(writers.Writer):
|
||||||
|
|
||||||
@ -208,6 +215,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
self.highlightlinenothreshold = sys.maxint
|
self.highlightlinenothreshold = sys.maxint
|
||||||
self.written_ids = set()
|
self.written_ids = set()
|
||||||
self.footnotestack = []
|
self.footnotestack = []
|
||||||
|
self.curfilestack = []
|
||||||
if self.elements['docclass'] == 'manual':
|
if self.elements['docclass'] == 'manual':
|
||||||
if builder.config.latex_use_parts:
|
if builder.config.latex_use_parts:
|
||||||
self.top_sectionlevel = 0
|
self.top_sectionlevel = 0
|
||||||
@ -232,6 +240,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
|
|
||||||
def visit_document(self, node):
|
def visit_document(self, node):
|
||||||
self.footnotestack.append(self.collect_footnotes(node))
|
self.footnotestack.append(self.collect_footnotes(node))
|
||||||
|
self.curfilestack.append(node.get('docname', ''))
|
||||||
if self.first_document == 1:
|
if self.first_document == 1:
|
||||||
# the first document is all the regular content ...
|
# the first document is all the regular content ...
|
||||||
self.body.append(BEGIN_DOC % self.elements)
|
self.body.append(BEGIN_DOC % self.elements)
|
||||||
@ -267,6 +276,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
self.footnotestack.append(self.collect_footnotes(node))
|
self.footnotestack.append(self.collect_footnotes(node))
|
||||||
# also add a document target
|
# also add a document target
|
||||||
self.body.append('\\hypertarget{--doc-%s}{}' % node['docname'])
|
self.body.append('\\hypertarget{--doc-%s}{}' % node['docname'])
|
||||||
|
self.curfilestack.append(node['docname'])
|
||||||
|
|
||||||
def collect_footnotes(self, node):
|
def collect_footnotes(self, node):
|
||||||
fnotes = {}
|
fnotes = {}
|
||||||
@ -281,12 +291,12 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
yield k
|
yield k
|
||||||
for fn in footnotes_under(node):
|
for fn in footnotes_under(node):
|
||||||
num = fn.children[0].astext().strip()
|
num = fn.children[0].astext().strip()
|
||||||
fnotes[num] = fn
|
fnotes[num] = [collected_footnote(*fn.children), False]
|
||||||
fn.parent.remove(fn)
|
|
||||||
return fnotes
|
return fnotes
|
||||||
|
|
||||||
def depart_start_of_file(self, node):
|
def depart_start_of_file(self, node):
|
||||||
self.footnotestack.pop()
|
self.footnotestack.pop()
|
||||||
|
self.curfilestack.pop()
|
||||||
|
|
||||||
def visit_highlightlang(self, node):
|
def visit_highlightlang(self, node):
|
||||||
self.highlightlang = node['lang']
|
self.highlightlang = node['lang']
|
||||||
@ -369,9 +379,10 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
try:
|
try:
|
||||||
self.body.append(r'\%s{' % self.sectionnames[self.sectionlevel])
|
self.body.append(r'\%s{' % self.sectionnames[self.sectionlevel])
|
||||||
except IndexError:
|
except IndexError:
|
||||||
from sphinx.application import SphinxError
|
raise UnsupportedError(
|
||||||
raise SphinxError('too many nesting section levels for LaTeX, '
|
'%s:%s: too many nesting section levels for '
|
||||||
'at heading: %s' % node.astext())
|
'LaTeX, at heading: %s' % (self.curfilestack[-1],
|
||||||
|
node.line or '', node.astext()))
|
||||||
self.context.append('}\n')
|
self.context.append('}\n')
|
||||||
elif isinstance(parent, (nodes.topic, nodes.sidebar)):
|
elif isinstance(parent, (nodes.topic, nodes.sidebar)):
|
||||||
self.body.append(r'\textbf{')
|
self.body.append(r'\textbf{')
|
||||||
@ -555,9 +566,12 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
self.body.append(self.context.pop())
|
self.body.append(self.context.pop())
|
||||||
|
|
||||||
def visit_footnote(self, node):
|
def visit_footnote(self, node):
|
||||||
pass
|
raise nodes.SkipNode
|
||||||
def depart_footnote(self, node):
|
|
||||||
pass
|
def visit_collected_footnote(self, node):
|
||||||
|
self.body.append('\\footnote{')
|
||||||
|
def depart_collected_footnote(self, node):
|
||||||
|
self.body.append('}')
|
||||||
|
|
||||||
def visit_label(self, node):
|
def visit_label(self, node):
|
||||||
if isinstance(node.parent, nodes.citation):
|
if isinstance(node.parent, nodes.citation):
|
||||||
@ -570,7 +584,8 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
|
|
||||||
def visit_table(self, node):
|
def visit_table(self, node):
|
||||||
if self.table:
|
if self.table:
|
||||||
raise NotImplementedError('Nested tables are not supported.')
|
raise UnsupportedError('%s:%s: nested tables are not yet implemented.' %
|
||||||
|
(self.curfilestack[-1], node.line or ''))
|
||||||
self.table = Table()
|
self.table = Table()
|
||||||
self.tablebody = []
|
self.tablebody = []
|
||||||
# Redirect body output until table is finished.
|
# Redirect body output until table is finished.
|
||||||
@ -637,8 +652,9 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
|
|
||||||
def visit_entry(self, node):
|
def visit_entry(self, node):
|
||||||
if node.has_key('morerows') or node.has_key('morecols'):
|
if node.has_key('morerows') or node.has_key('morecols'):
|
||||||
raise NotImplementedError('Column or row spanning cells are '
|
raise UnsupportedError('%s:%s: column or row spanning cells are '
|
||||||
'not implemented.')
|
'not yet implemented.' %
|
||||||
|
(self.curfilestack[-1], node.line or ''))
|
||||||
if self.table.col > 0:
|
if self.table.col > 0:
|
||||||
self.body.append(' & ')
|
self.body.append(' & ')
|
||||||
self.table.col += 1
|
self.table.col += 1
|
||||||
@ -1032,7 +1048,9 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
|
|
||||||
def visit_literal(self, node):
|
def visit_literal(self, node):
|
||||||
|
self.no_contractions += 1
|
||||||
content = self.encode(node.astext().strip())
|
content = self.encode(node.astext().strip())
|
||||||
|
self.no_contractions -= 1
|
||||||
if self.in_title:
|
if self.in_title:
|
||||||
self.body.append(r'\texttt{%s}' % content)
|
self.body.append(r'\texttt{%s}' % content)
|
||||||
elif node.has_key('role') and node['role'] == 'samp':
|
elif node.has_key('role') and node['role'] == 'samp':
|
||||||
@ -1044,14 +1062,19 @@ class LaTeXTranslator(nodes.NodeVisitor):
|
|||||||
def visit_footnote_reference(self, node):
|
def visit_footnote_reference(self, node):
|
||||||
num = node.astext().strip()
|
num = node.astext().strip()
|
||||||
try:
|
try:
|
||||||
fn = self.footnotestack[-1][num]
|
footnode, used = self.footnotestack[-1][num]
|
||||||
except (KeyError, IndexError):
|
except (KeyError, IndexError):
|
||||||
raise nodes.SkipNode
|
raise nodes.SkipNode
|
||||||
self.body.append('\\footnote{')
|
# if a footnote has been inserted once, it shouldn't be repeated
|
||||||
fn.walkabout(self)
|
# by the next reference
|
||||||
|
if used:
|
||||||
|
self.body.append('\\footnotemark[%s]' % num)
|
||||||
|
else:
|
||||||
|
footnode.walkabout(self)
|
||||||
|
self.footnotestack[-1][num][1] = True
|
||||||
raise nodes.SkipChildren
|
raise nodes.SkipChildren
|
||||||
def depart_footnote_reference(self, node):
|
def depart_footnote_reference(self, node):
|
||||||
self.body.append('}')
|
pass
|
||||||
|
|
||||||
def visit_literal_block(self, node):
|
def visit_literal_block(self, node):
|
||||||
self.verbatim = ''
|
self.verbatim = ''
|
||||||
|
@ -24,6 +24,8 @@ exclude_trees = ['_build']
|
|||||||
keep_warnings = True
|
keep_warnings = True
|
||||||
pygments_style = 'sphinx'
|
pygments_style = 'sphinx'
|
||||||
|
|
||||||
|
rst_epilog = '.. |subst| replace:: global substitution'
|
||||||
|
|
||||||
html_style = 'default.css'
|
html_style = 'default.css'
|
||||||
html_static_path = ['_static']
|
html_static_path = ['_static']
|
||||||
html_last_updated_fmt = '%b %d, %Y'
|
html_last_updated_fmt = '%b %d, %Y'
|
||||||
|
@ -11,6 +11,8 @@ Testing various markup
|
|||||||
:author: Me
|
:author: Me
|
||||||
:keywords: docs, sphinx
|
:keywords: docs, sphinx
|
||||||
|
|
||||||
|
A |subst|.
|
||||||
|
|
||||||
.. _label:
|
.. _label:
|
||||||
|
|
||||||
::
|
::
|
||||||
|
BIN
tests/root/rimg.png
Normal file
BIN
tests/root/rimg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 66 KiB |
@ -2,3 +2,5 @@ Image including source in subdir
|
|||||||
================================
|
================================
|
||||||
|
|
||||||
.. image:: img.*
|
.. image:: img.*
|
||||||
|
|
||||||
|
.. image:: /rimg.png
|
||||||
|
@ -20,6 +20,11 @@ from subprocess import Popen, PIPE
|
|||||||
from util import *
|
from util import *
|
||||||
from etree13 import ElementTree as ET
|
from etree13 import ElementTree as ET
|
||||||
|
|
||||||
|
try:
|
||||||
|
import pygments
|
||||||
|
except ImportError:
|
||||||
|
pygments = None
|
||||||
|
|
||||||
from sphinx.builders.html import StandaloneHTMLBuilder
|
from sphinx.builders.html import StandaloneHTMLBuilder
|
||||||
from sphinx.builders.latex import LaTeXBuilder
|
from sphinx.builders.latex import LaTeXBuilder
|
||||||
from sphinx.writers.latex import LaTeXTranslator
|
from sphinx.writers.latex import LaTeXTranslator
|
||||||
@ -57,20 +62,12 @@ HTML_XPATH = {
|
|||||||
},
|
},
|
||||||
'subdir/images.html': {
|
'subdir/images.html': {
|
||||||
".//img[@src='../_images/img1.png']": '',
|
".//img[@src='../_images/img1.png']": '',
|
||||||
|
".//img[@src='../_images/rimg.png']": '',
|
||||||
},
|
},
|
||||||
'includes.html': {
|
'includes.html': {
|
||||||
".//pre/span[@class='s']": u'üöä',
|
|
||||||
".//pre": u'Max Strauß',
|
".//pre": u'Max Strauß',
|
||||||
".//a[@href='_downloads/img.png']": '',
|
".//a[@href='_downloads/img.png']": '',
|
||||||
".//a[@href='_downloads/img1.png']": '',
|
".//a[@href='_downloads/img1.png']": '',
|
||||||
".//div[@class='inc-pyobj1 highlight-text']/div/pre":
|
|
||||||
r'^class Foo:\n pass\n\s*$',
|
|
||||||
".//div[@class='inc-pyobj2 highlight-text']/div/pre":
|
|
||||||
r'^ def baz\(\):\n pass\n\s*$',
|
|
||||||
".//div[@class='inc-lines highlight-text']/div/pre":
|
|
||||||
r'^class Foo:\n pass\nclass Bar:\n$',
|
|
||||||
".//div[@class='inc-startend highlight-text']/div/pre":
|
|
||||||
ur'^foo = u"Including Unicode characters: üöä"\n$',
|
|
||||||
},
|
},
|
||||||
'autodoc.html': {
|
'autodoc.html': {
|
||||||
".//dt[@id='test_autodoc.Class']": '',
|
".//dt[@id='test_autodoc.Class']": '',
|
||||||
@ -83,6 +80,7 @@ HTML_XPATH = {
|
|||||||
".//a[@href='contents.html#ref1']": '',
|
".//a[@href='contents.html#ref1']": '',
|
||||||
".//div[@id='label']": '',
|
".//div[@id='label']": '',
|
||||||
".//span[@class='option']": '--help',
|
".//span[@class='option']": '--help',
|
||||||
|
".//p": 'A global substitution.',
|
||||||
},
|
},
|
||||||
'desc.html': {
|
'desc.html': {
|
||||||
".//dt[@id='mod.Cls.meth1']": '',
|
".//dt[@id='mod.Cls.meth1']": '',
|
||||||
@ -100,6 +98,19 @@ HTML_XPATH = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if pygments:
|
||||||
|
HTML_XPATH['includes.html'].update({
|
||||||
|
".//pre/span[@class='s']": u'üöä',
|
||||||
|
".//div[@class='inc-pyobj1 highlight-text']/div/pre":
|
||||||
|
r'^class Foo:\n pass\n\s*$',
|
||||||
|
".//div[@class='inc-pyobj2 highlight-text']/div/pre":
|
||||||
|
r'^ def baz\(\):\n pass\n\s*$',
|
||||||
|
".//div[@class='inc-lines highlight-text']/div/pre":
|
||||||
|
r'^class Foo:\n pass\nclass Bar:\n$',
|
||||||
|
".//div[@class='inc-startend highlight-text']/div/pre":
|
||||||
|
ur'^foo = u"Including Unicode characters: üöä"\n$',
|
||||||
|
})
|
||||||
|
|
||||||
class NslessParser(ET.XMLParser):
|
class NslessParser(ET.XMLParser):
|
||||||
"""XMLParser that throws away namespaces in tag names."""
|
"""XMLParser that throws away namespaces in tag names."""
|
||||||
|
|
||||||
|
@ -11,6 +11,12 @@
|
|||||||
|
|
||||||
from util import *
|
from util import *
|
||||||
|
|
||||||
|
try:
|
||||||
|
import pygments
|
||||||
|
except ImportError:
|
||||||
|
from nose.plugins.skip import SkipTest
|
||||||
|
raise SkipTest('pygments not available')
|
||||||
|
|
||||||
from pygments.lexer import RegexLexer
|
from pygments.lexer import RegexLexer
|
||||||
from pygments.token import Text, Name
|
from pygments.token import Text, Name
|
||||||
from pygments.formatters.html import HtmlFormatter
|
from pygments.formatters.html import HtmlFormatter
|
||||||
@ -28,16 +34,17 @@ class MyLexer(RegexLexer):
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
class ComplainOnUnhighlighted(PygmentsBridge):
|
|
||||||
|
|
||||||
def unhighlighted(self, source):
|
|
||||||
raise AssertionError("should highlight %r" % source)
|
|
||||||
|
|
||||||
class MyFormatter(HtmlFormatter):
|
class MyFormatter(HtmlFormatter):
|
||||||
def format(self, tokensource, outfile):
|
def format(self, tokensource, outfile):
|
||||||
outfile.write('test')
|
outfile.write('test')
|
||||||
|
|
||||||
|
|
||||||
|
class ComplainOnUnhighlighted(PygmentsBridge):
|
||||||
|
def unhighlighted(self, source):
|
||||||
|
raise AssertionError("should highlight %r" % source)
|
||||||
|
|
||||||
|
|
||||||
@with_app()
|
@with_app()
|
||||||
def test_add_lexer(app):
|
def test_add_lexer(app):
|
||||||
app.add_lexer('test', MyLexer())
|
app.add_lexer('test', MyLexer())
|
||||||
|
Loading…
Reference in New Issue
Block a user