mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge branch '2.0' into 6632
This commit is contained in:
commit
2ae2b0d98a
@ -19,10 +19,14 @@ matrix:
|
||||
- TOXENV=du13
|
||||
- python: '3.7'
|
||||
env:
|
||||
- TOXENV=py37
|
||||
- TOXENV=du14
|
||||
- python: '3.8'
|
||||
env:
|
||||
- TOXENV=du15
|
||||
- PYTEST_ADDOPTS="--cov ./ --cov-append --cov-config setup.cfg"
|
||||
- python: 'nightly'
|
||||
env: TOXENV=py38
|
||||
env:
|
||||
- TOXENV=du16
|
||||
- python: '3.6'
|
||||
env: TOXENV=docs
|
||||
- python: '3.6'
|
||||
|
3
AUTHORS
3
AUTHORS
@ -25,6 +25,7 @@ Other contributors, listed alphabetically, are:
|
||||
* Henrique Bastos -- SVG support for graphviz extension
|
||||
* Daniel Bültmann -- todo extension
|
||||
* Marco Buttu -- doctest extension (pyversion option)
|
||||
* Nathan Damon -- bugfix in validation of static paths in html builders
|
||||
* Etienne Desautels -- apidoc module
|
||||
* Michael Droettboom -- inheritance_diagram extension
|
||||
* Charles Duffy -- original graphviz extension
|
||||
@ -35,7 +36,7 @@ Other contributors, listed alphabetically, are:
|
||||
* Hernan Grecco -- search improvements
|
||||
* Horst Gutmann -- internationalization support
|
||||
* Martin Hans -- autodoc improvements
|
||||
* Zac Hatfield-Dodds -- doctest reporting improvements
|
||||
* Zac Hatfield-Dodds -- doctest reporting improvements, intersphinx performance
|
||||
* Doug Hellmann -- graphviz improvements
|
||||
* Tim Hoffmann -- theme improvements
|
||||
* Antti Kaihola -- doctest extension (skipif option)
|
||||
|
178
CHANGES
178
CHANGES
@ -1,4 +1,4 @@
|
||||
Release 2.2.0 (in development)
|
||||
Release 2.3.0 (in development)
|
||||
==============================
|
||||
|
||||
Dependencies
|
||||
@ -7,7 +7,145 @@ Dependencies
|
||||
Incompatible changes
|
||||
--------------------
|
||||
|
||||
* #6742: ``end-before`` option of :rst:dir:`literalinclude` directive does not
|
||||
match the first line of the code block.
|
||||
* #1331: Change default User-Agent header to ``"Sphinx/X.Y.Z requests/X.Y.Z
|
||||
python/X.Y.Z"``. It can be changed via :confval:`user_agent`.
|
||||
* #6867: text: content of admonitions starts after a blank line
|
||||
|
||||
Deprecated
|
||||
----------
|
||||
|
||||
* ``sphinx.builders.gettext.POHEADER``
|
||||
* ``sphinx.io.SphinxStandaloneReader.app``
|
||||
* ``sphinx.io.SphinxStandaloneReader.env``
|
||||
* ``sphinx.util.texescape.tex_escape_map``
|
||||
* ``sphinx.util.texescape.tex_hl_escape_map_new``
|
||||
|
||||
Features added
|
||||
--------------
|
||||
|
||||
* #6707: C++, support bit-fields.
|
||||
* #267: html: Eliminate prompt characters of doctest block from copyable text
|
||||
* #6548: html: Use favicon for OpenSearch if available
|
||||
* #6729: html theme: agogo theme now supports ``rightsidebar`` option
|
||||
* #6780: Add PEP-561 Support
|
||||
* #6762: latex: Allow to load additonal LaTeX packages via ``extrapackages`` key
|
||||
of :confval:`latex_elements`
|
||||
* #1331: Add new config variable: :confval:`user_agent`
|
||||
* #6000: LaTeX: have backslash also be an inline literal word wrap break
|
||||
character
|
||||
* #4186: LaTeX: Support upLaTeX as a new :confval:`latex_engine` (experimental)
|
||||
* #6812: Improve a warning message when extensions are not parallel safe
|
||||
* #6818: Improve Intersphinx performance for multiple remote inventories.
|
||||
* #2546: apidoc: .so file support
|
||||
* #6798: autosummary: emit ``autodoc-skip-member`` event on generating stub file
|
||||
* #6483: i18n: make explicit titles in toctree translatable
|
||||
* #6816: linkcheck: Add :confval:`linkcheck_auth` option to provide
|
||||
authentication information when doing ``linkcheck`` builds
|
||||
* #6872: linkcheck: Handles HTTP 308 Permanent Redirect
|
||||
|
||||
Bugs fixed
|
||||
----------
|
||||
|
||||
* #6668: LaTeX: Longtable before header has incorrect distance
|
||||
(refs: `latex3/latex2e#173`_)
|
||||
|
||||
.. _latex3/latex2e#173: https://github.com/latex3/latex2e/issues/173
|
||||
* #6618: LaTeX: Avoid section names at the end of a page
|
||||
* #6738: LaTeX: Do not replace unicode characters by LaTeX macros on unicode
|
||||
supported LaTeX engines: ¶, §, €, ∞, ±, →, ‣, –, superscript and subscript
|
||||
digits go through "as is" (as default OpenType font supports them)
|
||||
* #6704: linkcheck: Be defensive and handle newly defined HTTP error code
|
||||
* #6806: linkcheck: Failure on parsing content
|
||||
* #6655: image URLs containing ``data:`` causes gettext builder crashed
|
||||
* #6584: i18n: Error when compiling message catalogs on Hindi
|
||||
* #6718: i18n: KeyError is raised if section title and table title are same
|
||||
* #6743: i18n: :confval:`rst_prolog` breaks the translation
|
||||
* #6708: mathbase: Some deprecated functions have removed
|
||||
* #6709: autodoc: mock object does not work as a class decorator
|
||||
* #5070: epub: Wrong internal href fragment links
|
||||
* #6712: Allow not to install sphinx.testing as runtime (mainly for ALT Linux)
|
||||
* #6741: html: search result was broken with empty :confval:`html_file_suffix`
|
||||
* #6001: LaTeX does not wrap long code lines at backslash character
|
||||
* #6804: LaTeX: PDF build breaks if admonition of danger type contains
|
||||
code-block long enough not to fit on one page
|
||||
* #6809: LaTeX: code-block in a danger type admonition can easily spill over
|
||||
bottom of page
|
||||
* #6793: texinfo: Code examples broken following "sidebar"
|
||||
* #6813: An orphan warning is emitted for included document on Windows. Thanks
|
||||
to @drillan
|
||||
* #6850: Fix smartypants module calls re.sub() with wrong options
|
||||
* #6824: HTML search: If a search term is partially matched in the title and
|
||||
fully matched in a text paragraph on the same page, the search does not
|
||||
include this match.
|
||||
* #6848: config.py shouldn't pop extensions from overrides
|
||||
* #6867: text: extra spaces are inserted to hyphenated words on folding lines
|
||||
* #6886: LaTeX: xelatex converts straight double quotes into right curly ones
|
||||
(shows when :confval:`smartquotes` is ``False``)
|
||||
* #6876: LaTeX: multi-line display of authors on title page has ragged edges
|
||||
* #6887: Sphinx crashes with docutils-0.16b0
|
||||
|
||||
Testing
|
||||
--------
|
||||
|
||||
Release 2.2.3 (in development)
|
||||
==============================
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
Incompatible changes
|
||||
--------------------
|
||||
|
||||
Deprecated
|
||||
----------
|
||||
|
||||
Features added
|
||||
--------------
|
||||
|
||||
Bugs fixed
|
||||
----------
|
||||
|
||||
Testing
|
||||
--------
|
||||
|
||||
Release 2.2.2 (released Dec 03, 2019)
|
||||
=====================================
|
||||
|
||||
Incompatible changes
|
||||
--------------------
|
||||
|
||||
* #6803: For security reason of python, parallel mode is disabled on macOS and
|
||||
Python3.8+
|
||||
|
||||
Bugs fixed
|
||||
----------
|
||||
|
||||
* #6776: LaTeX: 2019-10-01 LaTeX release breaks :file:`sphinxcyrillic.sty`
|
||||
* #6815: i18n: French, Hindi, Chinese, Japanese and Korean translation messages
|
||||
has been broken
|
||||
* #6803: parallel build causes AttributeError on macOS and Python3.8
|
||||
|
||||
Release 2.2.1 (released Oct 26, 2019)
|
||||
=====================================
|
||||
|
||||
Bugs fixed
|
||||
----------
|
||||
|
||||
* #6641: LaTeX: Undefined control sequence ``\sphinxmaketitle``
|
||||
* #6710: LaTeX not well configured for Greek language as main language
|
||||
* #6759: validation of html static paths and extra paths no longer throws
|
||||
an error if the paths are in different directories
|
||||
|
||||
Release 2.2.0 (released Aug 19, 2019)
|
||||
=====================================
|
||||
|
||||
Incompatible changes
|
||||
--------------------
|
||||
|
||||
* apidoc: template files are renamed to ``.rst_t``
|
||||
* html: Field lists will be styled by grid layout
|
||||
|
||||
Deprecated
|
||||
----------
|
||||
@ -32,7 +170,12 @@ Features added
|
||||
* #6514: html: Add a label to search input for accessability purposes
|
||||
* #5602: apidoc: Add ``--templatedir`` option
|
||||
* #6475: Add ``override`` argument to ``app.add_autodocumenter()``
|
||||
* #6310: imgmath: let :confval:`imgmath_use_preview` work also with the SVG
|
||||
format for images rendering inline math
|
||||
* #6533: LaTeX: refactor visit_enumerated_list() to use ``\sphinxsetlistlabels``
|
||||
* #6628: quickstart: Use ``https://docs.python.org/3/`` for default setting of
|
||||
:confval:`intersphinx_mapping`
|
||||
* #6419: sphinx-build: give reasons why rebuilded
|
||||
|
||||
Bugs fixed
|
||||
----------
|
||||
@ -46,6 +189,11 @@ Bugs fixed
|
||||
* #6486: UnboundLocalError is raised if broken extension installed
|
||||
* #6567: autodoc: :confval:`autodoc_inherit_docstrings` does not effect to
|
||||
``__init__()`` and ``__new__()``
|
||||
* #6574: autodoc: :confval:`autodoc_member_order` does not refer order of
|
||||
imports when ``'bysource'`` order
|
||||
* #6574: autodoc: missing type annotation for variadic and keyword parameters
|
||||
* #6589: autodoc: Formatting issues with autodoc_typehints='none'
|
||||
* #6605: autodoc: crashed when target code contains custom method-like objects
|
||||
* #6498: autosummary: crashed with wrong autosummary_generate setting
|
||||
* #6507: autosummary: crashes without no autosummary_generate setting
|
||||
* #6511: LaTeX: autonumbered list can not be customized in LaTeX
|
||||
@ -58,30 +206,10 @@ Bugs fixed
|
||||
* #6549: sphinx-build: Escaped characters in error messages
|
||||
* #6545: doctest comments not getting trimmed since Sphinx 1.8.0
|
||||
* #6561: glossary: Wrong hyperlinks are generated for non alphanumeric terms
|
||||
|
||||
Testing
|
||||
--------
|
||||
|
||||
Release 2.1.3 (in development)
|
||||
==============================
|
||||
|
||||
Dependencies
|
||||
------------
|
||||
|
||||
Incompatible changes
|
||||
--------------------
|
||||
|
||||
Deprecated
|
||||
----------
|
||||
|
||||
Features added
|
||||
--------------
|
||||
|
||||
Bugs fixed
|
||||
----------
|
||||
|
||||
Testing
|
||||
--------
|
||||
* #6620: i18n: classifiers of definition list are not translated with
|
||||
docutils-0.15
|
||||
* #6474: ``DocFieldTransformer`` raises AttributeError when given directive is
|
||||
not a subclass of ObjectDescription
|
||||
|
||||
Release 2.1.2 (released Jun 19, 2019)
|
||||
=====================================
|
||||
|
5
doc/_themes/sphinx13/static/sphinx13.css
vendored
5
doc/_themes/sphinx13/static/sphinx13.css
vendored
@ -299,6 +299,11 @@ a.headerlink:hover {
|
||||
color: white!important;
|
||||
}
|
||||
|
||||
/* avoid font-size when :mod: role in headings */
|
||||
h1 code, h2 code, h3 code, h4 code {
|
||||
font-size: inherit;
|
||||
}
|
||||
|
||||
cite, code, tt {
|
||||
font-family: 'Consolas', 'DejaVu Sans Mono',
|
||||
'Bitstream Vera Sans Mono', monospace;
|
||||
|
@ -36,6 +36,7 @@ This is the current list of contributed extensions in that repository:
|
||||
- astah: embed diagram by using astah
|
||||
- autoanysrc: Gather reST documentation from any source files
|
||||
- autorun: Execute code in a ``runblock`` directive
|
||||
- beamer_: A builder for Beamer (LaTeX) output.
|
||||
- blockdiag: embed block diagrams by using blockdiag_
|
||||
- cacoo: embed diagram from Cacoo
|
||||
- cf3domain: a domain for CFEngine 3 policies
|
||||
@ -148,3 +149,4 @@ started with writing your own extensions.
|
||||
.. _domaintools: https://bitbucket.org/klorenz/sphinxcontrib-domaintools
|
||||
.. _restbuilder: https://pypi.org/project/sphinxcontrib-restbuilder/
|
||||
.. _Lasso: http://www.lassosoft.com/
|
||||
.. _beamer: https://pypi.org/project/sphinxcontrib-beamer/
|
||||
|
@ -26,6 +26,31 @@ The following is a list of deprecated interfaces.
|
||||
- (will be) Removed
|
||||
- Alternatives
|
||||
|
||||
* - ``sphinx.builders.gettext.POHEADER``
|
||||
- 2.3
|
||||
- 4.0
|
||||
- ``sphinx/templates/gettext/message.pot_t`` (template file)
|
||||
|
||||
* - ``sphinx.io.SphinxStandaloneReader.app``
|
||||
- 2.3
|
||||
- 4.0
|
||||
- ``sphinx.io.SphinxStandaloneReader.setup()``
|
||||
|
||||
* - ``sphinx.io.SphinxStandaloneReader.env``
|
||||
- 2.3
|
||||
- 4.0
|
||||
- ``sphinx.io.SphinxStandaloneReader.setup()``
|
||||
|
||||
* - ``sphinx.util.texescape.tex_escape_map``
|
||||
- 2.3
|
||||
- 4.0
|
||||
- ``sphinx.util.texescape.escape()``
|
||||
|
||||
* - ``sphinx.util.texescape.tex_hl_escape_map_new``
|
||||
- 2.3
|
||||
- 4.0
|
||||
- ``sphinx.util.texescape.hlescape()``
|
||||
|
||||
* - ``sphinx.domains.math.MathDomain.add_equation()``
|
||||
- 2.2
|
||||
- 4.0
|
||||
|
@ -55,9 +55,9 @@ See the :ref:`pertinent section in the FAQ list <usingwith>`.
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
Sphinx needs at least **Python 3.5** to run, as well as the docutils_ and
|
||||
Jinja2_ libraries. Sphinx should work with docutils version 0.12 or some (not
|
||||
broken) SVN trunk snapshot.
|
||||
Sphinx needs at least **Python 3.5** to run.
|
||||
It also depends on 3rd party libraries such as docutils_ and jinja2_, but they
|
||||
are automatically installed when sphinx is installed.
|
||||
|
||||
.. _reStructuredText: http://docutils.sourceforge.net/rst.html
|
||||
.. _docutils: http://docutils.sourceforge.net/
|
||||
|
@ -226,6 +226,25 @@ into the generated ``.tex`` files. Its ``'sphinxsetup'`` key is described
|
||||
|
||||
.. versionadded:: 1.5
|
||||
|
||||
``'extrapackages'``
|
||||
Additional LaTeX packages. For example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
latex_elements = {
|
||||
'packages': r'\usepackage{isodate}'
|
||||
}
|
||||
|
||||
It defaults to empty.
|
||||
|
||||
The specified LaTeX packages will be loaded before
|
||||
hyperref package and packages loaded from Sphinx extensions.
|
||||
|
||||
.. hint:: If you'd like to load additional LaTeX packages after hyperref, use
|
||||
``'preamble'`` key instead.
|
||||
|
||||
.. versionadded:: 2.3
|
||||
|
||||
``'footer'``
|
||||
Additional footer content (before the indices), default empty.
|
||||
|
||||
@ -289,6 +308,11 @@ into the generated ``.tex`` files. Its ``'sphinxsetup'`` key is described
|
||||
|
||||
.. attention::
|
||||
|
||||
If Greek is main language, do not use this key. Since Sphinx 2.2.1,
|
||||
``xelatex`` will be used automatically as :confval:`latex_engine`.
|
||||
Formerly, Sphinx did not support producing PDF via LaTeX with Greek as
|
||||
main language.
|
||||
|
||||
Prior to 2.0, Unicode Greek letters were escaped to use LaTeX math
|
||||
mark-up. This is not the case anymore, and the above must be used
|
||||
(only in case of ``'pdflatex'`` engine) if the source contains such
|
||||
@ -310,12 +334,19 @@ into the generated ``.tex`` files. Its ``'sphinxsetup'`` key is described
|
||||
.. versionchanged:: 2.0
|
||||
``'lualatex'`` executes
|
||||
``\defaultfontfeatures[\rmfamily,\sffamily]{}`` to disable TeX
|
||||
ligatures.
|
||||
ligatures transforming `<<` and `>>` as escaping working with
|
||||
``pdflatex/xelatex`` failed with ``lualatex``.
|
||||
.. versionchanged:: 2.0
|
||||
Detection of ``LGR``, ``T2A``, ``X2`` to trigger support of
|
||||
occasional Greek or Cyrillic (``'pdflatex'`` only, as this support
|
||||
is provided natively by ``'platex'`` and only requires suitable
|
||||
font with ``'xelatex'/'lualatex'``).
|
||||
.. versionchanged:: 2.3.0
|
||||
``'xelatex'`` also executes
|
||||
``\defaultfontfeatures[\rmfamily,\sffamily]{}`` in order to avoid
|
||||
contractions of ``--`` into en-dash or transforms of straight quotes
|
||||
into curly ones in PDF (in non-literal text paragraphs) despite
|
||||
:confval:`smartquotes` being set to ``False``.
|
||||
|
||||
``'textgreek'``
|
||||
The default (``'pdflatex'`` only) is
|
||||
@ -595,12 +626,15 @@ macros may be significant.
|
||||
default ``true``. Allows linebreaks inside inline literals: but extra
|
||||
potential break-points (additionally to those allowed by LaTeX at spaces
|
||||
or for hyphenation) are currently inserted only after the characters
|
||||
``. , ; ? ! /``. Due to TeX internals, white space in the line will be
|
||||
stretched (or shrunk) in order to accomodate the linebreak.
|
||||
``. , ; ? ! /`` and ``\``. Due to TeX internals, white space in the line
|
||||
will be stretched (or shrunk) in order to accomodate the linebreak.
|
||||
|
||||
.. versionadded:: 1.5
|
||||
set this option value to ``false`` to recover former behaviour.
|
||||
|
||||
.. versionchanged:: 2.3.0
|
||||
added potential breakpoint at ``\`` characters.
|
||||
|
||||
``verbatimvisiblespace``
|
||||
default ``\textcolor{red}{\textvisiblespace}``. When a long code line is
|
||||
split, the last space character from the source code line right before the
|
||||
|
@ -510,6 +510,14 @@ General configuration
|
||||
|
||||
.. versionadded:: 1.6.6
|
||||
|
||||
.. confval:: user_agent
|
||||
|
||||
A User-Agent of Sphinx. It is used for a header on HTTP access (ex.
|
||||
linkcheck, intersphinx and so on). Default is ``"Sphinx/X.Y.Z
|
||||
requests/X.Y.Z python/X.Y.Z"``.
|
||||
|
||||
.. versionadded:: 2.3
|
||||
|
||||
.. confval:: tls_verify
|
||||
|
||||
If true, Sphinx verifies server certifications. Default is ``True``.
|
||||
@ -530,7 +538,7 @@ General configuration
|
||||
directory pointed ``REQUESTS_CA_BUNDLE`` environment
|
||||
variable if ``tls_cacerts`` not set.
|
||||
|
||||
.. _requests: http://docs.python-requests.org/en/master/
|
||||
.. _requests: https://requests.readthedocs.io/en/master/
|
||||
|
||||
.. confval:: today
|
||||
today_fmt
|
||||
@ -654,12 +662,17 @@ documentation on :ref:`intl` for details.
|
||||
|
||||
Currently supported languages by Sphinx are:
|
||||
|
||||
* ``ar`` -- Arabic
|
||||
* ``bn`` -- Bengali
|
||||
* ``ca`` -- Catalan
|
||||
* ``cak`` -- Kaqchikel
|
||||
* ``cs`` -- Czech
|
||||
* ``cy`` -- Welsh
|
||||
* ``da`` -- Danish
|
||||
* ``de`` -- German
|
||||
* ``el`` -- Greek
|
||||
* ``en`` -- English
|
||||
* ``eo`` -- Esperanto
|
||||
* ``es`` -- Spanish
|
||||
* ``et`` -- Estonian
|
||||
* ``eu`` -- Basque
|
||||
@ -667,6 +680,7 @@ documentation on :ref:`intl` for details.
|
||||
* ``fi`` -- Finnish
|
||||
* ``fr`` -- French
|
||||
* ``he`` -- Hebrew
|
||||
* ``hi`` -- Hindi
|
||||
* ``hr`` -- Croatian
|
||||
* ``hu`` -- Hungarian
|
||||
* ``id`` -- Indonesian
|
||||
@ -680,15 +694,20 @@ documentation on :ref:`intl` for details.
|
||||
* ``ne`` -- Nepali
|
||||
* ``nl`` -- Dutch
|
||||
* ``pl`` -- Polish
|
||||
* ``pt`` -- Portuguese
|
||||
* ``pt_BR`` -- Brazilian Portuguese
|
||||
* ``pt_PT`` -- European Portuguese
|
||||
* ``ro`` -- Romanian
|
||||
* ``ru`` -- Russian
|
||||
* ``si`` -- Sinhala
|
||||
* ``sk`` -- Slovak
|
||||
* ``sl`` -- Slovenian
|
||||
* ``sr`` -- Serbian
|
||||
* ``sv`` -- Swedish
|
||||
* ``ta`` -- Tamil
|
||||
* ``tr`` -- Turkish
|
||||
* ``uk_UA`` -- Ukrainian
|
||||
* ``ur`` -- Urdu
|
||||
* ``vi`` -- Vietnamese
|
||||
* ``zh_CN`` -- Simplified Chinese
|
||||
* ``zh_TW`` -- Traditional Chinese
|
||||
@ -1828,6 +1847,7 @@ These options influence LaTeX output.
|
||||
* ``'xelatex'`` -- XeLaTeX
|
||||
* ``'lualatex'`` -- LuaLaTeX
|
||||
* ``'platex'`` -- pLaTeX (default if :confval:`language` is ``'ja'``)
|
||||
* ``'uplatex'`` -- upLaTeX (experimental)
|
||||
|
||||
``'pdflatex'``\ 's support for Unicode characters is limited.
|
||||
|
||||
@ -1841,7 +1861,21 @@ These options influence LaTeX output.
|
||||
``'xelatex'`` or ``'lualatex'`` and making sure to use an OpenType font
|
||||
with wide-enough glyph coverage is often easier than trying to make
|
||||
``'pdflatex'`` work with the extra Unicode characters. Since Sphinx 2.0
|
||||
the default is the GNU FreeFont which covers well Latin, Cyrillic and Greek.
|
||||
the default is the GNU FreeFont which covers well Latin, Cyrillic and
|
||||
Greek.
|
||||
|
||||
.. versionchanged:: 2.1.0
|
||||
|
||||
Use ``xelatex`` (and LaTeX package ``xeCJK``) by default for Chinese
|
||||
documents.
|
||||
|
||||
.. versionchanged:: 2.2.1
|
||||
|
||||
Use ``xelatex`` by default for Greek documents.
|
||||
|
||||
.. versionchanged:: 2.3
|
||||
|
||||
Add ``uplatex`` support.
|
||||
|
||||
Contrarily to :ref:`MathJaX math rendering in HTML output <math-support>`,
|
||||
LaTeX requires some extra configuration to support Unicode literals in
|
||||
@ -2346,6 +2380,34 @@ Options for the linkcheck builder
|
||||
|
||||
.. versionadded:: 1.5
|
||||
|
||||
.. confval:: linkcheck_auth
|
||||
|
||||
Pass authentication information when doing a ``linkcheck`` build.
|
||||
|
||||
A list of ``(regex_pattern, auth_info)`` tuples where the items are:
|
||||
|
||||
*regex_pattern*
|
||||
A regular expression that matches a URI.
|
||||
*auth_info*
|
||||
Authentication information to use for that URI. The value can be anything
|
||||
that is understood by the ``requests`` library (see `requests
|
||||
Authentication <requests-auth>`_ for details).
|
||||
|
||||
.. _requests-auth: https://requests.readthedocs.io/en/master/user/authentication/
|
||||
|
||||
The ``linkcheck`` builder will use the first matching ``auth_info`` value
|
||||
it can find in the :confval:`linkcheck_auth` list, so values earlier in the
|
||||
list have higher priority.
|
||||
|
||||
Example::
|
||||
|
||||
linkcheck_auth = [
|
||||
('https://foo\.yourcompany\.com/.+', ('johndoe', 'secret')),
|
||||
('https://.+\.yourcompany\.com/.+', HTTPDigestAuth(...)),
|
||||
]
|
||||
|
||||
.. versionadded:: 2.3
|
||||
|
||||
|
||||
Options for the XML builder
|
||||
---------------------------
|
||||
|
@ -439,7 +439,7 @@ There are also config values that you can set:
|
||||
* ``'signature'`` -- Show typehints as its signature (default)
|
||||
* ``'none'`` -- Do not show typehints
|
||||
|
||||
.. versionadded: 2.1
|
||||
.. versionadded:: 2.1
|
||||
|
||||
.. confval:: autodoc_warningiserror
|
||||
|
||||
|
@ -143,6 +143,11 @@ also use these config values:
|
||||
The new files will be placed in the directories specified in the
|
||||
``:toctree:`` options of the directives.
|
||||
|
||||
.. versionchanged:: 2.3
|
||||
|
||||
Emits :event:`autodoc-skip-member` event as :mod:`~sphinx.ext.autodoc`
|
||||
does.
|
||||
|
||||
.. confval:: autosummary_mock_imports
|
||||
|
||||
This value contains a list of modules to be mocked up. See
|
||||
|
@ -30,13 +30,39 @@ This extension renders math via LaTeX and dvipng_ or dvisvgm_ into PNG or SVG
|
||||
images. This of course means that the computer where the docs are built must
|
||||
have both programs available.
|
||||
|
||||
There are various config values you can set to influence how the images are
|
||||
built:
|
||||
There are various configuration values you can set to influence how the images
|
||||
are built:
|
||||
|
||||
.. confval:: imgmath_image_format
|
||||
|
||||
The output image format. The default is ``'png'``. It should be either
|
||||
``'png'`` or ``'svg'``.
|
||||
The output image format. The default is ``'png'``. It should be either
|
||||
``'png'`` or ``'svg'``. The image is produced by first executing ``latex``
|
||||
on the TeX mathematical mark-up then (depending on the requested format)
|
||||
either `dvipng`_ or `dvisvgm`_.
|
||||
|
||||
.. confval:: imgmath_use_preview
|
||||
|
||||
``dvipng`` and ``dvisvgm`` both have the ability to collect from LaTeX the
|
||||
"depth" of the rendered math: an inline image should use this "depth" in a
|
||||
``vertical-align`` style to get correctly aligned with surrounding text.
|
||||
|
||||
This mechanism requires the `LaTeX preview package`_ (available as
|
||||
``preview-latex-style`` on Ubuntu xenial). Therefore, the default for this
|
||||
option is ``False`` but it is strongly recommended to set it to ``True``.
|
||||
|
||||
.. versionchanged:: 2.2
|
||||
|
||||
This option can be used with the ``'svg'`` :confval:`imgmath_image_format`.
|
||||
|
||||
.. confval:: imgmath_add_tooltips
|
||||
|
||||
Default: ``True``. If false, do not add the LaTeX code as an "alt" attribute
|
||||
for math images.
|
||||
|
||||
.. confval:: imgmath_font_size
|
||||
|
||||
The font size (in ``pt``) of the displayed math. The default value is
|
||||
``12``. It must be a positive integer.
|
||||
|
||||
.. confval:: imgmath_latex
|
||||
|
||||
@ -54,19 +80,13 @@ built:
|
||||
This value should only contain the path to the latex executable, not further
|
||||
arguments; use :confval:`imgmath_latex_args` for that purpose.
|
||||
|
||||
.. confval:: imgmath_dvipng
|
||||
.. hint::
|
||||
|
||||
The command name with which to invoke ``dvipng``. The default is
|
||||
``'dvipng'``; you may need to set this to a full path if ``dvipng`` is not in
|
||||
the executable search path. This option is only used when
|
||||
``imgmath_image_format`` is set to ``'png'``.
|
||||
|
||||
.. confval:: imgmath_dvisvgm
|
||||
|
||||
The command name with which to invoke ``dvisvgm``. The default is
|
||||
``'dvisvgm'``; you may need to set this to a full path if ``dvisvgm`` is not
|
||||
in the executable search path. This option is only used when
|
||||
``imgmath_image_format`` is ``'svg'``.
|
||||
Some fancy LaTeX mark-up (an example was reported which used TikZ to add
|
||||
various decorations to the equation) require multiple runs of the LaTeX
|
||||
executable. To handle this, set this configuration setting to
|
||||
``'latexmk'`` (or a full path to it) as this Perl script reliably
|
||||
chooses dynamically how many latex runs are needed.
|
||||
|
||||
.. confval:: imgmath_latex_args
|
||||
|
||||
@ -75,49 +95,43 @@ built:
|
||||
|
||||
.. confval:: imgmath_latex_preamble
|
||||
|
||||
Additional LaTeX code to put into the preamble of the short LaTeX files that
|
||||
are used to translate the math snippets. This is empty by default. Use it
|
||||
e.g. to add more packages whose commands you want to use in the math.
|
||||
Additional LaTeX code to put into the preamble of the LaTeX files used to
|
||||
translate the math snippets. This is left empty by default. Use it
|
||||
e.g. to add packages which modify the fonts used for math, such as
|
||||
``'\\usepackage{newtxsf}'`` for sans-serif fonts, or
|
||||
``'\\usepackage{fouriernc}'`` for serif fonts. Indeed, the default LaTeX
|
||||
math fonts have rather thin glyphs which (in HTML output) often do not
|
||||
match well with the font for text.
|
||||
|
||||
.. confval:: imgmath_dvipng
|
||||
|
||||
The command name to invoke ``dvipng``. The default is
|
||||
``'dvipng'``; you may need to set this to a full path if ``dvipng`` is not in
|
||||
the executable search path. This option is only used when
|
||||
``imgmath_image_format`` is set to ``'png'``.
|
||||
|
||||
.. confval:: imgmath_dvipng_args
|
||||
|
||||
Additional arguments to give to dvipng, as a list. The default value is
|
||||
``['-gamma', '1.5', '-D', '110', '-bg', 'Transparent']`` which makes the
|
||||
image a bit darker and larger then it is by default, and produces PNGs with a
|
||||
image a bit darker and larger then it is by default (this compensates
|
||||
somewhat for the thinness of default LaTeX math fonts), and produces PNGs with a
|
||||
transparent background. This option is used only when
|
||||
``imgmath_image_format`` is ``'png'``.
|
||||
|
||||
.. confval:: imgmath_dvisvgm
|
||||
|
||||
The command name to invoke ``dvisvgm``. The default is
|
||||
``'dvisvgm'``; you may need to set this to a full path if ``dvisvgm`` is not
|
||||
in the executable search path. This option is only used when
|
||||
``imgmath_image_format`` is ``'svg'``.
|
||||
|
||||
.. confval:: imgmath_dvisvgm_args
|
||||
|
||||
Additional arguments to give to dvisvgm, as a list. The default value is
|
||||
``['--no-fonts']``. This option is used only when ``imgmath_image_format``
|
||||
is ``'svg'``.
|
||||
|
||||
.. confval:: imgmath_use_preview
|
||||
|
||||
``dvipng`` has the ability to determine the "depth" of the rendered text: for
|
||||
example, when typesetting a fraction inline, the baseline of surrounding text
|
||||
should not be flush with the bottom of the image, rather the image should
|
||||
extend a bit below the baseline. This is what TeX calls "depth". When this
|
||||
is enabled, the images put into the HTML document will get a
|
||||
``vertical-align`` style that correctly aligns the baselines.
|
||||
|
||||
Unfortunately, this only works when the `preview-latex package`_ is
|
||||
installed (on Ubuntu xenial, it is available as `preview-latex-style`_).
|
||||
Therefore, the default for this option is ``False``.
|
||||
|
||||
Currently this option is only used when ``imgmath_image_format`` is
|
||||
``'png'``.
|
||||
|
||||
.. confval:: imgmath_add_tooltips
|
||||
|
||||
Default: ``True``. If false, do not add the LaTeX code as an "alt" attribute
|
||||
for math images.
|
||||
|
||||
.. confval:: imgmath_font_size
|
||||
|
||||
The font size (in ``pt``) of the displayed math. The default value is
|
||||
``12``. It must be a positive integer.
|
||||
Additional arguments to give to dvisvgm, as a list. The default value is
|
||||
``['--no-fonts']``, which means that ``dvisvgm`` will render glyphs as path
|
||||
elements (cf the `dvisvgm FAQ`_). This option is used only when
|
||||
``imgmath_image_format`` is ``'svg'``.
|
||||
|
||||
|
||||
:mod:`sphinx.ext.mathjax` -- Render math via JavaScript
|
||||
@ -219,7 +233,7 @@ package jsMath_. It provides this config value:
|
||||
|
||||
.. _dvipng: https://savannah.nongnu.org/projects/dvipng/
|
||||
.. _dvisvgm: https://dvisvgm.de/
|
||||
.. _dvisvgm FAQ: https://dvisvgm.de/FAQ
|
||||
.. _MathJax: https://www.mathjax.org/
|
||||
.. _jsMath: http://www.math.union.edu/~dpvc/jsmath/
|
||||
.. _preview-latex package: https://www.gnu.org/software/auctex/preview-latex.html
|
||||
.. _preview-latex-style: https://packages.ubuntu.com/xenial/preview-latex-style
|
||||
.. _LaTeX preview package: https://www.gnu.org/software/auctex/preview-latex.html
|
||||
|
@ -56,7 +56,7 @@ source code files.
|
||||
.. _Google:
|
||||
https://google.github.io/styleguide/pyguide.html#Comments
|
||||
.. _NumPy:
|
||||
https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt
|
||||
https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard
|
||||
.. _Khan Academy:
|
||||
https://github.com/Khan/style-guides/blob/master/style/python.md#docstrings
|
||||
|
||||
|
@ -453,21 +453,29 @@ __ http://pygments.org/docs/lexers/
|
||||
As discussed previously, *language* can be any lexer alias supported by
|
||||
Pygments.
|
||||
|
||||
**Additional options**
|
||||
.. rubric:: options
|
||||
|
||||
Pygments can generate line numbers for code blocks. To enable this, use the
|
||||
``linenothreshold`` option. ::
|
||||
.. rst:directive:option:: linenothreshold: threshold
|
||||
:type: number (optional)
|
||||
|
||||
.. highlight:: python
|
||||
:linenothreshold: 5
|
||||
Enable to generate line numbers for code blocks.
|
||||
|
||||
This will produce line numbers for all code blocks longer than five lines.
|
||||
This option takes an optional number as threshold parameter. If any
|
||||
threshold given, the directive will produce line numbers only for the code
|
||||
blocks longer than N lines. If not given, line numbers will be produced
|
||||
for all of code blocks.
|
||||
|
||||
To ignore minor errors on highlighting, you can specifiy ``:force:`` option.
|
||||
Example::
|
||||
|
||||
.. versionchanged:: 2.1
|
||||
.. highlight:: python
|
||||
:linenothreshold: 5
|
||||
|
||||
``:force:`` option.
|
||||
.. rst:directive:option:: force
|
||||
:type: no value
|
||||
|
||||
If given, minor errors on highlighting are ignored.
|
||||
|
||||
.. versionadded:: 2.1
|
||||
|
||||
.. rst:directive:: .. code-block:: [language]
|
||||
|
||||
@ -483,72 +491,98 @@ __ http://pygments.org/docs/lexers/
|
||||
:rst:dir:`highlight` directive will be used. If not set,
|
||||
:confval:`highlight_language` will be used.
|
||||
|
||||
**Additional options**
|
||||
|
||||
Pygments can generate line numbers for code blocks. To enable this for, use
|
||||
the ``linenos`` flag option. ::
|
||||
|
||||
.. code-block:: ruby
|
||||
:linenos:
|
||||
|
||||
Some more Ruby code.
|
||||
|
||||
The first line number can be selected with the ``lineno-start`` option. If
|
||||
present, ``linenos`` flag is automatically activated::
|
||||
|
||||
.. code-block:: ruby
|
||||
:lineno-start: 10
|
||||
|
||||
Some more Ruby code, with line numbering starting at 10.
|
||||
|
||||
Additionally, an ``emphasize-lines`` option can be given to have Pygments
|
||||
emphasize particular lines::
|
||||
|
||||
.. code-block:: python
|
||||
:emphasize-lines: 3,5
|
||||
|
||||
def some_function():
|
||||
interesting = False
|
||||
print 'This line is highlighted.'
|
||||
print 'This one is not...'
|
||||
print '...but this one is.'
|
||||
|
||||
A ``caption`` option can be given to show that name before the code block.
|
||||
A ``name`` option can be provided implicit target name that can be
|
||||
referenced by using :rst:role:`ref`. For example::
|
||||
|
||||
.. code-block:: python
|
||||
:caption: this.py
|
||||
:name: this-py
|
||||
|
||||
print 'Explicit is better than implicit.'
|
||||
|
||||
A ``dedent`` option can be given to strip indentation characters from the
|
||||
code block. For example::
|
||||
|
||||
.. code-block:: ruby
|
||||
:dedent: 4
|
||||
|
||||
some ruby code
|
||||
|
||||
A ``force`` option can ignore minor errors on highlighting.
|
||||
|
||||
.. versionchanged:: 1.1
|
||||
The ``emphasize-lines`` option has been added.
|
||||
|
||||
.. versionchanged:: 1.3
|
||||
The ``lineno-start``, ``caption``, ``name`` and ``dedent`` options have
|
||||
been added.
|
||||
|
||||
.. versionchanged:: 1.6.6
|
||||
LaTeX supports the ``emphasize-lines`` option.
|
||||
|
||||
.. versionchanged:: 2.0
|
||||
The ``language`` argument becomes optional.
|
||||
|
||||
.. versionchanged:: 2.1
|
||||
.. rubric:: options
|
||||
|
||||
``:force:`` option has been added.
|
||||
.. rst:directive:option:: linenos
|
||||
:type: no value
|
||||
|
||||
Enable to generate line numbers for the code block::
|
||||
|
||||
.. code-block:: ruby
|
||||
:linenos:
|
||||
|
||||
Some more Ruby code.
|
||||
|
||||
.. rst:directive:option:: lineno-start: number
|
||||
:type: number
|
||||
|
||||
Set the first line number of the code block. If present, ``linenos``
|
||||
option is also automatically activated::
|
||||
|
||||
.. code-block:: ruby
|
||||
:lineno-start: 10
|
||||
|
||||
Some more Ruby code, with line numbering starting at 10.
|
||||
|
||||
.. versionadded:: 1.3
|
||||
|
||||
.. rst:directive:option:: emphasize-lines: line numbers
|
||||
:type: comma separated numbers
|
||||
|
||||
Emphasize particular lines of the code block::
|
||||
|
||||
.. code-block:: python
|
||||
:emphasize-lines: 3,5
|
||||
|
||||
def some_function():
|
||||
interesting = False
|
||||
print 'This line is highlighted.'
|
||||
print 'This one is not...'
|
||||
print '...but this one is.'
|
||||
|
||||
.. versionadded:: 1.1
|
||||
.. versionchanged:: 1.6.6
|
||||
LaTeX supports the ``emphasize-lines`` option.
|
||||
|
||||
.. rst:directive:option: force
|
||||
:type: no value
|
||||
|
||||
Ignore minor errors on highlighting
|
||||
|
||||
.. versionchanged:: 2.1
|
||||
|
||||
.. rst:directive:option:: caption: caption of code block
|
||||
:type: text
|
||||
|
||||
Set a caption to the code block.
|
||||
|
||||
.. versionadded:: 1.3
|
||||
|
||||
.. rst:directive:option:: name: a label for hyperlink
|
||||
:type: text
|
||||
|
||||
Define implicit target name that can be referenced by using
|
||||
:rst:role:`ref`. For example::
|
||||
|
||||
.. code-block:: python
|
||||
:caption: this.py
|
||||
:name: this-py
|
||||
|
||||
print 'Explicit is better than implicit.'
|
||||
|
||||
.. versionadded:: 1.3
|
||||
|
||||
.. rst:directive:option:: dedent: number
|
||||
:type: number
|
||||
|
||||
Strip indentation characters from the code block. For example::
|
||||
|
||||
.. code-block:: ruby
|
||||
:dedent: 4
|
||||
|
||||
some ruby code
|
||||
|
||||
.. versionadded:: 1.3
|
||||
|
||||
.. rst:directive:option:: force
|
||||
:type: no value
|
||||
|
||||
If given, minor errors on highlighting are ignored.
|
||||
|
||||
.. versionadded:: 2.1
|
||||
|
||||
.. rst:directive:: .. literalinclude:: filename
|
||||
|
||||
@ -1017,7 +1051,7 @@ this reason, the following directive exists:
|
||||
cells.
|
||||
|
||||
Sphinx's merged cells interact well with ``p{width}``, ``\X{a}{b}``,
|
||||
``Y{f}`` and tabulary's columns.
|
||||
``\Y{f}`` and tabulary's columns.
|
||||
|
||||
.. note::
|
||||
|
||||
|
@ -1530,7 +1530,7 @@ These roles are provided to refer to the described objects:
|
||||
The Math Domain
|
||||
---------------
|
||||
|
||||
The math domain (name **math**) provides the following roles::
|
||||
The math domain (name **math**) provides the following roles:
|
||||
|
||||
.. rst:role:: math:numref
|
||||
|
||||
|
@ -237,6 +237,8 @@ These themes are:
|
||||
- **documentwidth** (CSS length): Width of the document (without sidebar),
|
||||
default 50em.
|
||||
- **sidebarwidth** (CSS length): Width of the sidebar, default 20em.
|
||||
- **rightsidebar** (true or false): Put the sidebar on the right side.
|
||||
Defaults to ``True``.
|
||||
- **bgcolor** (CSS color): Background color.
|
||||
- **headerbg** (CSS value for "background"): background for the header area,
|
||||
default a grayish gradient.
|
||||
|
9
setup.py
9
setup.py
@ -47,7 +47,7 @@ extras_require = {
|
||||
'html5lib',
|
||||
'flake8>=3.5.0',
|
||||
'flake8-import-order',
|
||||
'mypy>=0.720',
|
||||
'mypy>=0.750',
|
||||
'docutils-stubs',
|
||||
],
|
||||
}
|
||||
@ -176,6 +176,10 @@ setup(
|
||||
description='Python documentation generator',
|
||||
long_description=long_desc,
|
||||
long_description_content_type='text/x-rst',
|
||||
project_urls={
|
||||
"Code": "https://github.com/sphinx-doc/sphinx",
|
||||
"Issue tracker": "https://github.com/sphinx-doc/sphinx/issues",
|
||||
},
|
||||
zip_safe=False,
|
||||
classifiers=[
|
||||
'Development Status :: 5 - Production/Stable',
|
||||
@ -216,6 +220,9 @@ setup(
|
||||
],
|
||||
platforms='any',
|
||||
packages=find_packages(exclude=['tests', 'utils']),
|
||||
package_data = {
|
||||
'sphinx': ['py.typed'],
|
||||
},
|
||||
include_package_data=True,
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
|
@ -32,8 +32,8 @@ if 'PYTHONWARNINGS' not in os.environ:
|
||||
warnings.filterwarnings('ignore', "'U' mode is deprecated",
|
||||
DeprecationWarning, module='docutils.io')
|
||||
|
||||
__version__ = '2.2.0+'
|
||||
__released__ = '2.2.0' # used when Sphinx builds its own docs
|
||||
__version__ = '2.3.0+'
|
||||
__released__ = '2.3.0' # used when Sphinx builds its own docs
|
||||
|
||||
#: Version info for better programmatic use.
|
||||
#:
|
||||
@ -43,7 +43,7 @@ __released__ = '2.2.0' # used when Sphinx builds its own docs
|
||||
#:
|
||||
#: .. versionadded:: 1.2
|
||||
#: Before version 1.2, check the string ``sphinx.__version__``.
|
||||
version_info = (2, 2, 0, 'beta', 0)
|
||||
version_info = (2, 3, 0, 'beta', 0)
|
||||
|
||||
package_dir = path.abspath(path.dirname(__file__))
|
||||
|
||||
|
@ -63,20 +63,38 @@ class toctree(nodes.General, nodes.Element, translatable):
|
||||
|
||||
def preserve_original_messages(self):
|
||||
# type: () -> None
|
||||
# toctree entries
|
||||
rawentries = self.setdefault('rawentries', [])
|
||||
for title, docname in self['entries']:
|
||||
if title:
|
||||
rawentries.append(title)
|
||||
|
||||
# :caption: option
|
||||
if self.get('caption'):
|
||||
self['rawcaption'] = self['caption']
|
||||
|
||||
def apply_translated_message(self, original_message, translated_message):
|
||||
# type: (str, str) -> None
|
||||
# toctree entries
|
||||
for i, (title, docname) in enumerate(self['entries']):
|
||||
if title == original_message:
|
||||
self['entries'][i] = (translated_message, docname)
|
||||
|
||||
# :caption: option
|
||||
if self.get('rawcaption') == original_message:
|
||||
self['caption'] = translated_message
|
||||
|
||||
def extract_original_messages(self):
|
||||
# type: () -> List[str]
|
||||
messages = [] # type: List[str]
|
||||
|
||||
# toctree entries
|
||||
messages.extend(self.get('rawentries', []))
|
||||
|
||||
# :caption: option
|
||||
if 'rawcaption' in self:
|
||||
return [self['rawcaption']]
|
||||
else:
|
||||
return []
|
||||
messages.append(self['rawcaption'])
|
||||
return messages
|
||||
|
||||
|
||||
# domain-specific object descriptions (class, function etc.)
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
import os
|
||||
import pickle
|
||||
import platform
|
||||
import sys
|
||||
import warnings
|
||||
from collections import deque
|
||||
@ -199,6 +200,12 @@ class Sphinx:
|
||||
# say hello to the world
|
||||
logger.info(bold(__('Running Sphinx v%s') % sphinx.__display_version__))
|
||||
|
||||
# notice for parallel build on macOS and py38+
|
||||
if sys.version_info > (3, 8) and platform.system() == 'Darwin' and parallel > 1:
|
||||
logger.info(bold(__("For security reason, parallel mode is disabled on macOS and "
|
||||
"python3.8 and above. For more details, please read "
|
||||
"https://github.com/sphinx-doc/sphinx/issues/6803")))
|
||||
|
||||
# status code for command-line application
|
||||
self.statuscode = 0
|
||||
|
||||
@ -1192,26 +1199,30 @@ class Sphinx:
|
||||
"""
|
||||
if typ == 'read':
|
||||
attrname = 'parallel_read_safe'
|
||||
message = __("the %s extension does not declare if it is safe "
|
||||
"for parallel reading, assuming it isn't - please "
|
||||
"ask the extension author to check and make it "
|
||||
"explicit")
|
||||
message_not_declared = __("the %s extension does not declare if it "
|
||||
"is safe for parallel reading, assuming "
|
||||
"it isn't - please ask the extension author "
|
||||
"to check and make it explicit")
|
||||
message_not_safe = __("the %s extension is not safe for parallel reading")
|
||||
elif typ == 'write':
|
||||
attrname = 'parallel_write_safe'
|
||||
message = __("the %s extension does not declare if it is safe "
|
||||
"for parallel writing, assuming it isn't - please "
|
||||
"ask the extension author to check and make it "
|
||||
"explicit")
|
||||
message_not_declared = __("the %s extension does not declare if it "
|
||||
"is safe for parallel writing, assuming "
|
||||
"it isn't - please ask the extension author "
|
||||
"to check and make it explicit")
|
||||
message_not_safe = __("the %s extension is not safe for parallel writing")
|
||||
else:
|
||||
raise ValueError('parallel type %s is not supported' % typ)
|
||||
|
||||
for ext in self.extensions.values():
|
||||
allowed = getattr(ext, attrname, None)
|
||||
if allowed is None:
|
||||
logger.warning(message, ext.name)
|
||||
logger.warning(message_not_declared, ext.name)
|
||||
logger.warning(__('doing serial %s'), typ)
|
||||
return False
|
||||
elif not allowed:
|
||||
logger.warning(message_not_safe, ext.name)
|
||||
logger.warning(__('doing serial %s'), typ)
|
||||
return False
|
||||
|
||||
return True
|
||||
|
@ -388,9 +388,11 @@ class Builder:
|
||||
# ... but not those that already were removed
|
||||
changed.update(self.env.glob_toctrees & self.env.found_docs)
|
||||
|
||||
if changed:
|
||||
reason = CONFIG_CHANGED_REASON.get(self.env.config_status, '')
|
||||
if updated: # explain the change iff build config status was not ok
|
||||
reason = (CONFIG_CHANGED_REASON.get(self.env.config_status, '') +
|
||||
(self.env.config_status_extra or ''))
|
||||
logger.info('[%s] ', reason, nonl=True)
|
||||
|
||||
logger.info(__('%s added, %s changed, %s removed'),
|
||||
len(added), len(changed), len(removed))
|
||||
|
||||
|
@ -272,7 +272,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
|
||||
if ':' in node_id:
|
||||
target['ids'][i] = self.fix_fragment('', node_id)
|
||||
|
||||
next_node = target.next_node(siblings=True) # type: Node
|
||||
next_node = target.next_node(ascend=True) # type: Node
|
||||
if isinstance(next_node, nodes.Element):
|
||||
for i, node_id in enumerate(next_node['ids']):
|
||||
if ':' in node_id:
|
||||
|
@ -9,7 +9,7 @@
|
||||
"""
|
||||
|
||||
from os import path
|
||||
from typing import Any, Dict, Set
|
||||
from typing import Any, Dict
|
||||
|
||||
from sphinx.application import Sphinx
|
||||
from sphinx.builders.html import StandaloneHTMLBuilder
|
||||
@ -45,10 +45,6 @@ class DirectoryHTMLBuilder(StandaloneHTMLBuilder):
|
||||
|
||||
return outfilename
|
||||
|
||||
def prepare_writing(self, docnames: Set[str]) -> None:
|
||||
super().prepare_writing(docnames)
|
||||
self.globalcontext['no_search_suffix'] = True
|
||||
|
||||
|
||||
# for compatibility
|
||||
deprecated_alias('sphinx.builders.html',
|
||||
|
@ -11,16 +11,16 @@
|
||||
from codecs import open
|
||||
from collections import defaultdict, OrderedDict
|
||||
from datetime import datetime, tzinfo, timedelta
|
||||
from io import StringIO
|
||||
from os import path, walk, getenv
|
||||
from time import time
|
||||
from typing import Any, Dict, Iterable, List, Set, Tuple, Union
|
||||
from typing import Any, Dict, Iterable, Generator, List, Set, Tuple, Union
|
||||
from uuid import uuid4
|
||||
|
||||
from docutils import nodes
|
||||
from docutils.nodes import Element
|
||||
|
||||
from sphinx import addnodes
|
||||
from sphinx import package_dir
|
||||
from sphinx.application import Sphinx
|
||||
from sphinx.builders import Builder
|
||||
from sphinx.domains.python import pairindextypes
|
||||
@ -30,8 +30,9 @@ from sphinx.util import split_index_msg, logging, status_iterator
|
||||
from sphinx.util.console import bold # type: ignore
|
||||
from sphinx.util.i18n import CatalogInfo, docname_to_domain
|
||||
from sphinx.util.nodes import extract_messages, traverse_translatable_index
|
||||
from sphinx.util.osutil import relpath, ensuredir, canon_path
|
||||
from sphinx.util.osutil import ensuredir, canon_path
|
||||
from sphinx.util.tags import Tags
|
||||
from sphinx.util.template import SphinxRenderer
|
||||
|
||||
if False:
|
||||
# For type annotation
|
||||
@ -58,7 +59,15 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
"""[1:]
|
||||
"""[1:] # RemovedInSphinx40Warning
|
||||
|
||||
|
||||
class Message:
|
||||
"""An entry of translatable message."""
|
||||
def __init__(self, text: str, locations: List[Tuple[str, int]], uuids: List[str]):
|
||||
self.text = text
|
||||
self.locations = locations
|
||||
self.uuids = uuids
|
||||
|
||||
|
||||
class Catalog:
|
||||
@ -80,6 +89,12 @@ class Catalog:
|
||||
self.metadata[msg] = []
|
||||
self.metadata[msg].append((origin.source, origin.line, origin.uid)) # type: ignore
|
||||
|
||||
def __iter__(self) -> Generator[Message, None, None]:
|
||||
for message in self.messages:
|
||||
positions = [(source, line) for source, line, uuid in self.metadata[message]]
|
||||
uuids = [uuid for source, line, uuid in self.metadata[message]]
|
||||
yield Message(message, positions, uuids)
|
||||
|
||||
|
||||
class MsgOrigin:
|
||||
"""
|
||||
@ -92,6 +107,22 @@ class MsgOrigin:
|
||||
self.uid = uuid4().hex
|
||||
|
||||
|
||||
class GettextRenderer(SphinxRenderer):
|
||||
def __init__(self, template_path: str = None) -> None:
|
||||
if template_path is None:
|
||||
template_path = path.join(package_dir, 'templates', 'gettext')
|
||||
super().__init__(template_path)
|
||||
|
||||
def escape(s: str) -> str:
|
||||
s = s.replace('\\', r'\\')
|
||||
s = s.replace('"', r'\"')
|
||||
return s.replace('\n', '\\n"\n"')
|
||||
|
||||
# use texescape as escape filter
|
||||
self.env.filters['e'] = escape
|
||||
self.env.filters['escape'] = escape
|
||||
|
||||
|
||||
class I18nTags(Tags):
|
||||
"""Dummy tags module for I18nBuilder.
|
||||
|
||||
@ -247,12 +278,13 @@ class MessageCatalogBuilder(I18nBuilder):
|
||||
|
||||
def finish(self) -> None:
|
||||
super().finish()
|
||||
data = {
|
||||
context = {
|
||||
'version': self.config.version,
|
||||
'copyright': self.config.copyright,
|
||||
'project': self.config.project,
|
||||
'ctime': datetime.fromtimestamp(
|
||||
timestamp, ltz).strftime('%Y-%m-%d %H:%M%z'),
|
||||
'ctime': datetime.fromtimestamp(timestamp, ltz).strftime('%Y-%m-%d %H:%M%z'),
|
||||
'display_location': self.config.gettext_location,
|
||||
'display_uuid': self.config.gettext_uuid,
|
||||
}
|
||||
for textdomain, catalog in status_iterator(self.catalogs.items(),
|
||||
__("writing message catalogs... "),
|
||||
@ -262,30 +294,10 @@ class MessageCatalogBuilder(I18nBuilder):
|
||||
# noop if config.gettext_compact is set
|
||||
ensuredir(path.join(self.outdir, path.dirname(textdomain)))
|
||||
|
||||
context['messages'] = list(catalog)
|
||||
content = GettextRenderer().render('message.pot_t', context)
|
||||
|
||||
pofn = path.join(self.outdir, textdomain + '.pot')
|
||||
output = StringIO()
|
||||
output.write(POHEADER % data)
|
||||
|
||||
for message in catalog.messages:
|
||||
positions = catalog.metadata[message]
|
||||
|
||||
if self.config.gettext_location:
|
||||
# generate "#: file1:line1\n#: file2:line2 ..."
|
||||
output.write("#: %s\n" % "\n#: ".join(
|
||||
"%s:%s" % (canon_path(relpath(source, self.outdir)), line)
|
||||
for source, line, _ in positions))
|
||||
if self.config.gettext_uuid:
|
||||
# generate "# uuid1\n# uuid2\n ..."
|
||||
output.write("# %s\n" % "\n# ".join(uid for _, _, uid in positions))
|
||||
|
||||
# message contains *one* line of text ready for translation
|
||||
message = message.replace('\\', r'\\'). \
|
||||
replace('"', r'\"'). \
|
||||
replace('\n', '\\n"\n"')
|
||||
output.write('msgid "%s"\nmsgstr ""\n\n' % message)
|
||||
|
||||
content = output.getvalue()
|
||||
|
||||
if should_write(pofn, content):
|
||||
with open(pofn, 'w', encoding='utf-8') as pofile:
|
||||
pofile.write(content)
|
||||
|
@ -90,7 +90,7 @@ class Stylesheet(str):
|
||||
attributes = None # type: Dict[str, str]
|
||||
filename = None # type: str
|
||||
|
||||
def __new__(cls, filename: str, *args: str, **attributes: str) -> None:
|
||||
def __new__(cls, filename: str, *args: str, **attributes: str) -> "Stylesheet":
|
||||
self = str.__new__(cls, filename) # type: ignore
|
||||
self.filename = filename
|
||||
self.attributes = attributes
|
||||
@ -142,7 +142,7 @@ class JavaScript(str):
|
||||
attributes = None # type: Dict[str, str]
|
||||
filename = None # type: str
|
||||
|
||||
def __new__(cls, filename: str, **attributes: str) -> None:
|
||||
def __new__(cls, filename: str, **attributes: str) -> "JavaScript":
|
||||
self = str.__new__(cls, filename) # type: ignore
|
||||
self.filename = filename
|
||||
self.attributes = attributes
|
||||
@ -1162,7 +1162,8 @@ def validate_html_extra_path(app: Sphinx, config: Config) -> None:
|
||||
if not path.exists(extra_path):
|
||||
logger.warning(__('html_extra_path entry %r does not exist'), entry)
|
||||
config.html_extra_path.remove(entry)
|
||||
elif path.commonpath([app.outdir, extra_path]) == app.outdir:
|
||||
elif (path.splitdrive(app.outdir)[0] == path.splitdrive(extra_path)[0] and
|
||||
path.commonpath([app.outdir, extra_path]) == app.outdir):
|
||||
logger.warning(__('html_extra_path entry %r is placed inside outdir'), entry)
|
||||
config.html_extra_path.remove(entry)
|
||||
|
||||
@ -1174,7 +1175,8 @@ def validate_html_static_path(app: Sphinx, config: Config) -> None:
|
||||
if not path.exists(static_path):
|
||||
logger.warning(__('html_static_path entry %r does not exist'), entry)
|
||||
config.html_static_path.remove(entry)
|
||||
elif path.commonpath([app.outdir, static_path]) == app.outdir:
|
||||
elif (path.splitdrive(app.outdir)[0] == path.splitdrive(static_path)[0] and
|
||||
path.commonpath([app.outdir, static_path]) == app.outdir):
|
||||
logger.warning(__('html_static_path entry %r is placed inside outdir'), entry)
|
||||
config.html_static_path.remove(entry)
|
||||
|
||||
|
@ -234,14 +234,13 @@ class LaTeXBuilder(Builder):
|
||||
destination = SphinxFileOutput(destination_path=path.join(self.outdir, targetname),
|
||||
encoding='utf-8', overwrite_if_changed=True)
|
||||
with progress_message(__("processing %s") % targetname):
|
||||
toctrees = self.env.get_doctree(docname).traverse(addnodes.toctree)
|
||||
if toctrees:
|
||||
if toctrees[0].get('maxdepth') > 0:
|
||||
tocdepth = toctrees[0].get('maxdepth')
|
||||
else:
|
||||
tocdepth = None
|
||||
doctree = self.env.get_doctree(docname)
|
||||
toctree = next(iter(doctree.traverse(addnodes.toctree)), None)
|
||||
if toctree and toctree.get('maxdepth') > 0:
|
||||
tocdepth = toctree.get('maxdepth')
|
||||
else:
|
||||
tocdepth = None
|
||||
|
||||
doctree = self.assemble_doctree(
|
||||
docname, toctree_only,
|
||||
appendices=((docclass != 'howto') and self.config.latex_appendices or []))
|
||||
@ -418,6 +417,8 @@ def default_latex_engine(config: Config) -> str:
|
||||
return 'platex'
|
||||
elif (config.language or '').startswith('zh'):
|
||||
return 'xelatex'
|
||||
elif config.language == 'el':
|
||||
return 'xelatex'
|
||||
else:
|
||||
return 'pdflatex'
|
||||
|
||||
@ -425,8 +426,12 @@ def default_latex_engine(config: Config) -> str:
|
||||
def default_latex_docclass(config: Config) -> Dict[str, str]:
|
||||
""" Better default latex_docclass settings for specific languages. """
|
||||
if config.language == 'ja':
|
||||
return {'manual': 'jsbook',
|
||||
'howto': 'jreport'}
|
||||
if config.latex_engine == 'uplatex':
|
||||
return {'manual': 'ujbook',
|
||||
'howto': 'ujreport'}
|
||||
else:
|
||||
return {'manual': 'jsbook',
|
||||
'howto': 'jreport'}
|
||||
else:
|
||||
return {}
|
||||
|
||||
@ -438,10 +443,12 @@ def default_latex_use_xindy(config: Config) -> bool:
|
||||
|
||||
def default_latex_documents(config: Config) -> List[Tuple[str, str, str, str, str]]:
|
||||
""" Better default latex_documents settings. """
|
||||
project = texescape.escape(config.project, config.latex_engine)
|
||||
author = texescape.escape(config.author, config.latex_engine)
|
||||
return [(config.master_doc,
|
||||
make_filename_from_project(config.project) + '.tex',
|
||||
texescape.escape_abbr(texescape.escape(config.project)),
|
||||
texescape.escape_abbr(texescape.escape(config.author)),
|
||||
texescape.escape_abbr(project),
|
||||
texescape.escape_abbr(author),
|
||||
'manual')]
|
||||
|
||||
|
||||
@ -452,7 +459,7 @@ def setup(app: Sphinx) -> Dict[str, Any]:
|
||||
app.connect('config-inited', validate_config_values)
|
||||
|
||||
app.add_config_value('latex_engine', default_latex_engine, None,
|
||||
ENUM('pdflatex', 'xelatex', 'lualatex', 'platex'))
|
||||
ENUM('pdflatex', 'xelatex', 'lualatex', 'platex', 'uplatex'))
|
||||
app.add_config_value('latex_documents', default_latex_documents, None)
|
||||
app.add_config_value('latex_logo', None, None, [str])
|
||||
app.add_config_value('latex_appendices', [], None)
|
||||
|
@ -59,6 +59,9 @@ def check_anchor(response: requests.requests.Response, anchor: str) -> bool:
|
||||
# Read file in chunks. If we find a matching anchor, we break
|
||||
# the loop early in hopes not to have to download the whole thing.
|
||||
for chunk in response.iter_content(chunk_size=4096, decode_unicode=True):
|
||||
if isinstance(chunk, bytes): # requests failed to decode
|
||||
chunk = chunk.decode() # manually try to decode it
|
||||
|
||||
parser.feed(chunk)
|
||||
if parser.found:
|
||||
break
|
||||
@ -78,6 +81,8 @@ class CheckExternalLinksBuilder(Builder):
|
||||
self.to_ignore = [re.compile(x) for x in self.app.config.linkcheck_ignore]
|
||||
self.anchors_ignore = [re.compile(x)
|
||||
for x in self.app.config.linkcheck_anchors_ignore]
|
||||
self.auth = [(re.compile(pattern), auth_info) for pattern, auth_info
|
||||
in self.app.config.linkcheck_auth]
|
||||
self.good = set() # type: Set[str]
|
||||
self.broken = {} # type: Dict[str, str]
|
||||
self.redirected = {} # type: Dict[str, Tuple[str, int]]
|
||||
@ -101,7 +106,6 @@ class CheckExternalLinksBuilder(Builder):
|
||||
'allow_redirects': True,
|
||||
'headers': {
|
||||
'Accept': 'text/html,application/xhtml+xml;q=0.9,*/*;q=0.8',
|
||||
'User-Agent': requests.useragent_header[0][1],
|
||||
},
|
||||
}
|
||||
if self.app.config.linkcheck_timeout:
|
||||
@ -125,11 +129,18 @@ class CheckExternalLinksBuilder(Builder):
|
||||
except UnicodeError:
|
||||
req_url = encode_uri(req_url)
|
||||
|
||||
# Get auth info, if any
|
||||
for pattern, auth_info in self.auth:
|
||||
if pattern.match(uri):
|
||||
break
|
||||
else:
|
||||
auth_info = None
|
||||
|
||||
try:
|
||||
if anchor and self.app.config.linkcheck_anchors:
|
||||
# Read the whole document and see if #anchor exists
|
||||
response = requests.get(req_url, stream=True, config=self.app.config,
|
||||
**kwargs)
|
||||
auth=auth_info, **kwargs)
|
||||
found = check_anchor(response, unquote(anchor))
|
||||
|
||||
if not found:
|
||||
@ -138,13 +149,14 @@ class CheckExternalLinksBuilder(Builder):
|
||||
try:
|
||||
# try a HEAD request first, which should be easier on
|
||||
# the server and the network
|
||||
response = requests.head(req_url, config=self.app.config, **kwargs)
|
||||
response = requests.head(req_url, config=self.app.config,
|
||||
auth=auth_info, **kwargs)
|
||||
response.raise_for_status()
|
||||
except HTTPError:
|
||||
# retry with GET request if that fails, some servers
|
||||
# don't like HEAD requests.
|
||||
response = requests.get(req_url, stream=True, config=self.app.config,
|
||||
**kwargs)
|
||||
auth=auth_info, **kwargs)
|
||||
response.raise_for_status()
|
||||
except HTTPError as err:
|
||||
if err.response.status_code == 401:
|
||||
@ -237,13 +249,16 @@ class CheckExternalLinksBuilder(Builder):
|
||||
else:
|
||||
logger.info(red('broken ') + uri + red(' - ' + info))
|
||||
elif status == 'redirected':
|
||||
text, color = {
|
||||
301: ('permanently', darkred),
|
||||
302: ('with Found', purple),
|
||||
303: ('with See Other', purple),
|
||||
307: ('temporarily', turquoise),
|
||||
0: ('with unknown code', purple),
|
||||
}[code]
|
||||
try:
|
||||
text, color = {
|
||||
301: ('permanently', darkred),
|
||||
302: ('with Found', purple),
|
||||
303: ('with See Other', purple),
|
||||
307: ('temporarily', turquoise),
|
||||
308: ('permanently', darkred),
|
||||
}[code]
|
||||
except KeyError:
|
||||
text, color = ('with unknown code', purple)
|
||||
self.write_entry('redirected ' + text, docname, lineno,
|
||||
uri + ' to ' + info)
|
||||
logger.info(color('redirect ') + uri + color(' - ' + text + ' to ' + info))
|
||||
@ -300,6 +315,7 @@ def setup(app: Sphinx) -> Dict[str, Any]:
|
||||
app.add_builder(CheckExternalLinksBuilder)
|
||||
|
||||
app.add_config_value('linkcheck_ignore', [], None)
|
||||
app.add_config_value('linkcheck_auth', [], None)
|
||||
app.add_config_value('linkcheck_retries', 1, None)
|
||||
app.add_config_value('linkcheck_timeout', None, None, [int])
|
||||
app.add_config_value('linkcheck_workers', 5, None)
|
||||
|
@ -88,7 +88,7 @@ class Make:
|
||||
nocolor()
|
||||
|
||||
print(bold("Sphinx v%s" % sphinx.__display_version__))
|
||||
print("Please use `make %s' where %s is one of" % ((blue('target'),) * 2)) # type: ignore # NOQA
|
||||
print("Please use `make %s' where %s is one of" % ((blue('target'),) * 2))
|
||||
for osname, bname, description in BUILDERS:
|
||||
if not osname or os.name == osname:
|
||||
print(' %s %s' % (blue(bname.ljust(10)), description))
|
||||
|
@ -148,6 +148,7 @@ class Config:
|
||||
'math_numfig': (True, 'env', []),
|
||||
'tls_verify': (True, 'env', []),
|
||||
'tls_cacerts': (None, 'env', []),
|
||||
'user_agent': (None, 'env', [str]),
|
||||
'smartquotes': (True, 'env', []),
|
||||
'smartquotes_action': ('qDe', 'env', []),
|
||||
'smartquotes_excludes': ({'languages': ['ja'],
|
||||
@ -176,16 +177,16 @@ class Config:
|
||||
else:
|
||||
config, overrides = args[:2]
|
||||
|
||||
self.overrides = overrides
|
||||
self.overrides = dict(overrides)
|
||||
self.values = Config.config_values.copy()
|
||||
self._raw_config = config
|
||||
self.setup = config.get('setup', None) # type: Callable
|
||||
|
||||
if 'extensions' in overrides:
|
||||
if isinstance(overrides['extensions'], str):
|
||||
config['extensions'] = overrides.pop('extensions').split(',')
|
||||
if 'extensions' in self.overrides:
|
||||
if isinstance(self.overrides['extensions'], str):
|
||||
config['extensions'] = self.overrides.pop('extensions').split(',')
|
||||
else:
|
||||
config['extensions'] = overrides.pop('extensions')
|
||||
config['extensions'] = self.overrides.pop('extensions')
|
||||
self.extensions = config.get('extensions', []) # type: List[str]
|
||||
|
||||
@classmethod
|
||||
|
@ -31,10 +31,7 @@ RemovedInNextVersionWarning = RemovedInSphinx30Warning
|
||||
|
||||
def deprecated_alias(modname, objects, warning):
|
||||
# type: (str, Dict, Type[Warning]) -> None
|
||||
module = sys.modules.get(modname)
|
||||
if module is None:
|
||||
module = import_module(modname)
|
||||
|
||||
module = import_module(modname)
|
||||
sys.modules[modname] = _ModuleWrapper(module, modname, objects, warning) # type: ignore
|
||||
|
||||
|
||||
|
@ -348,7 +348,7 @@ class LiteralIncludeReader:
|
||||
return lines[:lineno + 1]
|
||||
else:
|
||||
if lineno == 0:
|
||||
return []
|
||||
pass # end-before ignores first line
|
||||
else:
|
||||
return lines[:lineno]
|
||||
if inclusive is True:
|
||||
|
@ -32,7 +32,8 @@ from sphinx.util.nodes import make_refnode
|
||||
|
||||
if False:
|
||||
# For type annotation
|
||||
from typing import Any, Callable, Dict, Iterator, List, Match, Pattern, Tuple, Union # NOQA
|
||||
from docutils.nodes import TextElement
|
||||
from typing import Any, Callable, Dict, Iterator, List, Match, Pattern, Tuple, Type, Union # NOQA
|
||||
from sphinx.application import Sphinx # NOQA
|
||||
from sphinx.builders import Builder # NOQA
|
||||
from sphinx.config import Config # NOQA
|
||||
@ -3191,6 +3192,52 @@ class ASTDeclaratorNameParamQual(ASTBase):
|
||||
self.paramQual.describe_signature(signode, mode, env, symbol)
|
||||
|
||||
|
||||
class ASTDeclaratorNameBitField(ASTBase):
|
||||
def __init__(self, declId, size):
|
||||
self.declId = declId
|
||||
self.size = size
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
# type: () -> ASTNestedName
|
||||
return self.declId
|
||||
|
||||
def get_param_id(self, version): # only the parameters (if any)
|
||||
# type: (int) -> str
|
||||
return ''
|
||||
|
||||
def get_ptr_suffix_id(self, version): # only the array specifiers
|
||||
# type: (int) -> str
|
||||
return ''
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
def require_space_after_declSpecs(self):
|
||||
# type: () -> bool
|
||||
return self.declId is not None
|
||||
|
||||
def is_function_type(self):
|
||||
# type: () -> bool
|
||||
return False
|
||||
|
||||
def _stringify(self, transform):
|
||||
# type: (Callable[[Any], str]) -> str
|
||||
res = []
|
||||
if self.declId:
|
||||
res.append(transform(self.declId))
|
||||
res.append(" : ")
|
||||
res.append(transform(self.size))
|
||||
return ''.join(res)
|
||||
|
||||
def describe_signature(self, signode, mode, env, symbol):
|
||||
# type: (addnodes.desc_signature, str, BuildEnvironment, Symbol) -> None
|
||||
_verify_description_mode(mode)
|
||||
if self.declId:
|
||||
self.declId.describe_signature(signode, mode, env, symbol)
|
||||
signode.append(nodes.Text(' : ', ' : '))
|
||||
self.size.describe_signature(signode, mode, env, symbol)
|
||||
|
||||
|
||||
class ASTParenExprList(ASTBase):
|
||||
def __init__(self, exprs):
|
||||
# type: (List[Any]) -> None
|
||||
@ -5716,8 +5763,12 @@ class DefinitionParser:
|
||||
trailing = None
|
||||
return ASTDeclSpecs(outer, leftSpecs, rightSpecs, trailing)
|
||||
|
||||
def _parse_declarator_name_param_qual(self, named, paramMode, typed):
|
||||
# type: (Union[bool, str], str, bool) -> ASTDeclaratorNameParamQual
|
||||
def _parse_declarator_name_suffix(self,
|
||||
named, # type: Union[bool, str]
|
||||
paramMode, # type: str
|
||||
typed # type: bool
|
||||
):
|
||||
# type: (...) -> Union[ASTDeclaratorNameParamQual, ASTDeclaratorNameBitField]
|
||||
# now we should parse the name, and then suffixes
|
||||
if named == 'maybe':
|
||||
pos = self.pos
|
||||
@ -5760,6 +5811,13 @@ class DefinitionParser:
|
||||
else:
|
||||
break
|
||||
paramQual = self._parse_parameters_and_qualifiers(paramMode)
|
||||
if paramQual is None and len(arrayOps) == 0:
|
||||
# perhaps a bit-field
|
||||
if named and paramMode == 'type' and typed:
|
||||
self.skip_ws()
|
||||
if self.skip_string(':'):
|
||||
size = self._parse_constant_expression(inTemplate=False)
|
||||
return ASTDeclaratorNameBitField(declId=declId, size=size)
|
||||
return ASTDeclaratorNameParamQual(declId=declId, arrayOps=arrayOps,
|
||||
paramQual=paramQual)
|
||||
|
||||
@ -5842,8 +5900,8 @@ class DefinitionParser:
|
||||
pos = self.pos
|
||||
try:
|
||||
# assume this is params and quals
|
||||
res = self._parse_declarator_name_param_qual(named, paramMode,
|
||||
typed)
|
||||
res = self._parse_declarator_name_suffix(named, paramMode,
|
||||
typed)
|
||||
return res
|
||||
except DefinitionError as exParamQual:
|
||||
prevErrors.append((exParamQual, "If declId, parameters, and qualifiers"))
|
||||
@ -5868,7 +5926,7 @@ class DefinitionParser:
|
||||
raise self._make_multi_error(prevErrors, header)
|
||||
pos = self.pos
|
||||
try:
|
||||
return self._parse_declarator_name_param_qual(named, paramMode, typed)
|
||||
return self._parse_declarator_name_suffix(named, paramMode, typed)
|
||||
except DefinitionError as e:
|
||||
self.pos = pos
|
||||
prevErrors.append((e, "If declarator-id"))
|
||||
@ -6980,7 +7038,7 @@ class CPPExprRole:
|
||||
if asCode:
|
||||
# render the expression as inline code
|
||||
self.class_type = 'cpp-expr'
|
||||
self.node_type = nodes.literal
|
||||
self.node_type = nodes.literal # type: Type[TextElement]
|
||||
else:
|
||||
# render the expression as inline text
|
||||
self.class_type = 'cpp-texpr'
|
||||
|
@ -612,15 +612,13 @@ class StandardDomain(Domain):
|
||||
sectname = self.get_numfig_title(node)
|
||||
if not sectname:
|
||||
continue
|
||||
elif node.traverse(addnodes.toctree):
|
||||
n = node.traverse(addnodes.toctree)[0]
|
||||
if n.get('caption'):
|
||||
sectname = n['caption']
|
||||
else:
|
||||
continue
|
||||
else:
|
||||
# anonymous-only labels
|
||||
continue
|
||||
toctree = next(iter(node.traverse(addnodes.toctree)), None)
|
||||
if toctree and toctree.get('caption'):
|
||||
sectname = toctree.get('caption')
|
||||
else:
|
||||
# anonymous-only labels
|
||||
continue
|
||||
self.labels[name] = docname, labelid, sectname
|
||||
|
||||
def add_object(self, objtype: str, name: str, docname: str, labelid: str) -> None:
|
||||
|
@ -95,14 +95,15 @@ class BuildEnvironment:
|
||||
# --------- ENVIRONMENT INITIALIZATION -------------------------------------
|
||||
|
||||
def __init__(self, app: "Sphinx" = None):
|
||||
self.app = None # type: Sphinx
|
||||
self.doctreedir = None # type: str
|
||||
self.srcdir = None # type: str
|
||||
self.config = None # type: Config
|
||||
self.config_status = None # type: int
|
||||
self.events = None # type: EventManager
|
||||
self.project = None # type: Project
|
||||
self.version = None # type: Dict[str, str]
|
||||
self.app = None # type: Sphinx
|
||||
self.doctreedir = None # type: str
|
||||
self.srcdir = None # type: str
|
||||
self.config = None # type: Config
|
||||
self.config_status = None # type: int
|
||||
self.config_status_extra = None # type: str
|
||||
self.events = None # type: EventManager
|
||||
self.project = None # type: Project
|
||||
self.version = None # type: Dict[str, str]
|
||||
|
||||
# the method of doctree versioning; see set_versioning_method
|
||||
self.versioning_condition = None # type: Union[bool, Callable]
|
||||
@ -232,16 +233,25 @@ class BuildEnvironment:
|
||||
def _update_config(self, config: Config) -> None:
|
||||
"""Update configurations by new one."""
|
||||
self.config_status = CONFIG_OK
|
||||
self.config_status_extra = ''
|
||||
if self.config is None:
|
||||
self.config_status = CONFIG_NEW
|
||||
elif self.config.extensions != config.extensions:
|
||||
self.config_status = CONFIG_EXTENSIONS_CHANGED
|
||||
extensions = sorted(
|
||||
set(self.config.extensions) ^ set(config.extensions))
|
||||
if len(extensions) == 1:
|
||||
extension = extensions[0]
|
||||
else:
|
||||
extension = '%d' % (len(extensions),)
|
||||
self.config_status_extra = ' (%r)' % (extension,)
|
||||
else:
|
||||
# check if a config value was changed that affects how
|
||||
# doctrees are read
|
||||
for item in config.filter('env'):
|
||||
if self.config[item.name] != item.value:
|
||||
self.config_status = CONFIG_CHANGED
|
||||
self.config_status_extra = ' (%r)' % (item.name,)
|
||||
break
|
||||
|
||||
self.config = config
|
||||
|
@ -21,6 +21,7 @@ import os
|
||||
import sys
|
||||
import warnings
|
||||
from fnmatch import fnmatch
|
||||
from importlib.machinery import EXTENSION_SUFFIXES
|
||||
from os import path
|
||||
from typing import Any, List, Tuple
|
||||
|
||||
@ -45,7 +46,7 @@ else:
|
||||
]
|
||||
|
||||
INITPY = '__init__.py'
|
||||
PY_SUFFIXES = {'.py', '.pyx'}
|
||||
PY_SUFFIXES = ('.py', '.pyx') + tuple(EXTENSION_SUFFIXES)
|
||||
|
||||
template_dir = path.join(package_dir, 'templates', 'apidoc')
|
||||
|
||||
@ -232,7 +233,7 @@ def recurse_tree(rootpath: str, excludes: List[str], opts: Any,
|
||||
for root, subs, files in os.walk(rootpath, followlinks=followlinks):
|
||||
# document only Python module files (that aren't excluded)
|
||||
py_files = sorted(f for f in files
|
||||
if path.splitext(f)[1] in PY_SUFFIXES and
|
||||
if f.endswith(PY_SUFFIXES) and
|
||||
not is_excluded(path.join(root, f), excludes))
|
||||
is_pkg = INITPY in py_files
|
||||
is_namespace = INITPY not in py_files and implicit_namespaces
|
||||
@ -270,7 +271,7 @@ def recurse_tree(rootpath: str, excludes: List[str], opts: Any,
|
||||
assert root == rootpath and root_package is None
|
||||
for py_file in py_files:
|
||||
if not is_skipped_module(path.join(rootpath, py_file), opts, excludes):
|
||||
module = path.splitext(py_file)[0]
|
||||
module = py_file.split('.')[0]
|
||||
create_module_file(root_package, module, opts, user_template_dir)
|
||||
toplevels.append(module)
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
:license: BSD, see LICENSE for details.
|
||||
"""
|
||||
|
||||
import sys
|
||||
import importlib
|
||||
import traceback
|
||||
import warnings
|
||||
from collections import namedtuple
|
||||
@ -23,14 +23,13 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
def import_module(modname: str, warningiserror: bool = False) -> Any:
|
||||
"""
|
||||
Call __import__(modname), convert exceptions to ImportError
|
||||
Call importlib.import_module(modname), convert exceptions to ImportError
|
||||
"""
|
||||
try:
|
||||
with warnings.catch_warnings():
|
||||
warnings.filterwarnings("ignore", category=ImportWarning)
|
||||
with logging.skip_warningiserror(not warningiserror):
|
||||
__import__(modname)
|
||||
return sys.modules[modname]
|
||||
return importlib.import_module(modname)
|
||||
except BaseException as exc:
|
||||
# Importing modules may cause any side effects, including
|
||||
# SystemExit, so we need to catch all errors.
|
||||
|
@ -60,7 +60,7 @@ class _MockObject:
|
||||
return _make_subclass(key, self.__display_name__, self.__class__)()
|
||||
|
||||
def __call__(self, *args, **kw) -> Any:
|
||||
if args and type(args[0]) in [FunctionType, MethodType]:
|
||||
if args and type(args[0]) in [type, FunctionType, MethodType]:
|
||||
# Appears to be a decorator, pass through unchanged
|
||||
return args[0]
|
||||
return self
|
||||
|
@ -138,9 +138,20 @@ def generate_autosummary_content(name: str, obj: Any, parent: Any,
|
||||
if not template.exists(template_name):
|
||||
template_name = 'autosummary/base.rst'
|
||||
|
||||
def skip_member(obj: Any, name: str, objtype: str) -> bool:
|
||||
try:
|
||||
return app.emit_firstresult('autodoc-skip-member', objtype, name,
|
||||
obj, False, {})
|
||||
except Exception as exc:
|
||||
logger.warning(__('autosummary: failed to determine %r to be documented.'
|
||||
'the following exception was raised:\n%s'),
|
||||
name, exc, type='autosummary')
|
||||
return False
|
||||
|
||||
def get_members(obj: Any, types: Set[str], include_public: List[str] = [],
|
||||
imported: bool = True) -> Tuple[List[str], List[str]]:
|
||||
items = [] # type: List[str]
|
||||
public = [] # type: List[str]
|
||||
for name in dir(obj):
|
||||
try:
|
||||
value = safe_getattr(obj, name)
|
||||
@ -148,11 +159,20 @@ def generate_autosummary_content(name: str, obj: Any, parent: Any,
|
||||
continue
|
||||
documenter = get_documenter(app, value, obj)
|
||||
if documenter.objtype in types:
|
||||
# skip imported members if expected
|
||||
if imported or getattr(value, '__module__', None) == obj.__name__:
|
||||
# skip imported members if expected
|
||||
items.append(name)
|
||||
public = [x for x in items
|
||||
if x in include_public or not x.startswith('_')]
|
||||
skipped = skip_member(value, name, documenter.objtype)
|
||||
if skipped is True:
|
||||
pass
|
||||
elif skipped is False:
|
||||
# show the member forcedly
|
||||
items.append(name)
|
||||
public.append(name)
|
||||
else:
|
||||
items.append(name)
|
||||
if name in include_public or not name.startswith('_'):
|
||||
# considers member as public
|
||||
public.append(name)
|
||||
return public, items
|
||||
|
||||
ns = {} # type: Dict[str, Any]
|
||||
|
@ -13,6 +13,7 @@ import glob
|
||||
import inspect
|
||||
import pickle
|
||||
import re
|
||||
from importlib import import_module
|
||||
from os import path
|
||||
from typing import Any, Dict, IO, List, Pattern, Set, Tuple
|
||||
|
||||
@ -144,7 +145,7 @@ class CoverageBuilder(Builder):
|
||||
continue
|
||||
|
||||
try:
|
||||
mod = __import__(mod_name, fromlist=['foo'])
|
||||
mod = import_module(mod_name)
|
||||
except ImportError as err:
|
||||
logger.warning(__('module %s could not be imported: %s'), mod_name, err)
|
||||
self.py_undoc[mod_name] = {'error': err}
|
||||
|
@ -286,7 +286,7 @@ class DocTestBuilder(Builder):
|
||||
# for doctest examples but unusable for multi-statement code such
|
||||
# as setup code -- to be able to use doctest error reporting with
|
||||
# that code nevertheless, we monkey-patch the "compile" it uses.
|
||||
doctest.compile = self.compile
|
||||
doctest.compile = self.compile # type: ignore
|
||||
|
||||
sys.path[0:0] = self.config.doctest_path
|
||||
|
||||
@ -507,7 +507,7 @@ Doctest summary
|
||||
if len(code) == 1:
|
||||
# ordinary doctests (code/output interleaved)
|
||||
try:
|
||||
test = parser.get_doctest(code[0].code, {}, group.name, # type: ignore
|
||||
test = parser.get_doctest(code[0].code, {}, group.name,
|
||||
code[0].filename, code[0].lineno)
|
||||
except Exception:
|
||||
logger.warning(__('ignoring invalid doctest code: %r'), code[0].code,
|
||||
|
@ -87,14 +87,38 @@ DOC_BODY_PREVIEW = r'''
|
||||
'''
|
||||
|
||||
depth_re = re.compile(br'\[\d+ depth=(-?\d+)\]')
|
||||
depthsvg_re = re.compile(br'.*, depth=(.*)pt')
|
||||
depthsvgcomment_re = re.compile(r'<!-- DEPTH=(-?\d+) -->')
|
||||
|
||||
|
||||
def generate_latex_macro(math: str, config: Config, confdir: str = '') -> str:
|
||||
def read_svg_depth(filename: str) -> int:
|
||||
"""Read the depth from comment at last line of SVG file
|
||||
"""
|
||||
with open(filename, 'r') as f:
|
||||
for line in f:
|
||||
pass
|
||||
# Only last line is checked
|
||||
matched = depthsvgcomment_re.match(line)
|
||||
if matched:
|
||||
return int(matched.group(1))
|
||||
return None
|
||||
|
||||
|
||||
def write_svg_depth(filename: str, depth: int) -> None:
|
||||
"""Write the depth to SVG file as a comment at end of file
|
||||
"""
|
||||
with open(filename, 'a') as f:
|
||||
f.write('\n<!-- DEPTH=%s -->' % depth)
|
||||
|
||||
|
||||
def generate_latex_macro(image_format: str,
|
||||
math: str, config: Config, confdir: str = '') -> str:
|
||||
"""Generate LaTeX macro."""
|
||||
variables = {
|
||||
'fontsize': config.imgmath_font_size,
|
||||
'baselineskip': int(round(config.imgmath_font_size * 1.2)),
|
||||
'preamble': config.imgmath_latex_preamble,
|
||||
'tightpage': '' if image_format == 'png' else ',tightpage',
|
||||
'math': math
|
||||
}
|
||||
|
||||
@ -201,8 +225,18 @@ def convert_dvi_to_svg(dvipath: str, builder: Builder) -> Tuple[str, int]:
|
||||
command.extend(builder.config.imgmath_dvisvgm_args)
|
||||
command.append(dvipath)
|
||||
|
||||
convert_dvi_to_image(command, name)
|
||||
return filename, None
|
||||
stdout, stderr = convert_dvi_to_image(command, name)
|
||||
|
||||
depth = None
|
||||
if builder.config.imgmath_use_preview:
|
||||
for line in stderr.splitlines(): # not stdout !
|
||||
matched = depthsvg_re.match(line)
|
||||
if matched:
|
||||
depth = round(float(matched.group(1)) * 100 / 72.27) # assume 100ppi
|
||||
write_svg_depth(filename, depth)
|
||||
break
|
||||
|
||||
return filename, depth
|
||||
|
||||
|
||||
def render_math(self: HTMLTranslator, math: str) -> Tuple[str, int]:
|
||||
@ -223,13 +257,19 @@ def render_math(self: HTMLTranslator, math: str) -> Tuple[str, int]:
|
||||
if image_format not in SUPPORT_FORMAT:
|
||||
raise MathExtError('imgmath_image_format must be either "png" or "svg"')
|
||||
|
||||
latex = generate_latex_macro(math, self.builder.config, self.builder.confdir)
|
||||
latex = generate_latex_macro(image_format,
|
||||
math,
|
||||
self.builder.config,
|
||||
self.builder.confdir)
|
||||
|
||||
filename = "%s.%s" % (sha1(latex.encode()).hexdigest(), image_format)
|
||||
relfn = posixpath.join(self.builder.imgpath, 'math', filename)
|
||||
outfn = path.join(self.builder.outdir, self.builder.imagedir, 'math', filename)
|
||||
if path.isfile(outfn):
|
||||
depth = read_png_depth(outfn)
|
||||
if image_format == 'png':
|
||||
depth = read_png_depth(outfn)
|
||||
elif image_format == 'svg':
|
||||
depth = read_svg_depth(outfn)
|
||||
return relfn, depth
|
||||
|
||||
# if latex or dvipng (dvisvgm) has failed once, don't bother to try again
|
||||
|
@ -38,8 +38,8 @@ r"""
|
||||
import builtins
|
||||
import inspect
|
||||
import re
|
||||
import sys
|
||||
from hashlib import md5
|
||||
from importlib import import_module
|
||||
from typing import Any, Dict, Iterable, List, Tuple
|
||||
from typing import cast
|
||||
|
||||
@ -74,8 +74,10 @@ def try_import(objname: str) -> Any:
|
||||
Returns imported object or module. If failed, returns None value.
|
||||
"""
|
||||
try:
|
||||
__import__(objname)
|
||||
return sys.modules.get(objname)
|
||||
return import_module(objname)
|
||||
except TypeError:
|
||||
# Relative import
|
||||
return None
|
||||
except ImportError:
|
||||
matched = module_sig_re.match(objname)
|
||||
|
||||
@ -87,8 +89,8 @@ def try_import(objname: str) -> Any:
|
||||
if modname is None:
|
||||
return None
|
||||
try:
|
||||
__import__(modname)
|
||||
return getattr(sys.modules.get(modname), attrname, None)
|
||||
module = import_module(modname)
|
||||
return getattr(module, attrname, None)
|
||||
except ImportError:
|
||||
return None
|
||||
|
||||
@ -366,7 +368,7 @@ class InheritanceDiagram(SphinxDirective):
|
||||
# removed from the doctree after we're done with them.
|
||||
for name in graph.get_all_class_names():
|
||||
refnodes, x = class_role( # type: ignore
|
||||
'class', ':class:`%s`' % name, name, 0, self.state)
|
||||
'class', ':class:`%s`' % name, name, 0, self.state) # type: ignore
|
||||
node.extend(refnodes)
|
||||
# Store the graph object so we can use it to generate the
|
||||
# dot file later
|
||||
|
@ -23,6 +23,7 @@
|
||||
:license: BSD, see LICENSE for details.
|
||||
"""
|
||||
|
||||
import concurrent.futures
|
||||
import functools
|
||||
import posixpath
|
||||
import sys
|
||||
@ -187,21 +188,18 @@ def fetch_inventory(app: Sphinx, uri: str, inv: Any) -> Any:
|
||||
return invdata
|
||||
|
||||
|
||||
def load_mappings(app: Sphinx) -> None:
|
||||
"""Load all intersphinx mappings into the environment."""
|
||||
now = int(time.time())
|
||||
def fetch_inventory_group(
|
||||
name: str, uri: str, invs: Any, cache: Any, app: Any, now: float
|
||||
) -> bool:
|
||||
cache_time = now - app.config.intersphinx_cache_limit * 86400
|
||||
inventories = InventoryAdapter(app.builder.env)
|
||||
update = False
|
||||
for key, (name, (uri, invs)) in app.config.intersphinx_mapping.items():
|
||||
failures = []
|
||||
failures = []
|
||||
try:
|
||||
for inv in invs:
|
||||
if not inv:
|
||||
inv = posixpath.join(uri, INVENTORY_FILENAME)
|
||||
# decide whether the inventory must be read: always read local
|
||||
# files; remote ones only if the cache time is expired
|
||||
if '://' not in inv or uri not in inventories.cache \
|
||||
or inventories.cache[uri][1] < cache_time:
|
||||
if '://' not in inv or uri not in cache or cache[uri][1] < cache_time:
|
||||
safe_inv_url = _get_safe_url(inv)
|
||||
logger.info(__('loading intersphinx inventory from %s...'), safe_inv_url)
|
||||
try:
|
||||
@ -209,12 +207,11 @@ def load_mappings(app: Sphinx) -> None:
|
||||
except Exception as err:
|
||||
failures.append(err.args)
|
||||
continue
|
||||
|
||||
if invdata:
|
||||
inventories.cache[uri] = (name, now, invdata)
|
||||
update = True
|
||||
break
|
||||
|
||||
cache[uri] = (name, now, invdata)
|
||||
return True
|
||||
return False
|
||||
finally:
|
||||
if failures == []:
|
||||
pass
|
||||
elif len(failures) < len(invs):
|
||||
@ -227,7 +224,21 @@ def load_mappings(app: Sphinx) -> None:
|
||||
logger.warning(__("failed to reach any of the inventories "
|
||||
"with the following issues:") + "\n" + issues)
|
||||
|
||||
if update:
|
||||
|
||||
def load_mappings(app: Sphinx) -> None:
|
||||
"""Load all intersphinx mappings into the environment."""
|
||||
now = int(time.time())
|
||||
inventories = InventoryAdapter(app.builder.env)
|
||||
|
||||
with concurrent.futures.ThreadPoolExecutor() as pool:
|
||||
futures = []
|
||||
for name, (uri, invs) in app.config.intersphinx_mapping.values():
|
||||
futures.append(pool.submit(
|
||||
fetch_inventory_group, name, uri, invs, inventories.cache, app, now
|
||||
))
|
||||
updated = [f.result() for f in concurrent.futures.as_completed(futures)]
|
||||
|
||||
if any(updated):
|
||||
inventories.clear()
|
||||
|
||||
# Duplicate values in different inventories will shadow each
|
||||
@ -374,6 +385,7 @@ def inspect_main(argv: List[str]) -> None:
|
||||
class MockConfig:
|
||||
intersphinx_timeout = None # type: int
|
||||
tls_verify = False
|
||||
user_agent = None
|
||||
|
||||
class MockApp:
|
||||
srcdir = ''
|
||||
@ -398,7 +410,7 @@ def inspect_main(argv: List[str]) -> None:
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import logging # type: ignore
|
||||
logging.basicConfig()
|
||||
import logging as _logging
|
||||
_logging.basicConfig()
|
||||
|
||||
inspect_main(argv=sys.argv[1:])
|
||||
|
@ -23,6 +23,10 @@ from sphinx.directives.patches import MathDirective as MathDirectiveBase
|
||||
from sphinx.domains.math import MathDomain # NOQA # to keep compatibility
|
||||
from sphinx.domains.math import MathReferenceRole as EqXRefRole # NOQA # to keep compatibility
|
||||
from sphinx.writers.html import HTMLTranslator
|
||||
from sphinx.writers.latex import LaTeXTranslator
|
||||
from sphinx.writers.manpage import ManualPageTranslator
|
||||
from sphinx.writers.texinfo import TexinfoTranslator
|
||||
from sphinx.writers.text import TextTranslator
|
||||
|
||||
|
||||
class MathDirective(MathDirectiveBase):
|
||||
@ -70,6 +74,75 @@ def is_in_section_title(node: Element) -> bool:
|
||||
return False
|
||||
|
||||
|
||||
def latex_visit_math(self: LaTeXTranslator, node: Element) -> None:
|
||||
warnings.warn('latex_visit_math() is deprecated. '
|
||||
'Please use LaTeXTranslator.visit_math() instead.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
self.visit_math(node)
|
||||
|
||||
|
||||
def latex_visit_displaymath(self: LaTeXTranslator, node: Element) -> None:
|
||||
warnings.warn('latex_visit_displaymath() is deprecated. '
|
||||
'Please use LaTeXTranslator.visit_math_block() instead.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
self.visit_math_block(node)
|
||||
|
||||
|
||||
def man_visit_math(self: ManualPageTranslator, node: Element) -> None:
|
||||
warnings.warn('man_visit_math() is deprecated. '
|
||||
'Please use ManualPageTranslator.visit_math() instead.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
self.visit_math(node)
|
||||
|
||||
|
||||
def man_visit_displaymath(self: ManualPageTranslator, node: Element) -> None:
|
||||
warnings.warn('man_visit_displaymath() is deprecated. '
|
||||
'Please use ManualPageTranslator.visit_math_block() instead.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
self.visit_math_block(node)
|
||||
|
||||
|
||||
def man_depart_displaymath(self: ManualPageTranslator, node: Element) -> None:
|
||||
warnings.warn('man_depart_displaymath() is deprecated. '
|
||||
'Please use ManualPageTranslator.depart_math_block() instead.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
self.depart_math_block(node)
|
||||
|
||||
|
||||
def texinfo_visit_math(self: TexinfoTranslator, node: Element) -> None:
|
||||
warnings.warn('texinfo_visit_math() is deprecated. '
|
||||
'Please use TexinfoTranslator.visit_math() instead.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
self.visit_math(node)
|
||||
|
||||
|
||||
def texinfo_visit_displaymath(self: TexinfoTranslator, node: Element) -> None:
|
||||
warnings.warn('texinfo_visit_displaymath() is deprecated. '
|
||||
'Please use TexinfoTranslator.visit_math_block() instead.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
self.visit_math_block(node)
|
||||
|
||||
|
||||
def texinfo_depart_displaymath(self: TexinfoTranslator, node: Element) -> None:
|
||||
warnings.warn('texinfo_depart_displaymath() is deprecated. '
|
||||
'Please use TexinfoTranslator.depart_math_block() instead.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
|
||||
|
||||
def text_visit_math(self: TextTranslator, node: Element) -> None:
|
||||
warnings.warn('text_visit_math() is deprecated. '
|
||||
'Please use TextTranslator.visit_math() instead.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
self.visit_math(node)
|
||||
|
||||
|
||||
def text_visit_displaymath(self: TextTranslator, node: Element) -> None:
|
||||
warnings.warn('text_visit_displaymath() is deprecated. '
|
||||
'Please use TextTranslator.visit_math_block() instead.',
|
||||
RemovedInSphinx30Warning, stacklevel=2)
|
||||
self.visit_math_block(node)
|
||||
|
||||
|
||||
def setup_math(app: Sphinx,
|
||||
htmlinlinevisitors: Tuple[Callable, Callable],
|
||||
htmldisplayvisitors: Tuple[Callable, Callable]) -> None:
|
||||
|
@ -27,10 +27,9 @@ from sphinx.domains import Domain
|
||||
from sphinx.environment import BuildEnvironment
|
||||
from sphinx.errors import NoUri
|
||||
from sphinx.locale import _, __
|
||||
from sphinx.util import logging
|
||||
from sphinx.util import logging, texescape
|
||||
from sphinx.util.docutils import SphinxDirective
|
||||
from sphinx.util.nodes import make_refnode
|
||||
from sphinx.util.texescape import tex_escape_map
|
||||
from sphinx.writers.html import HTMLTranslator
|
||||
from sphinx.writers.latex import LaTeXTranslator
|
||||
|
||||
@ -301,8 +300,10 @@ def latex_visit_todo_node(self: LaTeXTranslator, node: todo_node) -> None:
|
||||
if self.config.todo_include_todos:
|
||||
self.body.append('\n\\begin{sphinxadmonition}{note}{')
|
||||
self.body.append(self.hypertarget_to(node))
|
||||
|
||||
title_node = cast(nodes.title, node[0])
|
||||
self.body.append('%s:}' % title_node.astext().translate(tex_escape_map))
|
||||
title = texescape.escape(title_node.astext(), self.config.latex_engine)
|
||||
self.body.append('%s:}' % title)
|
||||
node.pop(0)
|
||||
else:
|
||||
raise nodes.SkipNode
|
||||
|
@ -11,6 +11,7 @@
|
||||
import html
|
||||
import warnings
|
||||
from functools import partial
|
||||
from importlib import import_module
|
||||
|
||||
from pygments import highlight
|
||||
from pygments.filters import ErrorToken
|
||||
@ -26,8 +27,7 @@ from sphinx.deprecation import RemovedInSphinx30Warning
|
||||
from sphinx.ext import doctest
|
||||
from sphinx.locale import __
|
||||
from sphinx.pygments_styles import SphinxStyle, NoneStyle
|
||||
from sphinx.util import logging
|
||||
from sphinx.util.texescape import tex_hl_escape_map_new
|
||||
from sphinx.util import logging, texescape
|
||||
|
||||
if False:
|
||||
# For type annotation
|
||||
@ -67,9 +67,11 @@ class PygmentsBridge:
|
||||
html_formatter = HtmlFormatter
|
||||
latex_formatter = LatexFormatter
|
||||
|
||||
def __init__(self, dest='html', stylename='sphinx', trim_doctest_flags=None):
|
||||
# type: (str, str, bool) -> None
|
||||
def __init__(self, dest='html', stylename='sphinx', trim_doctest_flags=None,
|
||||
latex_engine=None):
|
||||
# type: (str, str, bool, str) -> None
|
||||
self.dest = dest
|
||||
self.latex_engine = latex_engine
|
||||
|
||||
style = self.get_style(stylename)
|
||||
self.formatter_args = {'style': style} # type: Dict[str, Any]
|
||||
@ -92,7 +94,7 @@ class PygmentsBridge:
|
||||
return NoneStyle
|
||||
elif '.' in stylename:
|
||||
module, stylename = stylename.rsplit('.', 1)
|
||||
return getattr(__import__(module, None, None, ['__name__']), stylename)
|
||||
return getattr(import_module(module), stylename)
|
||||
else:
|
||||
return get_style_by_name(stylename)
|
||||
|
||||
@ -111,7 +113,7 @@ class PygmentsBridge:
|
||||
# first, escape highlighting characters like Pygments does
|
||||
source = source.translate(escape_hl_chars)
|
||||
# then, escape all characters nonrepresentable in LaTeX
|
||||
source = source.translate(tex_hl_escape_map_new)
|
||||
source = texescape.escape(source, self.latex_engine)
|
||||
return '\\begin{Verbatim}[commandchars=\\\\\\{\\}]\n' + \
|
||||
source + '\\end{Verbatim}\n'
|
||||
|
||||
@ -191,7 +193,7 @@ class PygmentsBridge:
|
||||
if self.dest == 'html':
|
||||
return hlsource
|
||||
else:
|
||||
return hlsource.translate(tex_hl_escape_map_new)
|
||||
return texescape.hlescape(hlsource, self.latex_engine)
|
||||
|
||||
def get_stylesheet(self):
|
||||
# type: () -> str
|
||||
|
64
sphinx/io.py
64
sphinx/io.py
@ -19,7 +19,7 @@ from docutils.statemachine import StringList, string2lines
|
||||
from docutils.transforms.references import DanglingReferences
|
||||
from docutils.writers import UnfilteredWriter
|
||||
|
||||
from sphinx.deprecation import RemovedInSphinx30Warning
|
||||
from sphinx.deprecation import RemovedInSphinx30Warning, RemovedInSphinx40Warning
|
||||
from sphinx.transforms import (
|
||||
AutoIndexUpgrader, DoctreeReadEvent, FigureAligner, SphinxTransformer
|
||||
)
|
||||
@ -58,12 +58,35 @@ class SphinxBaseReader(standalone.Reader):
|
||||
|
||||
transforms = [] # type: List[Type[Transform]]
|
||||
|
||||
def __init__(self, app, *args, **kwargs):
|
||||
# type: (Sphinx, Any, Any) -> None
|
||||
self.app = app
|
||||
self.env = app.env
|
||||
def __init__(self, *args, **kwargs):
|
||||
# type: (Any, Any) -> None
|
||||
from sphinx.application import Sphinx
|
||||
if len(args) > 0 and isinstance(args[0], Sphinx):
|
||||
self._app = args[0]
|
||||
self._env = self._app.env
|
||||
args = args[1:]
|
||||
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
@property
|
||||
def app(self):
|
||||
# type: () -> Sphinx
|
||||
warnings.warn('SphinxBaseReader.app is deprecated.',
|
||||
RemovedInSphinx40Warning, stacklevel=2)
|
||||
return self._app
|
||||
|
||||
@property
|
||||
def env(self):
|
||||
# type: () -> BuildEnvironment
|
||||
warnings.warn('SphinxBaseReader.env is deprecated.',
|
||||
RemovedInSphinx40Warning, stacklevel=2)
|
||||
return self._env
|
||||
|
||||
def setup(self, app):
|
||||
# type: (Sphinx) -> None
|
||||
self._app = app # hold application object only for compatibility
|
||||
self._env = app.env
|
||||
|
||||
def get_transforms(self):
|
||||
# type: () -> List[Type[Transform]]
|
||||
transforms = super().get_transforms() + self.transforms
|
||||
@ -85,7 +108,7 @@ class SphinxBaseReader(standalone.Reader):
|
||||
|
||||
# substitute transformer
|
||||
document.transformer = SphinxTransformer(document)
|
||||
document.transformer.set_environment(self.env)
|
||||
document.transformer.set_environment(self.settings.env)
|
||||
|
||||
# substitute reporter
|
||||
reporter = document.reporter
|
||||
@ -99,10 +122,10 @@ class SphinxStandaloneReader(SphinxBaseReader):
|
||||
A basic document reader for Sphinx.
|
||||
"""
|
||||
|
||||
def __init__(self, app, *args, **kwargs):
|
||||
# type: (Sphinx, Any, Any) -> None
|
||||
def setup(self, app):
|
||||
# type: (Sphinx) -> None
|
||||
self.transforms = self.transforms + app.registry.get_transforms()
|
||||
super().__init__(app, *args, **kwargs)
|
||||
super().setup(app)
|
||||
|
||||
def read(self, source, parser, settings):
|
||||
# type: (Input, Parser, Values) -> nodes.document
|
||||
@ -110,18 +133,18 @@ class SphinxStandaloneReader(SphinxBaseReader):
|
||||
if not self.parser:
|
||||
self.parser = parser
|
||||
self.settings = settings
|
||||
self.input = self.read_source()
|
||||
self.input = self.read_source(settings.env)
|
||||
self.parse()
|
||||
return self.document
|
||||
|
||||
def read_source(self):
|
||||
# type: () -> str
|
||||
def read_source(self, env):
|
||||
# type: (BuildEnvironment) -> str
|
||||
"""Read content from source and do post-process."""
|
||||
content = self.source.read()
|
||||
|
||||
# emit "source-read" event
|
||||
arg = [content]
|
||||
self.app.emit('source-read', self.env.docname, arg)
|
||||
env.events.emit('source-read', env.docname, arg)
|
||||
return arg[0]
|
||||
|
||||
|
||||
@ -134,8 +157,10 @@ class SphinxI18nReader(SphinxBaseReader):
|
||||
Because the translated texts are partial and they don't have correct line numbers.
|
||||
"""
|
||||
|
||||
def __init__(self, app, *args, **kwargs):
|
||||
# type: (Sphinx, Any, Any) -> None
|
||||
def setup(self, app):
|
||||
# type: (Sphinx) -> None
|
||||
super().setup(app)
|
||||
|
||||
self.transforms = self.transforms + app.registry.get_transforms()
|
||||
unused = [PreserveTranslatableMessages, Locale, RemoveTranslatableInline,
|
||||
AutoIndexUpgrader, FigureAligner, SphinxDomains, DoctreeReadEvent,
|
||||
@ -144,8 +169,6 @@ class SphinxI18nReader(SphinxBaseReader):
|
||||
if transform in self.transforms:
|
||||
self.transforms.remove(transform)
|
||||
|
||||
super().__init__(app, *args, **kwargs)
|
||||
|
||||
def set_lineno_for_reporter(self, lineno):
|
||||
# type: (int) -> None
|
||||
"""Stores the source line number of original text."""
|
||||
@ -290,7 +313,8 @@ def read_doc(app, env, filename):
|
||||
error_handler = UnicodeDecodeErrorHandler(env.docname)
|
||||
codecs.register_error('sphinx', error_handler) # type: ignore
|
||||
|
||||
reader = SphinxStandaloneReader(app)
|
||||
reader = SphinxStandaloneReader()
|
||||
reader.setup(app)
|
||||
filetype = get_filetype(app.config.source_suffix, filename)
|
||||
parser = app.registry.create_source_parser(app, filetype)
|
||||
if parser.__class__.__name__ == 'CommonMarkParser' and parser.settings_spec == ():
|
||||
@ -306,10 +330,10 @@ def read_doc(app, env, filename):
|
||||
# Sphinx-1.8 style
|
||||
source = input_class(app, env, source=None, source_path=filename, # type: ignore
|
||||
encoding=env.config.source_encoding)
|
||||
pub = Publisher(reader=reader, # type: ignore
|
||||
pub = Publisher(reader=reader,
|
||||
parser=parser,
|
||||
writer=SphinxDummyWriter(),
|
||||
source_class=SphinxDummySourceClass,
|
||||
source_class=SphinxDummySourceClass, # type: ignore
|
||||
destination=NullOutput())
|
||||
pub.process_programmatic_settings(None, env.settings, None)
|
||||
pub.set_source(source, filename)
|
||||
|
@ -35,7 +35,7 @@ class _TranslationProxy(UserString):
|
||||
"""
|
||||
__slots__ = ('_func', '_args')
|
||||
|
||||
def __new__(cls, func, *args):
|
||||
def __new__(cls, func, *args): # type: ignore
|
||||
# type: (Callable, str) -> object
|
||||
if not args:
|
||||
# not called with "function" and "arguments", but a plain string
|
||||
|
Binary file not shown.
@ -9,8 +9,8 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:09+0000\n"
|
||||
"Last-Translator: Mohammed Shannaq <sam@ms.per.jo>\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Arabic (http://www.transifex.com/sphinx-doc/sphinx-1/language/ar/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
Binary file not shown.
@ -9,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:08+0000\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Bengali (http://www.transifex.com/sphinx-doc/sphinx-1/language/bn/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
Binary file not shown.
@ -9,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:08+0000\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Catalan (http://www.transifex.com/sphinx-doc/sphinx-1/language/ca/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
Binary file not shown.
@ -9,8 +9,8 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:09+0000\n"
|
||||
"Last-Translator: Julien Malard <julien.malard@mail.mcgill.ca>\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Kaqchikel (http://www.transifex.com/sphinx-doc/sphinx-1/language/cak/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -1449,7 +1449,7 @@ msgid ""
|
||||
"\n"
|
||||
"For a list of supported codes, see\n"
|
||||
"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language."
|
||||
msgstr "\nWe xetz'ib'an ri wuj pa jun ch'abäl man Q'anch' ta,\nyatikïr nacha' jun chïk runuk'unem ch'ab'äl wawe' chi Sphinx tiq'ax\nruch'abäl ri wuj xtik'iyij pa ri ch'ab'äl re.\n\nChi natz'u rucholajem runuk'unem ch'ab'äl k'o chïk pa Sphinx, tab'e pa\nhttps://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language."
|
||||
msgstr ""
|
||||
|
||||
#: sphinx/cmd/quickstart.py:314
|
||||
msgid "Project language"
|
||||
|
Binary file not shown.
@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:08+0000\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Czech (http://www.transifex.com/sphinx-doc/sphinx-1/language/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
Binary file not shown.
@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:08+0000\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Welsh (http://www.transifex.com/sphinx-doc/sphinx-1/language/cy/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
@ -1 +1 @@
|
||||
Documentation.addTranslations({"locale": "da", "messages": {"%(filename)s — %(docstitle)s": "", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "© Copyright %(copyright)s.": "", ", in ": ", i", "About these documents": "Om disse dokumenter", "Automatically generated list of changes in version %(version)s": "Automatisk oprettet liste af \u00e6ndringer i version %(version)s", "C API changes": "\u00c6ndringer i C-API", "Changes in Version %(version)s — %(docstitle)s": "", "Collapse sidebar": "Sammenfold sidebj\u00e6lke", "Complete Table of Contents": "Fuldst\u00e6ndig indholdsfortegnelse", "Contents": "Indhold", "Copyright": "Ophavsret", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Bygget med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Udfold sidebj\u00e6lke", "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.": "Her fra kan du s\u00f8ge i disse dokumenter. Indtast dine s\u00f8geord\n i boksen nedenfor og klik p\u00e5 \"s\u00f8g\". Bem\u00e6rk at s\u00f8gefunktionen\n automatisk vil s\u00f8ge p\u00e5 alle ordene. Sider, der indeholder\n f\u00e6rre ord, vil ikke indg\u00e5 i resultaterne.", "Full index on one page": "Fuldt indeks p\u00e5 \u00e9n side", "General Index": "Generelt indeks", "Global Module Index": "Globalt modulindeks", "Go": "S\u00f8g", "Hide Search Matches": "Skjul s\u00f8geresultater", "Index": "Indeks", "Index – %(key)s": "Indeks – %(key)s", "Index pages by letter": "Indeks\u00e9r sider efter bogstav", "Indices and tables:": "Indeks og tabeller:", "Last updated on %(last_updated)s.": "Sidst opdateret %(last_updated)s.", "Library changes": "Biblioteks\u00e6ndringer", "Navigation": "Navigation", "Next topic": "N\u00e6ste emne", "Other changes": "Andre \u00e6ndringer", "Overview": "Oversigt", "Permalink to this definition": "Permalink til denne definition", "Permalink to this headline": "Permalink til denne overskrift", "Please activate JavaScript to enable the search\n functionality.": "Aktiv\u00e9r venligst JavaScript for at aktivere\n s\u00f8gefunktionalitet.", "Preparing search...": "Forbereder s\u00f8gning...", "Previous topic": "Forrige emne", "Quick search": "Hurtig s\u00f8gning", "Search": "S\u00f8g", "Search Page": "S\u00f8geside", "Search Results": "S\u00f8geresultater", "Search finished, found %s page(s) matching the search query.": "S\u00f8gning f\u00e6rdig, fandt %s sider der matcher s\u00f8geforesp\u00f8rgslen.", "Search within %(docstitle)s": "S\u00f8g i %(docstitle)s", "Searching": "S\u00f8ger", "Show Source": "Vis kilde", "Table of Contents": "", "This Page": "Denne side", "Welcome! This is": "Velkommen! Dette er", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Din s\u00f8gning matchede ikke nogen dokumenter. Sikr dig at alle ord er stavet korrekt og at du har valgt nok kategorier.", "all functions, classes, terms": "alle funktioner, klasser, begreber", "can be huge": "kan v\u00e6re enormt", "last updated": "sidst opdateret", "lists all sections and subsections": "viser alle afsnit og underafsnit", "next chapter": "n\u00e6ste kapitel", "previous chapter": "forrige kapitel", "quick access to all modules": "hurtig adgang til alle moduler", "search": "s\u00f8g", "search this documentation": "s\u00f8g i denne dokumentation", "the documentation for": "dokumentationen for"}, "plural_expr": "(n != 1)"});
|
||||
Documentation.addTranslations({"locale": "da", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Ophavsret</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Ophavsret %(copyright)s.", ", in ": ", i", "About these documents": "Om disse dokumenter", "Automatically generated list of changes in version %(version)s": "Automatisk oprettet liste af \u00e6ndringer i version %(version)s", "C API changes": "\u00c6ndringer i C-API", "Changes in Version %(version)s — %(docstitle)s": "\u00c6ndringer i version %(version)s — %(docstitle)s", "Collapse sidebar": "Sammenfold sidebj\u00e6lke", "Complete Table of Contents": "Fuldst\u00e6ndig indholdsfortegnelse", "Contents": "Indhold", "Copyright": "Ophavsret", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Bygget med <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Udfold sidebj\u00e6lke", "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.": "Her fra kan du s\u00f8ge i disse dokumenter. Indtast dine s\u00f8geord\n i boksen nedenfor og klik p\u00e5 \"s\u00f8g\". Bem\u00e6rk at s\u00f8gefunktionen\n automatisk vil s\u00f8ge p\u00e5 alle ordene. Sider, der indeholder\n f\u00e6rre ord, vil ikke indg\u00e5 i resultaterne.", "Full index on one page": "Fuldt indeks p\u00e5 \u00e9n side", "General Index": "Generelt indeks", "Global Module Index": "Globalt modulindeks", "Go": "S\u00f8g", "Hide Search Matches": "Skjul s\u00f8geresultater", "Index": "Indeks", "Index – %(key)s": "Indeks – %(key)s", "Index pages by letter": "Indeks\u00e9r sider efter bogstav", "Indices and tables:": "Indeks og tabeller:", "Last updated on %(last_updated)s.": "Sidst opdateret %(last_updated)s.", "Library changes": "Biblioteks\u00e6ndringer", "Navigation": "Navigation", "Next topic": "N\u00e6ste emne", "Other changes": "Andre \u00e6ndringer", "Overview": "Oversigt", "Permalink to this definition": "Permalink til denne definition", "Permalink to this headline": "Permalink til denne overskrift", "Please activate JavaScript to enable the search\n functionality.": "Aktiv\u00e9r venligst JavaScript for at aktivere\n s\u00f8gefunktionalitet.", "Preparing search...": "Forbereder s\u00f8gning...", "Previous topic": "Forrige emne", "Quick search": "Hurtig s\u00f8gning", "Search": "S\u00f8g", "Search Page": "S\u00f8geside", "Search Results": "S\u00f8geresultater", "Search finished, found %s page(s) matching the search query.": "S\u00f8gning f\u00e6rdig, fandt %s sider der matcher s\u00f8geforesp\u00f8rgslen.", "Search within %(docstitle)s": "S\u00f8g i %(docstitle)s", "Searching": "S\u00f8ger", "Show Source": "Vis kilde", "Table of Contents": "", "This Page": "Denne side", "Welcome! This is": "Velkommen! Dette er", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Din s\u00f8gning matchede ikke nogen dokumenter. Sikr dig at alle ord er stavet korrekt og at du har valgt nok kategorier.", "all functions, classes, terms": "alle funktioner, klasser, begreber", "can be huge": "kan v\u00e6re enormt", "last updated": "sidst opdateret", "lists all sections and subsections": "viser alle afsnit og underafsnit", "next chapter": "n\u00e6ste kapitel", "previous chapter": "forrige kapitel", "quick access to all modules": "hurtig adgang til alle moduler", "search": "s\u00f8g", "search this documentation": "s\u00f8g i denne dokumentation", "the documentation for": "dokumentationen for"}, "plural_expr": "(n != 1)"});
|
Binary file not shown.
@ -11,8 +11,8 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:09+0000\n"
|
||||
"Last-Translator: Jakob Lykke Andersen <jakob@caput.dk>\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Danish (http://www.transifex.com/sphinx-doc/sphinx-1/language/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -220,7 +220,7 @@ msgstr "tabel %s"
|
||||
#: sphinx/config.py:408
|
||||
#, python-format
|
||||
msgid "Listing %s"
|
||||
msgstr "Viser %s"
|
||||
msgstr "Kildekode %s"
|
||||
|
||||
#: sphinx/config.py:447
|
||||
msgid ""
|
||||
@ -266,7 +266,7 @@ msgstr ""
|
||||
#: sphinx/events.py:60
|
||||
#, python-format
|
||||
msgid "Unknown event name: %s"
|
||||
msgstr ""
|
||||
msgstr "Ukendt hændelsesnavn: %s"
|
||||
|
||||
#: sphinx/extension.py:52
|
||||
#, python-format
|
||||
@ -319,7 +319,7 @@ msgstr ""
|
||||
#: sphinx/registry.py:163
|
||||
#, python-format
|
||||
msgid "domain %s already registered"
|
||||
msgstr ""
|
||||
msgstr "domænet %s er allerede registreret"
|
||||
|
||||
#: sphinx/registry.py:197 sphinx/registry.py:212 sphinx/registry.py:223
|
||||
#, python-format
|
||||
@ -334,7 +334,7 @@ msgstr ""
|
||||
#: sphinx/registry.py:215
|
||||
#, python-format
|
||||
msgid "The %r role is already registered to domain %s"
|
||||
msgstr ""
|
||||
msgstr "Rollen %r er allerede registreret til domæne %s"
|
||||
|
||||
#: sphinx/registry.py:226
|
||||
#, python-format
|
||||
@ -359,7 +359,7 @@ msgstr ""
|
||||
#: sphinx/registry.py:308
|
||||
#, python-format
|
||||
msgid "source_parser for %r is already registered"
|
||||
msgstr ""
|
||||
msgstr "source_parser for %r er allerede registreret"
|
||||
|
||||
#: sphinx/registry.py:324
|
||||
#, python-format
|
||||
@ -405,7 +405,7 @@ msgstr ""
|
||||
#: sphinx/registry.py:476
|
||||
#, python-format
|
||||
msgid "Could not import extension %s"
|
||||
msgstr ""
|
||||
msgstr "Kunne ikke importere udvidelse %s"
|
||||
|
||||
#: sphinx/registry.py:479
|
||||
#, python-format
|
||||
@ -419,7 +419,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The %s extension used by this project needs at least Sphinx v%s; it "
|
||||
"therefore cannot be built with this version."
|
||||
msgstr ""
|
||||
msgstr "Udvidelsen %s brugt af dette projekt kræver mindst Sphinx v%s; den kan derfor ikke bygges med denne version."
|
||||
|
||||
#: sphinx/registry.py:496
|
||||
#, python-format
|
||||
@ -574,7 +574,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/builders/__init__.py:462 sphinx/builders/__init__.py:492
|
||||
msgid "reading sources... "
|
||||
msgstr ""
|
||||
msgstr "læser kilder ..."
|
||||
|
||||
#: sphinx/builders/__init__.py:497 sphinx/builders/__init__.py:612
|
||||
msgid "waiting for workers..."
|
||||
@ -587,7 +587,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/builders/__init__.py:560 sphinx/builders/singlehtml.py:166
|
||||
msgid "preparing documents"
|
||||
msgstr ""
|
||||
msgstr "forbereder dokumenter"
|
||||
|
||||
#: sphinx/builders/_epub_base.py:218
|
||||
#, python-format
|
||||
@ -689,7 +689,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/builders/epub3.py:225
|
||||
msgid "conf value \"epub_contributor\" should not be empty for EPUB3"
|
||||
msgstr ""
|
||||
msgstr "konfigurationsværdien »epub_contributor« bør ikke være tom for EPUB3"
|
||||
|
||||
#: sphinx/builders/epub3.py:228
|
||||
msgid "conf value \"epub_description\" should not be empty for EPUB3"
|
||||
@ -815,7 +815,7 @@ msgstr ""
|
||||
#: sphinx/builders/html.py:847
|
||||
#, python-format
|
||||
msgid "favicon file %r does not exist"
|
||||
msgstr ""
|
||||
msgstr "favicon-filen %r findes ikke"
|
||||
|
||||
#: sphinx/builders/html.py:854
|
||||
#, python-format
|
||||
@ -1078,7 +1078,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/cmd/build.py:56
|
||||
msgid "Encoding error:"
|
||||
msgstr ""
|
||||
msgstr "Kodningsfejl:"
|
||||
|
||||
#: sphinx/cmd/build.py:59 sphinx/cmd/build.py:74
|
||||
#, python-format
|
||||
@ -1259,7 +1259,7 @@ msgstr ""
|
||||
#: sphinx/cmd/build.py:227
|
||||
#, python-format
|
||||
msgid "cannot find files %r"
|
||||
msgstr ""
|
||||
msgstr "kan ikke finde filer %r"
|
||||
|
||||
#: sphinx/cmd/build.py:230
|
||||
msgid "cannot combine -a option and filenames"
|
||||
@ -1324,7 +1324,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/cmd/quickstart.py:119
|
||||
msgid "Please enter some text."
|
||||
msgstr ""
|
||||
msgstr "Indtast venligst noget tekst."
|
||||
|
||||
#: sphinx/cmd/quickstart.py:128
|
||||
#, python-format
|
||||
@ -1333,11 +1333,11 @@ msgstr ""
|
||||
|
||||
#: sphinx/cmd/quickstart.py:136
|
||||
msgid "Please enter either 'y' or 'n'."
|
||||
msgstr ""
|
||||
msgstr "Indtast venligst enten »y« eller »n«."
|
||||
|
||||
#: sphinx/cmd/quickstart.py:143
|
||||
msgid "Please enter a file suffix, e.g. '.rst' or '.txt'."
|
||||
msgstr ""
|
||||
msgstr "Indtast venligt et filsuffiks, f.eks. ».rst« eller ».txt«"
|
||||
|
||||
#: sphinx/cmd/quickstart.py:169
|
||||
msgid ""
|
||||
@ -1530,7 +1530,7 @@ msgstr ""
|
||||
#: sphinx/cmd/quickstart.py:413 sphinx/ext/apidoc.py:72
|
||||
#, python-format
|
||||
msgid "File %s already exists, skipping."
|
||||
msgstr ""
|
||||
msgstr "Filen %s findes allerede, udelader."
|
||||
|
||||
#: sphinx/cmd/quickstart.py:449
|
||||
msgid "Finished: An initial directory structure has been created."
|
||||
@ -1652,7 +1652,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/cmd/quickstart.py:551
|
||||
msgid "do not create makefile"
|
||||
msgstr ""
|
||||
msgstr "opret ikke makefile"
|
||||
|
||||
#: sphinx/cmd/quickstart.py:553
|
||||
msgid "create batchfile"
|
||||
@ -1676,7 +1676,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/cmd/quickstart.py:567
|
||||
msgid "template directory for template files"
|
||||
msgstr ""
|
||||
msgstr "skabelonmappe for skabelonfiler"
|
||||
|
||||
#: sphinx/cmd/quickstart.py:570
|
||||
msgid "define a template variable"
|
||||
@ -1876,7 +1876,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/domains/cpp.py:7032
|
||||
msgid "concept"
|
||||
msgstr ""
|
||||
msgstr "koncept"
|
||||
|
||||
#: sphinx/domains/cpp.py:7033
|
||||
msgid "enum"
|
||||
@ -2128,7 +2128,7 @@ msgstr "programtilvalg"
|
||||
|
||||
#: sphinx/domains/std.py:464
|
||||
msgid "document"
|
||||
msgstr ""
|
||||
msgstr "dokument"
|
||||
|
||||
#: sphinx/domains/std.py:502
|
||||
msgid "Module Index"
|
||||
@ -2179,7 +2179,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/environment/__init__.py:69
|
||||
msgid "new config"
|
||||
msgstr ""
|
||||
msgstr "ny konfiguration"
|
||||
|
||||
#: sphinx/environment/__init__.py:70
|
||||
msgid "config changed"
|
||||
@ -2187,7 +2187,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/environment/__init__.py:71
|
||||
msgid "extensions changed"
|
||||
msgstr ""
|
||||
msgstr "udvidelser ændret"
|
||||
|
||||
#: sphinx/environment/__init__.py:210
|
||||
msgid "build environment version not current"
|
||||
@ -2195,7 +2195,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/environment/__init__.py:212
|
||||
msgid "source directory has changed"
|
||||
msgstr ""
|
||||
msgstr "kildemappe er ændret"
|
||||
|
||||
#: sphinx/environment/__init__.py:283
|
||||
msgid ""
|
||||
@ -2319,7 +2319,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/ext/apidoc.py:325
|
||||
msgid "overwrite existing files"
|
||||
msgstr ""
|
||||
msgstr "overskriv eksisterende filer"
|
||||
|
||||
#: sphinx/ext/apidoc.py:328
|
||||
msgid ""
|
||||
@ -2398,7 +2398,7 @@ msgstr ""
|
||||
#: sphinx/ext/apidoc.py:402
|
||||
#, python-format
|
||||
msgid "%s is not a directory."
|
||||
msgstr ""
|
||||
msgstr "%s er ikke en mappe"
|
||||
|
||||
#: sphinx/ext/coverage.py:46
|
||||
#, python-format
|
||||
@ -2800,7 +2800,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/ext/napoleon/__init__.py:330 sphinx/ext/napoleon/docstring.py:669
|
||||
msgid "Keyword Arguments"
|
||||
msgstr ""
|
||||
msgstr "Nøgleordsargumenter"
|
||||
|
||||
#: sphinx/ext/napoleon/docstring.py:627
|
||||
msgid "Example"
|
||||
@ -2808,7 +2808,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/ext/napoleon/docstring.py:628
|
||||
msgid "Examples"
|
||||
msgstr ""
|
||||
msgstr "Eksempler"
|
||||
|
||||
#: sphinx/ext/napoleon/docstring.py:684
|
||||
msgid "Notes"
|
||||
@ -2816,11 +2816,11 @@ msgstr ""
|
||||
|
||||
#: sphinx/ext/napoleon/docstring.py:688
|
||||
msgid "Other Parameters"
|
||||
msgstr ""
|
||||
msgstr "Andre parametre"
|
||||
|
||||
#: sphinx/ext/napoleon/docstring.py:717
|
||||
msgid "References"
|
||||
msgstr ""
|
||||
msgstr "Referencer"
|
||||
|
||||
#: sphinx/ext/napoleon/docstring.py:754
|
||||
msgid "Warns"
|
||||
@ -2881,7 +2881,7 @@ msgstr "Fortsættes på næste side"
|
||||
|
||||
#: sphinx/templates/latex/sphinxmessages.sty_t:9
|
||||
msgid "continues on next page"
|
||||
msgstr ""
|
||||
msgstr "fortsætter på næste side"
|
||||
|
||||
#: sphinx/templates/latex/sphinxmessages.sty_t:10
|
||||
msgid "Non-alphabetical"
|
||||
@ -2998,12 +2998,12 @@ msgstr "Ophavsret"
|
||||
#: sphinx/themes/basic/layout.html:201
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr ""
|
||||
msgstr "© <a href=\"%(path)s\">Ophavsret</a> %(copyright)s."
|
||||
|
||||
#: sphinx/themes/basic/layout.html:203
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr ""
|
||||
msgstr "© Ophavsret %(copyright)s."
|
||||
|
||||
#: sphinx/themes/basic/layout.html:207
|
||||
#, python-format
|
||||
@ -3083,12 +3083,12 @@ msgstr "Denne side"
|
||||
#: sphinx/themes/basic/changes/versionchanges.html:12
|
||||
#, python-format
|
||||
msgid "Changes in Version %(version)s — %(docstitle)s"
|
||||
msgstr ""
|
||||
msgstr "Ændringer i version %(version)s — %(docstitle)s"
|
||||
|
||||
#: sphinx/themes/basic/changes/rstsource.html:5
|
||||
#, python-format
|
||||
msgid "%(filename)s — %(docstitle)s"
|
||||
msgstr ""
|
||||
msgstr "%(filename)s — %(docstitle)s"
|
||||
|
||||
#: sphinx/themes/basic/changes/versionchanges.html:17
|
||||
#, python-format
|
||||
|
Binary file not shown.
@ -12,8 +12,8 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:09+0000\n"
|
||||
"Last-Translator: Lukas Prokop <admin@lukas-prokop.at>\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: German (http://www.transifex.com/sphinx-doc/sphinx-1/language/de/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -9,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:08+0000\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Esperanto (http://www.transifex.com/sphinx-doc/sphinx-1/language/eo/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
Binary file not shown.
@ -3,9 +3,9 @@
|
||||
# This file is distributed under the same license as the Sphinx project.
|
||||
#
|
||||
# Translators:
|
||||
# Edward Villegas-Pulgarin, 2018
|
||||
# Edward Villegas-Pulgarin, 2019
|
||||
# Edward Villegas-Pulgarin, 2018
|
||||
# Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2018
|
||||
# Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2019
|
||||
# Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2018
|
||||
# Guillem Borrell <guillem@torroja.dmt.upm.es>, 2011
|
||||
# Ivan García <ivan.garcia@studio-point.com>, 2019
|
||||
# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2013-2018
|
||||
@ -15,8 +15,8 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:09+0000\n"
|
||||
"Last-Translator: Leonardo J. Caballero G. <leonardocaballero@gmail.com>\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Spanish (http://www.transifex.com/sphinx-doc/sphinx-1/language/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -53,7 +53,7 @@ msgstr "Este proyecto necesita al menos Sphinx v%s y por lo tanto no se puede co
|
||||
|
||||
#: sphinx/application.py:234
|
||||
msgid "making output directory"
|
||||
msgstr ""
|
||||
msgstr "creando directorio de salida"
|
||||
|
||||
#: sphinx/application.py:239 sphinx/registry.py:470
|
||||
#, python-format
|
||||
@ -184,7 +184,7 @@ msgstr "Valor de configuración %r ya presente"
|
||||
#: sphinx/config.py:363
|
||||
#, python-format
|
||||
msgid "There is a syntax error in your configuration file: %s\n"
|
||||
msgstr ""
|
||||
msgstr "Hay un error de sintaxis en su archivo de configuración: %s\n"
|
||||
|
||||
#: sphinx/config.py:366
|
||||
msgid ""
|
||||
@ -204,7 +204,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"The config value `source_suffix' expects a string, list of strings, or "
|
||||
"dictionary. But `%r' is given."
|
||||
msgstr ""
|
||||
msgstr "El valor de configuración `source_suffix' espera una cadena de caracteres, una lista de cadena de caracteres o un diccionario. Pero `%r' es dado."
|
||||
|
||||
#: sphinx/config.py:405
|
||||
#, python-format
|
||||
@ -236,7 +236,7 @@ msgstr "El valor de configuración `{name}` tiene que ser uno de {candidates}, p
|
||||
msgid ""
|
||||
"The config value `{name}' has type `{current.__name__}'; expected "
|
||||
"{permitted}."
|
||||
msgstr ""
|
||||
msgstr "El valor de configuración `{name}' tiene tipo `{current.__name__}'; esperado {permitted}."
|
||||
|
||||
#: sphinx/config.py:478
|
||||
msgid ""
|
||||
@ -378,7 +378,7 @@ msgstr "source_input para %r ya está registrado"
|
||||
#: sphinx/registry.py:363
|
||||
#, python-format
|
||||
msgid "Translator for %r already exists"
|
||||
msgstr ""
|
||||
msgstr "Traductor para %r ya existe"
|
||||
|
||||
#: sphinx/registry.py:375
|
||||
#, python-format
|
||||
@ -561,7 +561,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/builders/__init__.py:360
|
||||
msgid "checking consistency"
|
||||
msgstr ""
|
||||
msgstr "verificando consistencia"
|
||||
|
||||
#: sphinx/builders/__init__.py:364
|
||||
msgid "no targets are out of date."
|
||||
@ -569,7 +569,7 @@ msgstr "no hay archivos objetivo desactualizados."
|
||||
|
||||
#: sphinx/builders/__init__.py:404
|
||||
msgid "updating environment: "
|
||||
msgstr ""
|
||||
msgstr "actualizando ambiente"
|
||||
|
||||
#: sphinx/builders/__init__.py:423
|
||||
#, python-format
|
||||
@ -578,7 +578,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/builders/__init__.py:462 sphinx/builders/__init__.py:492
|
||||
msgid "reading sources... "
|
||||
msgstr ""
|
||||
msgstr "leyendo fuentes..."
|
||||
|
||||
#: sphinx/builders/__init__.py:497 sphinx/builders/__init__.py:612
|
||||
msgid "waiting for workers..."
|
||||
@ -1061,7 +1061,7 @@ msgstr "copiando archivos de soporte TeX..."
|
||||
|
||||
#: sphinx/builders/latex/__init__.py:404
|
||||
msgid "copying additional files"
|
||||
msgstr ""
|
||||
msgstr "copiando archivos adicionales"
|
||||
|
||||
#: sphinx/builders/latex/__init__.py:447
|
||||
#, python-format
|
||||
@ -1444,7 +1444,7 @@ msgstr "Versión del proyecto"
|
||||
|
||||
#: sphinx/cmd/quickstart.py:304
|
||||
msgid "Project release"
|
||||
msgstr ""
|
||||
msgstr "Liberación del proyecto"
|
||||
|
||||
#: sphinx/cmd/quickstart.py:307
|
||||
msgid ""
|
||||
@ -1455,7 +1455,7 @@ msgid ""
|
||||
"\n"
|
||||
"For a list of supported codes, see\n"
|
||||
"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language."
|
||||
msgstr "\nSi los documentos están escritos en un idioma distinto al Inglés,\npuedes seleccionar un idioma aqui a través de su código. Sphinx traducirá\nlos textos que genere en dicho idioma.\n\nPara una lista de los códigos soportados visita: \nhttps://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language."
|
||||
msgstr ""
|
||||
|
||||
#: sphinx/cmd/quickstart.py:314
|
||||
msgid "Project language"
|
||||
@ -1615,7 +1615,7 @@ msgstr "versión del proyecto"
|
||||
|
||||
#: sphinx/cmd/quickstart.py:529
|
||||
msgid "release of project"
|
||||
msgstr ""
|
||||
msgstr "liberación del proyecto"
|
||||
|
||||
#: sphinx/cmd/quickstart.py:531
|
||||
msgid "document language"
|
||||
@ -1867,7 +1867,7 @@ msgstr "Lanzamientos"
|
||||
#: sphinx/domains/cpp.py:6579
|
||||
#, python-format
|
||||
msgid "%s (C++ %s)"
|
||||
msgstr ""
|
||||
msgstr "%s (C++ %s)"
|
||||
|
||||
#: sphinx/domains/cpp.py:7027 sphinx/domains/javascript.py:299
|
||||
#: sphinx/domains/python.py:744
|
||||
|
Binary file not shown.
@ -12,8 +12,8 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:09+0000\n"
|
||||
"Last-Translator: Ivar Smolin <okul@linux.ee>\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Estonian (http://www.transifex.com/sphinx-doc/sphinx-1/language/et/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -295,7 +295,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/project.py:59
|
||||
msgid "document not readable. Ignored."
|
||||
msgstr ""
|
||||
msgstr "dokument pole loetav ja seda eiratakse."
|
||||
|
||||
#: sphinx/registry.py:131
|
||||
#, python-format
|
||||
@ -468,7 +468,7 @@ msgstr "fail %r teemarajal pole korrektni zip-fail või ei sisalda see teemat"
|
||||
msgid ""
|
||||
"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please "
|
||||
"install it manually.(pip install sphinx_rtd_theme)"
|
||||
msgstr ""
|
||||
msgstr "sphinx_rtd_theme pole alates versioonist 1.4.0 enam otsene sõltuvus. Palun paigalda see käsitsi. (pip install sphinx_rtd_theme)"
|
||||
|
||||
#: sphinx/theming.py:262
|
||||
#, python-format
|
||||
@ -502,12 +502,12 @@ msgstr ""
|
||||
#: sphinx/builders/__init__.py:266
|
||||
#, python-format
|
||||
msgid "targets for %d po files that are specified"
|
||||
msgstr ""
|
||||
msgstr "%d määratud po-faili sihtfailid"
|
||||
|
||||
#: sphinx/builders/__init__.py:276
|
||||
#, python-format
|
||||
msgid "targets for %d po files that are out of date"
|
||||
msgstr ""
|
||||
msgstr "%d po-faili sihtfailid on aegunud"
|
||||
|
||||
#: sphinx/builders/__init__.py:284
|
||||
msgid "all source files"
|
||||
@ -532,7 +532,7 @@ msgstr ""
|
||||
#: sphinx/builders/__init__.py:325
|
||||
#, python-format
|
||||
msgid "targets for %d source files that are out of date"
|
||||
msgstr ""
|
||||
msgstr "%d lähtefaili sihtfailid on aegunud"
|
||||
|
||||
#: sphinx/builders/__init__.py:335
|
||||
#, python-format
|
||||
@ -562,20 +562,20 @@ msgstr ""
|
||||
|
||||
#: sphinx/builders/__init__.py:364
|
||||
msgid "no targets are out of date."
|
||||
msgstr ""
|
||||
msgstr "aegunud sihtfaile pole"
|
||||
|
||||
#: sphinx/builders/__init__.py:404
|
||||
msgid "updating environment: "
|
||||
msgstr ""
|
||||
msgstr "keskkonna uuendamine:"
|
||||
|
||||
#: sphinx/builders/__init__.py:423
|
||||
#, python-format
|
||||
msgid "%s added, %s changed, %s removed"
|
||||
msgstr ""
|
||||
msgstr "lisatud %s, muudetud %s, eemaldatud %s"
|
||||
|
||||
#: sphinx/builders/__init__.py:462 sphinx/builders/__init__.py:492
|
||||
msgid "reading sources... "
|
||||
msgstr ""
|
||||
msgstr "lähtefailide lugemine..."
|
||||
|
||||
#: sphinx/builders/__init__.py:497 sphinx/builders/__init__.py:612
|
||||
msgid "waiting for workers..."
|
||||
@ -588,7 +588,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/builders/__init__.py:560 sphinx/builders/singlehtml.py:166
|
||||
msgid "preparing documents"
|
||||
msgstr ""
|
||||
msgstr "dokumentide ettevalmistamine"
|
||||
|
||||
#: sphinx/builders/_epub_base.py:218
|
||||
#, python-format
|
||||
@ -609,12 +609,12 @@ msgstr ""
|
||||
#: sphinx/builders/latex/__init__.py:423 sphinx/builders/texinfo.py:199
|
||||
#, python-format
|
||||
msgid "cannot copy image file %r: %s"
|
||||
msgstr ""
|
||||
msgstr "kujutise faili %r pole võimalik kopeerida: %s"
|
||||
|
||||
#: sphinx/builders/_epub_base.py:444
|
||||
#, python-format
|
||||
msgid "cannot write image file %r: %s"
|
||||
msgstr ""
|
||||
msgstr "kujutise faili %r pole võimalik kirjutada: %s"
|
||||
|
||||
#: sphinx/builders/_epub_base.py:455
|
||||
msgid "Pillow not found - copying image files"
|
||||
@ -625,7 +625,7 @@ msgstr ""
|
||||
#: sphinx/builders/_epub_base.py:757 sphinx/builders/epub3.py:183
|
||||
#, python-format
|
||||
msgid "writing %s file..."
|
||||
msgstr ""
|
||||
msgstr "faili %s kirjutamine..."
|
||||
|
||||
#: sphinx/builders/_epub_base.py:565
|
||||
#, python-format
|
||||
@ -644,7 +644,7 @@ msgstr "versioonis %s pole muutusi."
|
||||
|
||||
#: sphinx/builders/changes.py:70
|
||||
msgid "writing summary file..."
|
||||
msgstr ""
|
||||
msgstr "kokkuvõttefaili kirjutamine..."
|
||||
|
||||
#: sphinx/builders/changes.py:86
|
||||
msgid "Builtins"
|
||||
@ -715,7 +715,7 @@ msgstr ""
|
||||
#: sphinx/builders/epub3.py:256 sphinx/builders/html.py:1166
|
||||
#, python-format
|
||||
msgid "invalid css_file: %r, ignored"
|
||||
msgstr ""
|
||||
msgstr "vigane css_file: %r, eiratakse"
|
||||
|
||||
#: sphinx/builders/gettext.py:221
|
||||
#, python-format
|
||||
@ -730,7 +730,7 @@ msgstr "ehitamine [%s]: "
|
||||
#: sphinx/builders/gettext.py:246
|
||||
#, python-format
|
||||
msgid "targets for %d template files"
|
||||
msgstr ""
|
||||
msgstr "%d mallifaili sihtfailid"
|
||||
|
||||
#: sphinx/builders/gettext.py:250
|
||||
msgid "reading templates... "
|
||||
@ -792,7 +792,7 @@ msgstr "lisalehtede kirjutamine..."
|
||||
|
||||
#: sphinx/builders/html.py:780
|
||||
msgid "copying downloadable files... "
|
||||
msgstr ""
|
||||
msgstr "allalaaditavate failide kopeerimine..."
|
||||
|
||||
#: sphinx/builders/html.py:788
|
||||
#, python-format
|
||||
@ -816,7 +816,7 @@ msgstr "logofaili %r pole olemas"
|
||||
#: sphinx/builders/html.py:847
|
||||
#, python-format
|
||||
msgid "favicon file %r does not exist"
|
||||
msgstr ""
|
||||
msgstr "favicon faili %r pole olemas"
|
||||
|
||||
#: sphinx/builders/html.py:854
|
||||
#, python-format
|
||||
@ -885,7 +885,7 @@ msgstr "otsinguindeksi %s tõmmistamine ... "
|
||||
#: sphinx/builders/html.py:1184
|
||||
#, python-format
|
||||
msgid "invalid js_file: %r, ignored"
|
||||
msgstr ""
|
||||
msgstr "vigane js_file: %r, eiratakse"
|
||||
|
||||
#: sphinx/builders/html.py:1228
|
||||
msgid "Many math_renderers are registered. But no math_renderer is selected."
|
||||
@ -1452,7 +1452,7 @@ msgid ""
|
||||
"\n"
|
||||
"For a list of supported codes, see\n"
|
||||
"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language."
|
||||
msgstr "\nKui su dokumendid pole kirjutatud inglise keeles, siis võid siin määrata\nkeele vastava keelekoodi abil. Sel juhul tõlgib Sphinx enda genereeritud\nteksti vastavasse keelde.\n\nToetatud keelekoodide kohta vaata\nhttps://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language."
|
||||
msgstr ""
|
||||
|
||||
#: sphinx/cmd/quickstart.py:314
|
||||
msgid "Project language"
|
||||
@ -1490,12 +1490,12 @@ msgstr ""
|
||||
|
||||
#: sphinx/cmd/quickstart.py:338
|
||||
msgid "sphinx-quickstart will not overwrite the existing file."
|
||||
msgstr ""
|
||||
msgstr "sphinx-quickstart ei kirjuta olemasolevat faili üle."
|
||||
|
||||
#: sphinx/cmd/quickstart.py:340
|
||||
msgid ""
|
||||
"Please enter a new file name, or rename the existing file and press Enter"
|
||||
msgstr ""
|
||||
msgstr "Palun sisesta uus failinimi või nimeta olemasolev fail ümber ja vajuta Enter"
|
||||
|
||||
#: sphinx/cmd/quickstart.py:344
|
||||
msgid "Indicate which of the following Sphinx extensions should be enabled:"
|
||||
@ -1701,7 +1701,7 @@ msgstr ""
|
||||
#: sphinx/cmd/quickstart.py:635
|
||||
#, python-format
|
||||
msgid "Invalid template variable: %s"
|
||||
msgstr ""
|
||||
msgstr "Vigane mallimuutuja: %s"
|
||||
|
||||
#: sphinx/directives/code.py:74
|
||||
msgid "Over dedent has detected"
|
||||
@ -2411,7 +2411,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Testing of coverage in the sources finished, look at the results in "
|
||||
"%(outdir)spython.txt."
|
||||
msgstr ""
|
||||
msgstr "Lähtefailide katvustestimine on lõppenud, vaata tulemusi failist %(outdir)spython.txt."
|
||||
|
||||
#: sphinx/ext/coverage.py:70
|
||||
#, python-format
|
||||
@ -2440,14 +2440,14 @@ msgstr ""
|
||||
|
||||
#: sphinx/ext/doctest.py:222
|
||||
msgid "invalid TestCode type"
|
||||
msgstr ""
|
||||
msgstr "vigane TestCode tüüp"
|
||||
|
||||
#: sphinx/ext/doctest.py:283
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Testing of doctests in the sources finished, look at the results in "
|
||||
"%(outdir)s/output.txt."
|
||||
msgstr "Lähtefailide doctest-testimine lõpetas, vaata tulemusi failist %(outdir)s/output.txt."
|
||||
msgstr "Lähtefailide doctest-testimine on lõppenud, vaata tulemusi failist %(outdir)s/output.txt."
|
||||
|
||||
#: sphinx/ext/doctest.py:446
|
||||
#, python-format
|
||||
@ -2457,7 +2457,7 @@ msgstr ""
|
||||
#: sphinx/ext/doctest.py:535
|
||||
#, python-format
|
||||
msgid "ignoring invalid doctest code: %r"
|
||||
msgstr ""
|
||||
msgstr "vigase doctest koodi eiramine: %r"
|
||||
|
||||
#: sphinx/ext/graphviz.py:140
|
||||
msgid "Graphviz directive cannot have both content and a filename argument"
|
||||
@ -2733,7 +2733,7 @@ msgstr ""
|
||||
#: sphinx/ext/autosummary/__init__.py:292
|
||||
#, python-format
|
||||
msgid "failed to import %s"
|
||||
msgstr ""
|
||||
msgstr "tõrge %s importimisel"
|
||||
|
||||
#: sphinx/ext/autosummary/__init__.py:307
|
||||
#, python-format
|
||||
@ -2743,7 +2743,7 @@ msgstr ""
|
||||
#: sphinx/ext/autosummary/__init__.py:311
|
||||
#, python-format
|
||||
msgid "failed to import object %s"
|
||||
msgstr ""
|
||||
msgstr "tõrge objekti %s importimisel"
|
||||
|
||||
#: sphinx/ext/autosummary/__init__.py:702
|
||||
msgid ""
|
||||
@ -3243,12 +3243,12 @@ msgstr ""
|
||||
#: sphinx/util/i18n.py:74
|
||||
#, python-format
|
||||
msgid "reading error: %s, %s"
|
||||
msgstr ""
|
||||
msgstr "viga lugemisel: %s, %s"
|
||||
|
||||
#: sphinx/util/i18n.py:81
|
||||
#, python-format
|
||||
msgid "writing error: %s, %s"
|
||||
msgstr ""
|
||||
msgstr "viga kirjutamisel: %s, %s"
|
||||
|
||||
#: sphinx/util/i18n.py:215
|
||||
#, python-format
|
||||
@ -3316,7 +3316,7 @@ msgstr ""
|
||||
|
||||
#: sphinx/writers/latex.py:603
|
||||
msgid "too large :maxdepth:, ignored."
|
||||
msgstr ""
|
||||
msgstr ":maxdepth: on liiga suur ja seda eiratakse."
|
||||
|
||||
#: sphinx/writers/latex.py:893
|
||||
msgid "document title is not a single Text node"
|
||||
|
Binary file not shown.
@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:08+0000\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Basque (http://www.transifex.com/sphinx-doc/sphinx-1/language/eu/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
Binary file not shown.
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:08+0000\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Persian (http://www.transifex.com/sphinx-doc/sphinx-1/language/fa/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
Binary file not shown.
@ -9,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:08+0000\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Finnish (http://www.transifex.com/sphinx-doc/sphinx-1/language/fi/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
@ -1 +1 @@
|
||||
Documentation.addTranslations({"locale": "fr", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", dans", "About these documents": "\u00c0 propos de ces documents", "Automatically generated list of changes in version %(version)s": "Liste auto-g\u00e9n\u00e9r\u00e9e des modifications dans la version %(version)s", "C API changes": "Modifications de l'API C", "Changes in Version %(version)s — %(docstitle)s": "Changements dans la version %(version)s — %(docstitle)s", "Collapse sidebar": "R\u00e9duire la barre lat\u00e9rale", "Complete Table of Contents": "Table des mati\u00e8res compl\u00e8te", "Contents": "Contenu", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Cr\u00e9\u00e9 avec <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Agrandir la barre lat\u00e9rale", "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.": "Vous pouvez effectuer une recherche au sein des documents. Saisissez les termes\nde votre recherche dans le champs ci-dessous et cliquez sur \"rechercher\". Notez que la fonctionnalit\u00e9 de recherche\nva automatiquement chercher l'ensemble des mots. Les pages\ncontenant moins de mots n'appara\u00eetront pas dans la liste des r\u00e9sultats.", "Full index on one page": "Index complet sur une seule page", "General Index": "Index g\u00e9n\u00e9ral", "Global Module Index": "Index g\u00e9n\u00e9ral des modules", "Go": "Go", "Hide Search Matches": "Cacher les r\u00e9sultats de la recherche", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indexer les pages par lettre", "Indices and tables:": "Indices et Tables :", "Last updated on %(last_updated)s.": "Mis \u00e0 jour le %(last_updated)s.", "Library changes": "Modifications de la biblioth\u00e8que", "Navigation": "Navigation", "Next topic": "Sujet suivant", "Other changes": "Autres modifications", "Overview": "R\u00e9sum\u00e9", "Permalink to this definition": "Lien permanent vers cette d\u00e9finition", "Permalink to this headline": "Lien permanent vers ce titre", "Please activate JavaScript to enable the search\n functionality.": "Veuillez activer le JavaScript pour que la recherche fonctionne.", "Preparing search...": "Pr\u00e9paration de la recherche...", "Previous topic": "Sujet pr\u00e9c\u00e9dent", "Quick search": "Recherche rapide", "Search": "Recherche", "Search Page": "Page de recherche", "Search Results": "R\u00e9sultats de la recherche", "Search finished, found %s page(s) matching the search query.": "La recherche est finie, %s page(s) trouv\u00e9e(s) qui corresponde(nt) \u00e0 la recherche.", "Search within %(docstitle)s": "Recherchez dans %(docstitle)s", "Searching": "Recherche en cours", "Show Source": "Montrer le code source", "Table of Contents": "Table des mati\u00e8res", "This Page": "Cette page", "Welcome! This is": "Bienvenue ! Ceci est", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Votre recherche ne correspond \u00e0 aucun document. Veuillez v\u00e9rifier que les mots sont correctement orthographi\u00e9s et que vous avez s\u00e9lectionn\u00e9 assez de cat\u00e9gories.", "all functions, classes, terms": "toutes les fonctions, classes, termes", "can be huge": "peut \u00eatre \u00e9norme", "last updated": "derni\u00e8re modification", "lists all sections and subsections": "lister l'ensemble des sections et sous-sections", "next chapter": "Chapitre suivant", "previous chapter": "Chapitre pr\u00e9c\u00e9dent", "quick access to all modules": "acc\u00e8s rapide \u00e0 l'ensemble des modules", "search": "rechercher", "search this documentation": "rechercher dans cette documentation", "the documentation for": "la documentation pour"}, "plural_expr": "(n > 1)"});
|
||||
Documentation.addTranslations({"locale": "fr", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Copyright %(copyright)s.", ", in ": ", dans", "About these documents": "\u00c0 propos de ces documents", "Automatically generated list of changes in version %(version)s": "Liste auto-g\u00e9n\u00e9r\u00e9e des modifications dans la version %(version)s", "C API changes": "Modifications de l'API C", "Changes in Version %(version)s — %(docstitle)s": "Changements dans la version %(version)s — %(docstitle)s", "Collapse sidebar": "R\u00e9duire la barre lat\u00e9rale", "Complete Table of Contents": "Table des mati\u00e8res compl\u00e8te", "Contents": "Contenu", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Cr\u00e9\u00e9 avec <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Agrandir la barre lat\u00e9rale", "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.": "Vous pouvez effectuer une recherche au sein des documents. Saisissez les termes\nde votre recherche dans le champs ci-dessous et cliquez sur \"rechercher\". Notez que la fonctionnalit\u00e9 de recherche\nva automatiquement chercher l'ensemble des mots. Les pages\ncontenant moins de mots n'appara\u00eetront pas dans la liste des r\u00e9sultats.", "Full index on one page": "Index complet sur une seule page", "General Index": "Index g\u00e9n\u00e9ral", "Global Module Index": "Index g\u00e9n\u00e9ral des modules", "Go": "Go", "Hide Search Matches": "Cacher les r\u00e9sultats de la recherche", "Index": "Index", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Indexer les pages par lettre", "Indices and tables:": "Indices et tables :", "Last updated on %(last_updated)s.": "Mis \u00e0 jour le %(last_updated)s.", "Library changes": "Modifications de la biblioth\u00e8que", "Navigation": "Navigation", "Next topic": "Sujet suivant", "Other changes": "Autres modifications", "Overview": "R\u00e9sum\u00e9", "Permalink to this definition": "Lien permanent vers cette d\u00e9finition", "Permalink to this headline": "Lien permanent vers ce titre", "Please activate JavaScript to enable the search\n functionality.": "Veuillez activer le JavaScript pour que la recherche fonctionne.", "Preparing search...": "Pr\u00e9paration de la recherche...", "Previous topic": "Sujet pr\u00e9c\u00e9dent", "Quick search": "Recherche rapide", "Search": "Recherche", "Search Page": "Page de recherche", "Search Results": "R\u00e9sultats de la recherche", "Search finished, found %s page(s) matching the search query.": "La recherche est finie, %s page(s) trouv\u00e9e(s) qui corresponde(nt) \u00e0 la recherche.", "Search within %(docstitle)s": "Recherchez dans %(docstitle)s", "Searching": "Recherche en cours", "Show Source": "Montrer le code source", "Table of Contents": "Table des mati\u00e8res", "This Page": "Cette page", "Welcome! This is": "Bienvenue ! Ceci est", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Votre recherche ne correspond \u00e0 aucun document. Veuillez v\u00e9rifier que les mots sont correctement orthographi\u00e9s et que vous avez s\u00e9lectionn\u00e9 assez de cat\u00e9gories.", "all functions, classes, terms": "toutes les fonctions, classes, termes", "can be huge": "peut \u00eatre \u00e9norme", "last updated": "derni\u00e8re modification", "lists all sections and subsections": "lister l'ensemble des sections et sous-sections", "next chapter": "Chapitre suivant", "previous chapter": "Chapitre pr\u00e9c\u00e9dent", "quick access to all modules": "acc\u00e8s rapide \u00e0 l'ensemble des modules", "search": "rechercher", "search this documentation": "rechercher dans cette documentation", "the documentation for": "la documentation pour"}, "plural_expr": "(n > 1)"});
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -9,7 +9,7 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:08+0000\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Hebrew (http://www.transifex.com/sphinx-doc/sphinx-1/language/he/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
Binary file not shown.
@ -5,12 +5,13 @@
|
||||
# Translators:
|
||||
# Ajay Singh <ajaysajay@gmail.com>, 2019
|
||||
# Purnank H. Ghumalia <me@purnank.in>, 2015-2016
|
||||
# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2019
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:08+0000\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Hindi (http://www.transifex.com/sphinx-doc/sphinx-1/language/hi/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -338,7 +339,7 @@ msgstr "%r भूमिका पहले से अधिकार-क्ष
|
||||
#: sphinx/registry.py:226
|
||||
#, python-format
|
||||
msgid "The %r index is already registered to domain %s"
|
||||
msgstr "r% अनुक्रमणिका पहले से अधिकार-क्षेत्र %s में पंजीकृत है"
|
||||
msgstr "%r अनुक्रमणिका पहले से अधिकार-क्षेत्र %s में पंजीकृत है"
|
||||
|
||||
#: sphinx/registry.py:250
|
||||
#, python-format
|
||||
@ -1450,7 +1451,7 @@ msgid ""
|
||||
"\n"
|
||||
"For a list of supported codes, see\n"
|
||||
"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language."
|
||||
msgstr "\nयदि प्रलेखों को अंग्रेजी के अलावा अन्य किसी भाषा में लिखा जाना है,\nतो यहाँ पर आप भाषा का कूटशब्द दे सकते हैं. स्फिंक्स तदपुरांत,\nजो वाक्यांश बनाता है उसे उस भाषा में अनुवादित करेगा.\n\nमान्य भाषा कूटशब्द सूची यहाँ पर देखें\nhttps://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language."
|
||||
msgstr ""
|
||||
|
||||
#: sphinx/cmd/quickstart.py:314
|
||||
msgid "Project language"
|
||||
|
Binary file not shown.
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:08+0000\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Hindi (India) (http://www.transifex.com/sphinx-doc/sphinx-1/language/hi_IN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
Binary file not shown.
@ -9,8 +9,8 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:09+0000\n"
|
||||
"Last-Translator: Mario Šarić\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Croatian (http://www.transifex.com/sphinx-doc/sphinx-1/language/hr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
Binary file not shown.
@ -13,8 +13,8 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:09+0000\n"
|
||||
"Last-Translator: Molnár Dénes <denes.molnar2@stud.uni-corvinus.hu>\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Hungarian (http://www.transifex.com/sphinx-doc/sphinx-1/language/hu/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
@ -1 +1 @@
|
||||
Documentation.addTranslations({"locale": "id", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Hak cipta</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Hak cipta %(copyright)s.", ", in ": ", di", "About these documents": "Tentang dokumen ini", "Automatically generated list of changes in version %(version)s": "Daftar perubahan dibuat otomatis untuk versi %(version)s", "C API changes": "Perubahan API C", "Changes in Version %(version)s — %(docstitle)s": "Perubahan pada Versi %(version)s — %(docstitle)s", "Collapse sidebar": "Tutup sidebar", "Complete Table of Contents": "Daftar Isi Lengkap", "Contents": "Konten", "Copyright": "Copyright", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Dibuat menggunakan <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Buka sidebar", "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.": "Dari sini dapat dilakukan pencarian pada dokumentasi. Masukkan\n kata yang dicari pada kotak dibawah dan klik \"search\". Catatan untuk fungsi pencarian\n akan secara otomatis mencari semua kata. Halaman\n yang berisi kata yang sedikat tidak dimunculkan pada daftar hasil.", "Full index on one page": "Index penuh dalam satu halaman", "General Index": "Indeks Umum", "Global Module Index": "Index Modul Global", "Go": "Go", "Hide Search Matches": "Sembunyikan Hasil Pencarian", "Index": "Indeks", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Index halaman berdasarkan huruf", "Indices and tables:": "Index dan tabel:", "Last updated on %(last_updated)s.": "Terakhir diperbarui pada %(last_updated)s.", "Library changes": "Perubahan library", "Navigation": "Navigasi", "Next topic": "Topik berikutnya", "Other changes": "Perubahan lain", "Overview": "Tinjauan", "Permalink to this definition": "Link permanen untuk definisi ini", "Permalink to this headline": "Link permanen untuk headline ini", "Please activate JavaScript to enable the search\n functionality.": "Tolong aktifkan JavaScript untuk melakukan pencarian.\n ", "Preparing search...": "Penyiapkan pencarian...", "Previous topic": "Topik sebelum", "Quick search": "Pencarian cepat", "Search": "Pencarian", "Search Page": "Pencarian Halaman", "Search Results": "Hasil Pencarian", "Search finished, found %s page(s) matching the search query.": "Pencarian selesai, menemukan %s halaman yang cocok dengan kueri pencarian.", "Search within %(docstitle)s": "Pencarian dalam %(docstitle)s", "Searching": "Pencarian", "Show Source": "Lihat Sumber", "Table of Contents": "", "This Page": "Halaman Ini", "Welcome! This is": "Selamat Datang! Ini adalah", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Tidak ada dokumen yang cocok dengan pencarian anda. Pastikan semua kata ditulis dengan benar dan sudah memilih cukup kategori.", "all functions, classes, terms": "semua fungsi, class, term", "can be huge": "dapat menjadi besar", "last updated": "terakhir diperbarui", "lists all sections and subsections": "daftar semua seksi dan subseksi", "next chapter": "bab berikutnya", "previous chapter": "bab sebelum", "quick access to all modules": "akses cepat semua modul", "search": "pencarian", "search this documentation": "pencarian pada dokumentasi ini", "the documentation for": "dokumentasi untuk"}, "plural_expr": "0"});
|
||||
Documentation.addTranslations({"locale": "id", "messages": {"%(filename)s — %(docstitle)s": "%(filename)s — %(docstitle)s", "© <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "© <a href=\"%(path)s\">Hak cipta</a> %(copyright)s.", "© Copyright %(copyright)s.": "© Hak cipta %(copyright)s.", ", in ": ", di", "About these documents": "Tentang dokumen ini", "Automatically generated list of changes in version %(version)s": "Daftar perubahan dibuat otomatis untuk versi %(version)s", "C API changes": "Perubahan API C", "Changes in Version %(version)s — %(docstitle)s": "Perubahan pada Versi %(version)s — %(docstitle)s", "Collapse sidebar": "Tutup sidebar", "Complete Table of Contents": "Daftar Isi Lengkap", "Contents": "Konten", "Copyright": "Hak Cipta", "Created using <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.": "Dibuat menggunakan <a href=\"http://sphinx-doc.org/\">Sphinx</a> %(sphinx_version)s.", "Expand sidebar": "Buka sidebar", "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.": "Dari sini dapat dilakukan pencarian pada dokumentasi. Masukkan\n kata yang dicari pada kotak dibawah dan klik \"search\". Catatan untuk fungsi pencarian\n akan secara otomatis mencari semua kata. Halaman\n yang berisi kata yang sedikat tidak dimunculkan pada daftar hasil.", "Full index on one page": "Index penuh dalam satu halaman", "General Index": "Indeks Umum", "Global Module Index": "Index Modul Global", "Go": "Go", "Hide Search Matches": "Sembunyikan Hasil Pencarian", "Index": "Indeks", "Index – %(key)s": "Index – %(key)s", "Index pages by letter": "Index halaman berdasarkan huruf", "Indices and tables:": "Indeks dan tabel:", "Last updated on %(last_updated)s.": "Terakhir diperbarui pada %(last_updated)s.", "Library changes": "Perubahan library", "Navigation": "Navigasi", "Next topic": "Topik berikutnya", "Other changes": "Perubahan lain", "Overview": "Tinjauan", "Permalink to this definition": "Link permanen untuk definisi ini", "Permalink to this headline": "Link permanen untuk headline ini", "Please activate JavaScript to enable the search\n functionality.": "Tolong aktifkan JavaScript untuk melakukan pencarian.\n ", "Preparing search...": "Penyiapkan pencarian...", "Previous topic": "Topik sebelumnya", "Quick search": "Pencarian cepat", "Search": "Pencarian", "Search Page": "Pencarian Halaman", "Search Results": "Hasil Pencarian", "Search finished, found %s page(s) matching the search query.": "Pencarian selesai, menemukan %s halaman yang cocok dengan kueri pencarian.", "Search within %(docstitle)s": "Pencarian dalam %(docstitle)s", "Searching": "Pencarian", "Show Source": "Lihat Sumber", "Table of Contents": "Daftar Isi", "This Page": "Halaman Ini", "Welcome! This is": "Selamat Datang! Ini adalah", "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories.": "Tidak ada dokumen yang cocok dengan pencarian anda. Pastikan semua kata ditulis dengan benar dan sudah memilih cukup kategori.", "all functions, classes, terms": "semua fungsi, class, term", "can be huge": "dapat menjadi besar", "last updated": "terakhir diperbarui", "lists all sections and subsections": "daftar semua seksi dan subseksi", "next chapter": "bab berikutnya", "previous chapter": "bab sebelum", "quick access to all modules": "akses cepat semua modul", "search": "pencarian", "search this documentation": "pencarian pada dokumentasi ini", "the documentation for": "dokumentasi untuk"}, "plural_expr": "0"});
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@ -3,7 +3,7 @@
|
||||
# This file is distributed under the same license as the Sphinx project.
|
||||
#
|
||||
# Translators:
|
||||
# Denis Cappellin <d.cappellin@asem.it>, 2018
|
||||
# Denis Cappellin <denis@cappell.in>, 2018
|
||||
# Paolo Cavallini <cavallini@faunalia.it>, 2013-2017
|
||||
# Roland Puntaier <roland.puntaier@chello.at>, 2013
|
||||
# Sandro Dentella <sandro@e-den.it>, 2008
|
||||
@ -13,8 +13,8 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:09+0000\n"
|
||||
"Last-Translator: Paolo Cavallini <cavallini@faunalia.it>\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:35+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/sphinx-doc/sphinx-1/language/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
Binary file not shown.
@ -21,8 +21,8 @@ msgstr ""
|
||||
"Project-Id-Version: Sphinx\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2019-03-29 01:05+0900\n"
|
||||
"PO-Revision-Date: 2019-03-28 16:09+0000\n"
|
||||
"Last-Translator: tomo\n"
|
||||
"PO-Revision-Date: 2019-11-14 15:50+0000\n"
|
||||
"Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
|
||||
"Language-Team: Japanese (http://www.transifex.com/sphinx-doc/sphinx-1/language/ja/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -903,7 +903,7 @@ msgstr "複数の math_renderer が登録されています。しかし math_ren
|
||||
#: sphinx/builders/html.py:1231
|
||||
#, python-format
|
||||
msgid "Unknown math_renderer %r is given."
|
||||
msgstr "不明な math_renderer %r が指定されました。"
|
||||
msgstr "不明な math_renderer %r が指定されました。"
|
||||
|
||||
#: sphinx/builders/html.py:1264
|
||||
#, python-format
|
||||
@ -1063,7 +1063,7 @@ msgstr "TeX 関連ファイルをコピーしています"
|
||||
|
||||
#: sphinx/builders/latex/__init__.py:384
|
||||
msgid "copying TeX support files..."
|
||||
msgstr "Tex 関連ファイルをコピー中..."
|
||||
msgstr "TeX 関連ファイルをコピー中..."
|
||||
|
||||
#: sphinx/builders/latex/__init__.py:404
|
||||
msgid "copying additional files"
|
||||
@ -1269,7 +1269,7 @@ msgstr "例外が発生したときにPdbを実行する"
|
||||
#: sphinx/cmd/build.py:227
|
||||
#, python-format
|
||||
msgid "cannot find files %r"
|
||||
msgstr "ファイル %r が見つかりません"
|
||||
msgstr "ファイル %r が見つかりません"
|
||||
|
||||
#: sphinx/cmd/build.py:230
|
||||
msgid "cannot combine -a option and filenames"
|
||||
@ -1278,7 +1278,7 @@ msgstr "-aオプションとファイル名を組み合わせることはでき
|
||||
#: sphinx/cmd/build.py:249
|
||||
#, python-format
|
||||
msgid "cannot open warning file %r: %s"
|
||||
msgstr "警告ファイル %r を開けません: %s"
|
||||
msgstr "警告ファイル %r を開けません: %s"
|
||||
|
||||
#: sphinx/cmd/build.py:259
|
||||
msgid "-D option argument must be in the form name=value"
|
||||
@ -1461,7 +1461,7 @@ msgid ""
|
||||
"\n"
|
||||
"For a list of supported codes, see\n"
|
||||
"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language."
|
||||
msgstr "\nドキュメントを英語以外の言語で書く場合は、\n 言語コードで言語を選択できます。Sphinx は生成したテキストをその言語に翻訳します。\n\nサポートされているコードのリストについては、\nhttps://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language を参照してください。"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx/cmd/quickstart.py:314
|
||||
msgid "Project language"
|
||||
@ -2413,7 +2413,7 @@ msgstr "%s はディレクトリではありません。"
|
||||
#: sphinx/ext/coverage.py:46
|
||||
#, python-format
|
||||
msgid "invalid regex %r in %s"
|
||||
msgstr "%s 内に無効な正規表現 %r があります"
|
||||
msgstr "無効な正規表現 %r が %s 内に見つかりました"
|
||||
|
||||
#: sphinx/ext/coverage.py:55
|
||||
#, python-format
|
||||
@ -2895,11 +2895,11 @@ msgstr "次のページに続く"
|
||||
|
||||
#: sphinx/templates/latex/sphinxmessages.sty_t:10
|
||||
msgid "Non-alphabetical"
|
||||
msgstr ""
|
||||
msgstr "アルファベット以外"
|
||||
|
||||
#: sphinx/templates/latex/sphinxmessages.sty_t:12
|
||||
msgid "Numbers"
|
||||
msgstr ""
|
||||
msgstr "番号"
|
||||
|
||||
#: sphinx/templates/latex/sphinxmessages.sty_t:13
|
||||
msgid "page"
|
||||
@ -3274,7 +3274,7 @@ msgstr "toctree に存在しないファイルへの参照が含まれていま
|
||||
#: sphinx/util/nodes.py:501
|
||||
#, python-format
|
||||
msgid "exception while evaluating only directive expression: %s"
|
||||
msgstr "ディレクティブ式のみ評価中に例外が発生しました: %s"
|
||||
msgstr "only ディレクティブの条件式の評価中に例外が発生しました: %s"
|
||||
|
||||
#: sphinx/util/pycompat.py:82
|
||||
#, python-format
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user