Merge branch '2.0' into 6632

This commit is contained in:
Takeshi KOMIYA 2019-12-14 22:57:59 +09:00
commit 2ae2b0d98a
254 changed files with 9180 additions and 5316 deletions

View File

@ -19,10 +19,14 @@ matrix:
- TOXENV=du13 - TOXENV=du13
- python: '3.7' - python: '3.7'
env: env:
- TOXENV=py37 - TOXENV=du14
- python: '3.8'
env:
- TOXENV=du15
- PYTEST_ADDOPTS="--cov ./ --cov-append --cov-config setup.cfg" - PYTEST_ADDOPTS="--cov ./ --cov-append --cov-config setup.cfg"
- python: 'nightly' - python: 'nightly'
env: TOXENV=py38 env:
- TOXENV=du16
- python: '3.6' - python: '3.6'
env: TOXENV=docs env: TOXENV=docs
- python: '3.6' - python: '3.6'

View File

@ -25,6 +25,7 @@ Other contributors, listed alphabetically, are:
* Henrique Bastos -- SVG support for graphviz extension * Henrique Bastos -- SVG support for graphviz extension
* Daniel Bültmann -- todo extension * Daniel Bültmann -- todo extension
* Marco Buttu -- doctest extension (pyversion option) * Marco Buttu -- doctest extension (pyversion option)
* Nathan Damon -- bugfix in validation of static paths in html builders
* Etienne Desautels -- apidoc module * Etienne Desautels -- apidoc module
* Michael Droettboom -- inheritance_diagram extension * Michael Droettboom -- inheritance_diagram extension
* Charles Duffy -- original graphviz extension * Charles Duffy -- original graphviz extension
@ -35,7 +36,7 @@ Other contributors, listed alphabetically, are:
* Hernan Grecco -- search improvements * Hernan Grecco -- search improvements
* Horst Gutmann -- internationalization support * Horst Gutmann -- internationalization support
* Martin Hans -- autodoc improvements * Martin Hans -- autodoc improvements
* Zac Hatfield-Dodds -- doctest reporting improvements * Zac Hatfield-Dodds -- doctest reporting improvements, intersphinx performance
* Doug Hellmann -- graphviz improvements * Doug Hellmann -- graphviz improvements
* Tim Hoffmann -- theme improvements * Tim Hoffmann -- theme improvements
* Antti Kaihola -- doctest extension (skipif option) * Antti Kaihola -- doctest extension (skipif option)

178
CHANGES
View File

@ -1,4 +1,4 @@
Release 2.2.0 (in development) Release 2.3.0 (in development)
============================== ==============================
Dependencies Dependencies
@ -7,7 +7,145 @@ Dependencies
Incompatible changes 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`` * apidoc: template files are renamed to ``.rst_t``
* html: Field lists will be styled by grid layout
Deprecated Deprecated
---------- ----------
@ -32,7 +170,12 @@ Features added
* #6514: html: Add a label to search input for accessability purposes * #6514: html: Add a label to search input for accessability purposes
* #5602: apidoc: Add ``--templatedir`` option * #5602: apidoc: Add ``--templatedir`` option
* #6475: Add ``override`` argument to ``app.add_autodocumenter()`` * #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`` * #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 Bugs fixed
---------- ----------
@ -46,6 +189,11 @@ Bugs fixed
* #6486: UnboundLocalError is raised if broken extension installed * #6486: UnboundLocalError is raised if broken extension installed
* #6567: autodoc: :confval:`autodoc_inherit_docstrings` does not effect to * #6567: autodoc: :confval:`autodoc_inherit_docstrings` does not effect to
``__init__()`` and ``__new__()`` ``__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 * #6498: autosummary: crashed with wrong autosummary_generate setting
* #6507: autosummary: crashes without no autosummary_generate setting * #6507: autosummary: crashes without no autosummary_generate setting
* #6511: LaTeX: autonumbered list can not be customized in LaTeX * #6511: LaTeX: autonumbered list can not be customized in LaTeX
@ -58,30 +206,10 @@ Bugs fixed
* #6549: sphinx-build: Escaped characters in error messages * #6549: sphinx-build: Escaped characters in error messages
* #6545: doctest comments not getting trimmed since Sphinx 1.8.0 * #6545: doctest comments not getting trimmed since Sphinx 1.8.0
* #6561: glossary: Wrong hyperlinks are generated for non alphanumeric terms * #6561: glossary: Wrong hyperlinks are generated for non alphanumeric terms
* #6620: i18n: classifiers of definition list are not translated with
Testing docutils-0.15
-------- * #6474: ``DocFieldTransformer`` raises AttributeError when given directive is
not a subclass of ObjectDescription
Release 2.1.3 (in development)
==============================
Dependencies
------------
Incompatible changes
--------------------
Deprecated
----------
Features added
--------------
Bugs fixed
----------
Testing
--------
Release 2.1.2 (released Jun 19, 2019) Release 2.1.2 (released Jun 19, 2019)
===================================== =====================================

View File

@ -299,6 +299,11 @@ a.headerlink:hover {
color: white!important; 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 { cite, code, tt {
font-family: 'Consolas', 'DejaVu Sans Mono', font-family: 'Consolas', 'DejaVu Sans Mono',
'Bitstream Vera Sans Mono', monospace; 'Bitstream Vera Sans Mono', monospace;

View File

@ -36,6 +36,7 @@ This is the current list of contributed extensions in that repository:
- astah: embed diagram by using astah - astah: embed diagram by using astah
- autoanysrc: Gather reST documentation from any source files - autoanysrc: Gather reST documentation from any source files
- autorun: Execute code in a ``runblock`` directive - autorun: Execute code in a ``runblock`` directive
- beamer_: A builder for Beamer (LaTeX) output.
- blockdiag: embed block diagrams by using blockdiag_ - blockdiag: embed block diagrams by using blockdiag_
- cacoo: embed diagram from Cacoo - cacoo: embed diagram from Cacoo
- cf3domain: a domain for CFEngine 3 policies - cf3domain: a domain for CFEngine 3 policies
@ -148,3 +149,4 @@ started with writing your own extensions.
.. _domaintools: https://bitbucket.org/klorenz/sphinxcontrib-domaintools .. _domaintools: https://bitbucket.org/klorenz/sphinxcontrib-domaintools
.. _restbuilder: https://pypi.org/project/sphinxcontrib-restbuilder/ .. _restbuilder: https://pypi.org/project/sphinxcontrib-restbuilder/
.. _Lasso: http://www.lassosoft.com/ .. _Lasso: http://www.lassosoft.com/
.. _beamer: https://pypi.org/project/sphinxcontrib-beamer/

View File

@ -26,6 +26,31 @@ The following is a list of deprecated interfaces.
- (will be) Removed - (will be) Removed
- Alternatives - 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()`` * - ``sphinx.domains.math.MathDomain.add_equation()``
- 2.2 - 2.2
- 4.0 - 4.0

View File

@ -55,9 +55,9 @@ See the :ref:`pertinent section in the FAQ list <usingwith>`.
Prerequisites Prerequisites
------------- -------------
Sphinx needs at least **Python 3.5** to run, as well as the docutils_ and Sphinx needs at least **Python 3.5** to run.
Jinja2_ libraries. Sphinx should work with docutils version 0.12 or some (not It also depends on 3rd party libraries such as docutils_ and jinja2_, but they
broken) SVN trunk snapshot. are automatically installed when sphinx is installed.
.. _reStructuredText: http://docutils.sourceforge.net/rst.html .. _reStructuredText: http://docutils.sourceforge.net/rst.html
.. _docutils: http://docutils.sourceforge.net/ .. _docutils: http://docutils.sourceforge.net/

View File

@ -226,6 +226,25 @@ into the generated ``.tex`` files. Its ``'sphinxsetup'`` key is described
.. versionadded:: 1.5 .. 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'`` ``'footer'``
Additional footer content (before the indices), default empty. Additional footer content (before the indices), default empty.
@ -289,6 +308,11 @@ into the generated ``.tex`` files. Its ``'sphinxsetup'`` key is described
.. attention:: .. 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 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 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 (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 .. versionchanged:: 2.0
``'lualatex'`` executes ``'lualatex'`` executes
``\defaultfontfeatures[\rmfamily,\sffamily]{}`` to disable TeX ``\defaultfontfeatures[\rmfamily,\sffamily]{}`` to disable TeX
ligatures. ligatures transforming `<<` and `>>` as escaping working with
``pdflatex/xelatex`` failed with ``lualatex``.
.. versionchanged:: 2.0 .. versionchanged:: 2.0
Detection of ``LGR``, ``T2A``, ``X2`` to trigger support of Detection of ``LGR``, ``T2A``, ``X2`` to trigger support of
occasional Greek or Cyrillic (``'pdflatex'`` only, as this support occasional Greek or Cyrillic (``'pdflatex'`` only, as this support
is provided natively by ``'platex'`` and only requires suitable is provided natively by ``'platex'`` and only requires suitable
font with ``'xelatex'/'lualatex'``). 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'`` ``'textgreek'``
The default (``'pdflatex'`` only) is The default (``'pdflatex'`` only) is
@ -595,12 +626,15 @@ macros may be significant.
default ``true``. Allows linebreaks inside inline literals: but extra default ``true``. Allows linebreaks inside inline literals: but extra
potential break-points (additionally to those allowed by LaTeX at spaces potential break-points (additionally to those allowed by LaTeX at spaces
or for hyphenation) are currently inserted only after the characters or for hyphenation) are currently inserted only after the characters
``. , ; ? ! /``. Due to TeX internals, white space in the line will be ``. , ; ? ! /`` and ``\``. Due to TeX internals, white space in the line
stretched (or shrunk) in order to accomodate the linebreak. will be stretched (or shrunk) in order to accomodate the linebreak.
.. versionadded:: 1.5 .. versionadded:: 1.5
set this option value to ``false`` to recover former behaviour. set this option value to ``false`` to recover former behaviour.
.. versionchanged:: 2.3.0
added potential breakpoint at ``\`` characters.
``verbatimvisiblespace`` ``verbatimvisiblespace``
default ``\textcolor{red}{\textvisiblespace}``. When a long code line is default ``\textcolor{red}{\textvisiblespace}``. When a long code line is
split, the last space character from the source code line right before the split, the last space character from the source code line right before the

View File

@ -510,6 +510,14 @@ General configuration
.. versionadded:: 1.6.6 .. 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 .. confval:: tls_verify
If true, Sphinx verifies server certifications. Default is ``True``. If true, Sphinx verifies server certifications. Default is ``True``.
@ -530,7 +538,7 @@ General configuration
directory pointed ``REQUESTS_CA_BUNDLE`` environment directory pointed ``REQUESTS_CA_BUNDLE`` environment
variable if ``tls_cacerts`` not set. variable if ``tls_cacerts`` not set.
.. _requests: http://docs.python-requests.org/en/master/ .. _requests: https://requests.readthedocs.io/en/master/
.. confval:: today .. confval:: today
today_fmt today_fmt
@ -654,12 +662,17 @@ documentation on :ref:`intl` for details.
Currently supported languages by Sphinx are: Currently supported languages by Sphinx are:
* ``ar`` -- Arabic
* ``bn`` -- Bengali * ``bn`` -- Bengali
* ``ca`` -- Catalan * ``ca`` -- Catalan
* ``cak`` -- Kaqchikel
* ``cs`` -- Czech * ``cs`` -- Czech
* ``cy`` -- Welsh
* ``da`` -- Danish * ``da`` -- Danish
* ``de`` -- German * ``de`` -- German
* ``el`` -- Greek
* ``en`` -- English * ``en`` -- English
* ``eo`` -- Esperanto
* ``es`` -- Spanish * ``es`` -- Spanish
* ``et`` -- Estonian * ``et`` -- Estonian
* ``eu`` -- Basque * ``eu`` -- Basque
@ -667,6 +680,7 @@ documentation on :ref:`intl` for details.
* ``fi`` -- Finnish * ``fi`` -- Finnish
* ``fr`` -- French * ``fr`` -- French
* ``he`` -- Hebrew * ``he`` -- Hebrew
* ``hi`` -- Hindi
* ``hr`` -- Croatian * ``hr`` -- Croatian
* ``hu`` -- Hungarian * ``hu`` -- Hungarian
* ``id`` -- Indonesian * ``id`` -- Indonesian
@ -680,15 +694,20 @@ documentation on :ref:`intl` for details.
* ``ne`` -- Nepali * ``ne`` -- Nepali
* ``nl`` -- Dutch * ``nl`` -- Dutch
* ``pl`` -- Polish * ``pl`` -- Polish
* ``pt`` -- Portuguese
* ``pt_BR`` -- Brazilian Portuguese * ``pt_BR`` -- Brazilian Portuguese
* ``pt_PT`` -- European Portuguese * ``pt_PT`` -- European Portuguese
* ``ro`` -- Romanian
* ``ru`` -- Russian * ``ru`` -- Russian
* ``si`` -- Sinhala * ``si`` -- Sinhala
* ``sk`` -- Slovak * ``sk`` -- Slovak
* ``sl`` -- Slovenian * ``sl`` -- Slovenian
* ``sr`` -- Serbian
* ``sv`` -- Swedish * ``sv`` -- Swedish
* ``ta`` -- Tamil
* ``tr`` -- Turkish * ``tr`` -- Turkish
* ``uk_UA`` -- Ukrainian * ``uk_UA`` -- Ukrainian
* ``ur`` -- Urdu
* ``vi`` -- Vietnamese * ``vi`` -- Vietnamese
* ``zh_CN`` -- Simplified Chinese * ``zh_CN`` -- Simplified Chinese
* ``zh_TW`` -- Traditional Chinese * ``zh_TW`` -- Traditional Chinese
@ -1828,6 +1847,7 @@ These options influence LaTeX output.
* ``'xelatex'`` -- XeLaTeX * ``'xelatex'`` -- XeLaTeX
* ``'lualatex'`` -- LuaLaTeX * ``'lualatex'`` -- LuaLaTeX
* ``'platex'`` -- pLaTeX (default if :confval:`language` is ``'ja'``) * ``'platex'`` -- pLaTeX (default if :confval:`language` is ``'ja'``)
* ``'uplatex'`` -- upLaTeX (experimental)
``'pdflatex'``\ 's support for Unicode characters is limited. ``'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 ``'xelatex'`` or ``'lualatex'`` and making sure to use an OpenType font
with wide-enough glyph coverage is often easier than trying to make with wide-enough glyph coverage is often easier than trying to make
``'pdflatex'`` work with the extra Unicode characters. Since Sphinx 2.0 ``'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>`, Contrarily to :ref:`MathJaX math rendering in HTML output <math-support>`,
LaTeX requires some extra configuration to support Unicode literals in LaTeX requires some extra configuration to support Unicode literals in
@ -2346,6 +2380,34 @@ Options for the linkcheck builder
.. versionadded:: 1.5 .. 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 Options for the XML builder
--------------------------- ---------------------------

View File

@ -439,7 +439,7 @@ There are also config values that you can set:
* ``'signature'`` -- Show typehints as its signature (default) * ``'signature'`` -- Show typehints as its signature (default)
* ``'none'`` -- Do not show typehints * ``'none'`` -- Do not show typehints
.. versionadded: 2.1 .. versionadded:: 2.1
.. confval:: autodoc_warningiserror .. confval:: autodoc_warningiserror

View File

@ -143,6 +143,11 @@ also use these config values:
The new files will be placed in the directories specified in the The new files will be placed in the directories specified in the
``:toctree:`` options of the directives. ``:toctree:`` options of the directives.
.. versionchanged:: 2.3
Emits :event:`autodoc-skip-member` event as :mod:`~sphinx.ext.autodoc`
does.
.. confval:: autosummary_mock_imports .. confval:: autosummary_mock_imports
This value contains a list of modules to be mocked up. See This value contains a list of modules to be mocked up. See

View File

@ -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 images. This of course means that the computer where the docs are built must
have both programs available. have both programs available.
There are various config values you can set to influence how the images are There are various configuration values you can set to influence how the images
built: are built:
.. confval:: imgmath_image_format .. confval:: imgmath_image_format
The output image format. The default is ``'png'``. It should be either The output image format. The default is ``'png'``. It should be either
``'png'`` or ``'svg'``. ``'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 .. confval:: imgmath_latex
@ -54,19 +80,13 @@ built:
This value should only contain the path to the latex executable, not further This value should only contain the path to the latex executable, not further
arguments; use :confval:`imgmath_latex_args` for that purpose. arguments; use :confval:`imgmath_latex_args` for that purpose.
.. confval:: imgmath_dvipng .. hint::
The command name with which to invoke ``dvipng``. The default is Some fancy LaTeX mark-up (an example was reported which used TikZ to add
``'dvipng'``; you may need to set this to a full path if ``dvipng`` is not in various decorations to the equation) require multiple runs of the LaTeX
the executable search path. This option is only used when executable. To handle this, set this configuration setting to
``imgmath_image_format`` is set to ``'png'``. ``'latexmk'`` (or a full path to it) as this Perl script reliably
chooses dynamically how many latex runs are needed.
.. 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'``.
.. confval:: imgmath_latex_args .. confval:: imgmath_latex_args
@ -75,49 +95,43 @@ built:
.. confval:: imgmath_latex_preamble .. confval:: imgmath_latex_preamble
Additional LaTeX code to put into the preamble of the short LaTeX files that Additional LaTeX code to put into the preamble of the LaTeX files used to
are used to translate the math snippets. This is empty by default. Use it translate the math snippets. This is left empty by default. Use it
e.g. to add more packages whose commands you want to use in the math. 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 .. confval:: imgmath_dvipng_args
Additional arguments to give to dvipng, as a list. The default value is Additional arguments to give to dvipng, as a list. The default value is
``['-gamma', '1.5', '-D', '110', '-bg', 'Transparent']`` which makes the ``['-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 transparent background. This option is used only when
``imgmath_image_format`` is ``'png'``. ``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 .. confval:: imgmath_dvisvgm_args
Additional arguments to give to dvisvgm, as a list. The default value is Additional arguments to give to dvisvgm, as a list. The default value is
``['--no-fonts']``. This option is used only when ``imgmath_image_format`` ``['--no-fonts']``, which means that ``dvisvgm`` will render glyphs as path
is ``'svg'``. elements (cf the `dvisvgm FAQ`_). 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.
:mod:`sphinx.ext.mathjax` -- Render math via JavaScript :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/ .. _dvipng: https://savannah.nongnu.org/projects/dvipng/
.. _dvisvgm: https://dvisvgm.de/ .. _dvisvgm: https://dvisvgm.de/
.. _dvisvgm FAQ: https://dvisvgm.de/FAQ
.. _MathJax: https://www.mathjax.org/ .. _MathJax: https://www.mathjax.org/
.. _jsMath: http://www.math.union.edu/~dpvc/jsmath/ .. _jsMath: http://www.math.union.edu/~dpvc/jsmath/
.. _preview-latex package: https://www.gnu.org/software/auctex/preview-latex.html .. _LaTeX preview package: https://www.gnu.org/software/auctex/preview-latex.html
.. _preview-latex-style: https://packages.ubuntu.com/xenial/preview-latex-style

View File

@ -56,7 +56,7 @@ source code files.
.. _Google: .. _Google:
https://google.github.io/styleguide/pyguide.html#Comments https://google.github.io/styleguide/pyguide.html#Comments
.. _NumPy: .. _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: .. _Khan Academy:
https://github.com/Khan/style-guides/blob/master/style/python.md#docstrings https://github.com/Khan/style-guides/blob/master/style/python.md#docstrings

View File

@ -453,21 +453,29 @@ __ http://pygments.org/docs/lexers/
As discussed previously, *language* can be any lexer alias supported by As discussed previously, *language* can be any lexer alias supported by
Pygments. Pygments.
**Additional options** .. rubric:: options
Pygments can generate line numbers for code blocks. To enable this, use the .. rst:directive:option:: linenothreshold: threshold
``linenothreshold`` option. :: :type: number (optional)
Enable to generate line numbers for code blocks.
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.
Example::
.. highlight:: python .. highlight:: python
:linenothreshold: 5 :linenothreshold: 5
This will produce line numbers for all code blocks longer than five lines. .. rst:directive:option:: force
:type: no value
To ignore minor errors on highlighting, you can specifiy ``:force:`` option. If given, minor errors on highlighting are ignored.
.. versionchanged:: 2.1 .. versionadded:: 2.1
``:force:`` option.
.. rst:directive:: .. code-block:: [language] .. rst:directive:: .. code-block:: [language]
@ -483,26 +491,38 @@ __ http://pygments.org/docs/lexers/
:rst:dir:`highlight` directive will be used. If not set, :rst:dir:`highlight` directive will be used. If not set,
:confval:`highlight_language` will be used. :confval:`highlight_language` will be used.
**Additional options** .. versionchanged:: 2.0
The ``language`` argument becomes optional.
Pygments can generate line numbers for code blocks. To enable this for, use .. rubric:: options
the ``linenos`` flag option. ::
.. rst:directive:option:: linenos
:type: no value
Enable to generate line numbers for the code block::
.. code-block:: ruby .. code-block:: ruby
:linenos: :linenos:
Some more Ruby code. Some more Ruby code.
The first line number can be selected with the ``lineno-start`` option. If .. rst:directive:option:: lineno-start: number
present, ``linenos`` flag is automatically activated:: :type: number
Set the first line number of the code block. If present, ``linenos``
option is also automatically activated::
.. code-block:: ruby .. code-block:: ruby
:lineno-start: 10 :lineno-start: 10
Some more Ruby code, with line numbering starting at 10. Some more Ruby code, with line numbering starting at 10.
Additionally, an ``emphasize-lines`` option can be given to have Pygments .. versionadded:: 1.3
emphasize particular lines::
.. rst:directive:option:: emphasize-lines: line numbers
:type: comma separated numbers
Emphasize particular lines of the code block::
.. code-block:: python .. code-block:: python
:emphasize-lines: 3,5 :emphasize-lines: 3,5
@ -513,9 +533,29 @@ __ http://pygments.org/docs/lexers/
print 'This one is not...' print 'This one is not...'
print '...but this one is.' print '...but this one is.'
A ``caption`` option can be given to show that name before the code block. .. versionadded:: 1.1
A ``name`` option can be provided implicit target name that can be .. versionchanged:: 1.6.6
referenced by using :rst:role:`ref`. For example:: 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 .. code-block:: python
:caption: this.py :caption: this.py
@ -523,32 +563,26 @@ __ http://pygments.org/docs/lexers/
print 'Explicit is better than implicit.' print 'Explicit is better than implicit.'
A ``dedent`` option can be given to strip indentation characters from the .. versionadded:: 1.3
code block. For example::
.. rst:directive:option:: dedent: number
:type: number
Strip indentation characters from the code block. For example::
.. code-block:: ruby .. code-block:: ruby
:dedent: 4 :dedent: 4
some ruby code some ruby code
A ``force`` option can ignore minor errors on highlighting. .. versionadded:: 1.3
.. versionchanged:: 1.1 .. rst:directive:option:: force
The ``emphasize-lines`` option has been added. :type: no value
.. versionchanged:: 1.3 If given, minor errors on highlighting are ignored.
The ``lineno-start``, ``caption``, ``name`` and ``dedent`` options have
been added.
.. versionchanged:: 1.6.6 .. versionadded:: 2.1
LaTeX supports the ``emphasize-lines`` option.
.. versionchanged:: 2.0
The ``language`` argument becomes optional.
.. versionchanged:: 2.1
``:force:`` option has been added.
.. rst:directive:: .. literalinclude:: filename .. rst:directive:: .. literalinclude:: filename
@ -1017,7 +1051,7 @@ this reason, the following directive exists:
cells. cells.
Sphinx's merged cells interact well with ``p{width}``, ``\X{a}{b}``, 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:: .. note::

View File

@ -1530,7 +1530,7 @@ These roles are provided to refer to the described objects:
The Math Domain 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 .. rst:role:: math:numref

View File

@ -237,6 +237,8 @@ These themes are:
- **documentwidth** (CSS length): Width of the document (without sidebar), - **documentwidth** (CSS length): Width of the document (without sidebar),
default 50em. default 50em.
- **sidebarwidth** (CSS length): Width of the sidebar, default 20em. - **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. - **bgcolor** (CSS color): Background color.
- **headerbg** (CSS value for "background"): background for the header area, - **headerbg** (CSS value for "background"): background for the header area,
default a grayish gradient. default a grayish gradient.

View File

@ -47,7 +47,7 @@ extras_require = {
'html5lib', 'html5lib',
'flake8>=3.5.0', 'flake8>=3.5.0',
'flake8-import-order', 'flake8-import-order',
'mypy>=0.720', 'mypy>=0.750',
'docutils-stubs', 'docutils-stubs',
], ],
} }
@ -176,6 +176,10 @@ setup(
description='Python documentation generator', description='Python documentation generator',
long_description=long_desc, long_description=long_desc,
long_description_content_type='text/x-rst', 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, zip_safe=False,
classifiers=[ classifiers=[
'Development Status :: 5 - Production/Stable', 'Development Status :: 5 - Production/Stable',
@ -216,6 +220,9 @@ setup(
], ],
platforms='any', platforms='any',
packages=find_packages(exclude=['tests', 'utils']), packages=find_packages(exclude=['tests', 'utils']),
package_data = {
'sphinx': ['py.typed'],
},
include_package_data=True, include_package_data=True,
entry_points={ entry_points={
'console_scripts': [ 'console_scripts': [

View File

@ -32,8 +32,8 @@ if 'PYTHONWARNINGS' not in os.environ:
warnings.filterwarnings('ignore', "'U' mode is deprecated", warnings.filterwarnings('ignore', "'U' mode is deprecated",
DeprecationWarning, module='docutils.io') DeprecationWarning, module='docutils.io')
__version__ = '2.2.0+' __version__ = '2.3.0+'
__released__ = '2.2.0' # used when Sphinx builds its own docs __released__ = '2.3.0' # used when Sphinx builds its own docs
#: Version info for better programmatic use. #: Version info for better programmatic use.
#: #:
@ -43,7 +43,7 @@ __released__ = '2.2.0' # used when Sphinx builds its own docs
#: #:
#: .. versionadded:: 1.2 #: .. versionadded:: 1.2
#: Before version 1.2, check the string ``sphinx.__version__``. #: 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__)) package_dir = path.abspath(path.dirname(__file__))

View File

@ -63,20 +63,38 @@ class toctree(nodes.General, nodes.Element, translatable):
def preserve_original_messages(self): def preserve_original_messages(self):
# type: () -> None # 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'): if self.get('caption'):
self['rawcaption'] = self['caption'] self['rawcaption'] = self['caption']
def apply_translated_message(self, original_message, translated_message): def apply_translated_message(self, original_message, translated_message):
# type: (str, str) -> None # 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: if self.get('rawcaption') == original_message:
self['caption'] = translated_message self['caption'] = translated_message
def extract_original_messages(self): def extract_original_messages(self):
# type: () -> List[str] # type: () -> List[str]
messages = [] # type: List[str]
# toctree entries
messages.extend(self.get('rawentries', []))
# :caption: option
if 'rawcaption' in self: if 'rawcaption' in self:
return [self['rawcaption']] messages.append(self['rawcaption'])
else: return messages
return []
# domain-specific object descriptions (class, function etc.) # domain-specific object descriptions (class, function etc.)

View File

@ -12,6 +12,7 @@
import os import os
import pickle import pickle
import platform
import sys import sys
import warnings import warnings
from collections import deque from collections import deque
@ -199,6 +200,12 @@ class Sphinx:
# say hello to the world # say hello to the world
logger.info(bold(__('Running Sphinx v%s') % sphinx.__display_version__)) 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 # status code for command-line application
self.statuscode = 0 self.statuscode = 0
@ -1192,26 +1199,30 @@ class Sphinx:
""" """
if typ == 'read': if typ == 'read':
attrname = 'parallel_read_safe' attrname = 'parallel_read_safe'
message = __("the %s extension does not declare if it is safe " message_not_declared = __("the %s extension does not declare if it "
"for parallel reading, assuming it isn't - please " "is safe for parallel reading, assuming "
"ask the extension author to check and make it " "it isn't - please ask the extension author "
"explicit") "to check and make it explicit")
message_not_safe = __("the %s extension is not safe for parallel reading")
elif typ == 'write': elif typ == 'write':
attrname = 'parallel_write_safe' attrname = 'parallel_write_safe'
message = __("the %s extension does not declare if it is safe " message_not_declared = __("the %s extension does not declare if it "
"for parallel writing, assuming it isn't - please " "is safe for parallel writing, assuming "
"ask the extension author to check and make it " "it isn't - please ask the extension author "
"explicit") "to check and make it explicit")
message_not_safe = __("the %s extension is not safe for parallel writing")
else: else:
raise ValueError('parallel type %s is not supported' % typ) raise ValueError('parallel type %s is not supported' % typ)
for ext in self.extensions.values(): for ext in self.extensions.values():
allowed = getattr(ext, attrname, None) allowed = getattr(ext, attrname, None)
if allowed is None: if allowed is None:
logger.warning(message, ext.name) logger.warning(message_not_declared, ext.name)
logger.warning(__('doing serial %s'), typ) logger.warning(__('doing serial %s'), typ)
return False return False
elif not allowed: elif not allowed:
logger.warning(message_not_safe, ext.name)
logger.warning(__('doing serial %s'), typ)
return False return False
return True return True

View File

@ -388,9 +388,11 @@ class Builder:
# ... but not those that already were removed # ... but not those that already were removed
changed.update(self.env.glob_toctrees & self.env.found_docs) changed.update(self.env.glob_toctrees & self.env.found_docs)
if changed: if updated: # explain the change iff build config status was not ok
reason = CONFIG_CHANGED_REASON.get(self.env.config_status, '') reason = (CONFIG_CHANGED_REASON.get(self.env.config_status, '') +
(self.env.config_status_extra or ''))
logger.info('[%s] ', reason, nonl=True) logger.info('[%s] ', reason, nonl=True)
logger.info(__('%s added, %s changed, %s removed'), logger.info(__('%s added, %s changed, %s removed'),
len(added), len(changed), len(removed)) len(added), len(changed), len(removed))

View File

@ -272,7 +272,7 @@ class EpubBuilder(StandaloneHTMLBuilder):
if ':' in node_id: if ':' in node_id:
target['ids'][i] = self.fix_fragment('', 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): if isinstance(next_node, nodes.Element):
for i, node_id in enumerate(next_node['ids']): for i, node_id in enumerate(next_node['ids']):
if ':' in node_id: if ':' in node_id:

View File

@ -9,7 +9,7 @@
""" """
from os import path from os import path
from typing import Any, Dict, Set from typing import Any, Dict
from sphinx.application import Sphinx from sphinx.application import Sphinx
from sphinx.builders.html import StandaloneHTMLBuilder from sphinx.builders.html import StandaloneHTMLBuilder
@ -45,10 +45,6 @@ class DirectoryHTMLBuilder(StandaloneHTMLBuilder):
return outfilename return outfilename
def prepare_writing(self, docnames: Set[str]) -> None:
super().prepare_writing(docnames)
self.globalcontext['no_search_suffix'] = True
# for compatibility # for compatibility
deprecated_alias('sphinx.builders.html', deprecated_alias('sphinx.builders.html',

View File

@ -11,16 +11,16 @@
from codecs import open from codecs import open
from collections import defaultdict, OrderedDict from collections import defaultdict, OrderedDict
from datetime import datetime, tzinfo, timedelta from datetime import datetime, tzinfo, timedelta
from io import StringIO
from os import path, walk, getenv from os import path, walk, getenv
from time import time 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 uuid import uuid4
from docutils import nodes from docutils import nodes
from docutils.nodes import Element from docutils.nodes import Element
from sphinx import addnodes from sphinx import addnodes
from sphinx import package_dir
from sphinx.application import Sphinx from sphinx.application import Sphinx
from sphinx.builders import Builder from sphinx.builders import Builder
from sphinx.domains.python import pairindextypes 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.console import bold # type: ignore
from sphinx.util.i18n import CatalogInfo, docname_to_domain from sphinx.util.i18n import CatalogInfo, docname_to_domain
from sphinx.util.nodes import extract_messages, traverse_translatable_index 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.tags import Tags
from sphinx.util.template import SphinxRenderer
if False: if False:
# For type annotation # For type annotation
@ -58,7 +59,15 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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: class Catalog:
@ -80,6 +89,12 @@ class Catalog:
self.metadata[msg] = [] self.metadata[msg] = []
self.metadata[msg].append((origin.source, origin.line, origin.uid)) # type: ignore 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: class MsgOrigin:
""" """
@ -92,6 +107,22 @@ class MsgOrigin:
self.uid = uuid4().hex 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): class I18nTags(Tags):
"""Dummy tags module for I18nBuilder. """Dummy tags module for I18nBuilder.
@ -247,12 +278,13 @@ class MessageCatalogBuilder(I18nBuilder):
def finish(self) -> None: def finish(self) -> None:
super().finish() super().finish()
data = { context = {
'version': self.config.version, 'version': self.config.version,
'copyright': self.config.copyright, 'copyright': self.config.copyright,
'project': self.config.project, 'project': self.config.project,
'ctime': datetime.fromtimestamp( 'ctime': datetime.fromtimestamp(timestamp, ltz).strftime('%Y-%m-%d %H:%M%z'),
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(), for textdomain, catalog in status_iterator(self.catalogs.items(),
__("writing message catalogs... "), __("writing message catalogs... "),
@ -262,30 +294,10 @@ class MessageCatalogBuilder(I18nBuilder):
# noop if config.gettext_compact is set # noop if config.gettext_compact is set
ensuredir(path.join(self.outdir, path.dirname(textdomain))) 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') 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): if should_write(pofn, content):
with open(pofn, 'w', encoding='utf-8') as pofile: with open(pofn, 'w', encoding='utf-8') as pofile:
pofile.write(content) pofile.write(content)

View File

@ -90,7 +90,7 @@ class Stylesheet(str):
attributes = None # type: Dict[str, str] attributes = None # type: Dict[str, str]
filename = None # type: 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 = str.__new__(cls, filename) # type: ignore
self.filename = filename self.filename = filename
self.attributes = attributes self.attributes = attributes
@ -142,7 +142,7 @@ class JavaScript(str):
attributes = None # type: Dict[str, str] attributes = None # type: Dict[str, str]
filename = None # type: 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 = str.__new__(cls, filename) # type: ignore
self.filename = filename self.filename = filename
self.attributes = attributes self.attributes = attributes
@ -1162,7 +1162,8 @@ def validate_html_extra_path(app: Sphinx, config: Config) -> None:
if not path.exists(extra_path): if not path.exists(extra_path):
logger.warning(__('html_extra_path entry %r does not exist'), entry) logger.warning(__('html_extra_path entry %r does not exist'), entry)
config.html_extra_path.remove(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) logger.warning(__('html_extra_path entry %r is placed inside outdir'), entry)
config.html_extra_path.remove(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): if not path.exists(static_path):
logger.warning(__('html_static_path entry %r does not exist'), entry) logger.warning(__('html_static_path entry %r does not exist'), entry)
config.html_static_path.remove(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) logger.warning(__('html_static_path entry %r is placed inside outdir'), entry)
config.html_static_path.remove(entry) config.html_static_path.remove(entry)

View File

@ -234,14 +234,13 @@ class LaTeXBuilder(Builder):
destination = SphinxFileOutput(destination_path=path.join(self.outdir, targetname), destination = SphinxFileOutput(destination_path=path.join(self.outdir, targetname),
encoding='utf-8', overwrite_if_changed=True) encoding='utf-8', overwrite_if_changed=True)
with progress_message(__("processing %s") % targetname): with progress_message(__("processing %s") % targetname):
toctrees = self.env.get_doctree(docname).traverse(addnodes.toctree) doctree = self.env.get_doctree(docname)
if toctrees: toctree = next(iter(doctree.traverse(addnodes.toctree)), None)
if toctrees[0].get('maxdepth') > 0: if toctree and toctree.get('maxdepth') > 0:
tocdepth = toctrees[0].get('maxdepth') tocdepth = toctree.get('maxdepth')
else:
tocdepth = None
else: else:
tocdepth = None tocdepth = None
doctree = self.assemble_doctree( doctree = self.assemble_doctree(
docname, toctree_only, docname, toctree_only,
appendices=((docclass != 'howto') and self.config.latex_appendices or [])) appendices=((docclass != 'howto') and self.config.latex_appendices or []))
@ -418,6 +417,8 @@ def default_latex_engine(config: Config) -> str:
return 'platex' return 'platex'
elif (config.language or '').startswith('zh'): elif (config.language or '').startswith('zh'):
return 'xelatex' return 'xelatex'
elif config.language == 'el':
return 'xelatex'
else: else:
return 'pdflatex' return 'pdflatex'
@ -425,6 +426,10 @@ def default_latex_engine(config: Config) -> str:
def default_latex_docclass(config: Config) -> Dict[str, str]: def default_latex_docclass(config: Config) -> Dict[str, str]:
""" Better default latex_docclass settings for specific languages. """ """ Better default latex_docclass settings for specific languages. """
if config.language == 'ja': if config.language == 'ja':
if config.latex_engine == 'uplatex':
return {'manual': 'ujbook',
'howto': 'ujreport'}
else:
return {'manual': 'jsbook', return {'manual': 'jsbook',
'howto': 'jreport'} 'howto': 'jreport'}
else: else:
@ -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]]: def default_latex_documents(config: Config) -> List[Tuple[str, str, str, str, str]]:
""" Better default latex_documents settings. """ """ 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, return [(config.master_doc,
make_filename_from_project(config.project) + '.tex', make_filename_from_project(config.project) + '.tex',
texescape.escape_abbr(texescape.escape(config.project)), texescape.escape_abbr(project),
texescape.escape_abbr(texescape.escape(config.author)), texescape.escape_abbr(author),
'manual')] 'manual')]
@ -452,7 +459,7 @@ def setup(app: Sphinx) -> Dict[str, Any]:
app.connect('config-inited', validate_config_values) app.connect('config-inited', validate_config_values)
app.add_config_value('latex_engine', default_latex_engine, None, 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_documents', default_latex_documents, None)
app.add_config_value('latex_logo', None, None, [str]) app.add_config_value('latex_logo', None, None, [str])
app.add_config_value('latex_appendices', [], None) app.add_config_value('latex_appendices', [], None)

View File

@ -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 # 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. # 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): 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) parser.feed(chunk)
if parser.found: if parser.found:
break break
@ -78,6 +81,8 @@ class CheckExternalLinksBuilder(Builder):
self.to_ignore = [re.compile(x) for x in self.app.config.linkcheck_ignore] self.to_ignore = [re.compile(x) for x in self.app.config.linkcheck_ignore]
self.anchors_ignore = [re.compile(x) self.anchors_ignore = [re.compile(x)
for x in self.app.config.linkcheck_anchors_ignore] 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.good = set() # type: Set[str]
self.broken = {} # type: Dict[str, str] self.broken = {} # type: Dict[str, str]
self.redirected = {} # type: Dict[str, Tuple[str, int]] self.redirected = {} # type: Dict[str, Tuple[str, int]]
@ -101,7 +106,6 @@ class CheckExternalLinksBuilder(Builder):
'allow_redirects': True, 'allow_redirects': True,
'headers': { 'headers': {
'Accept': 'text/html,application/xhtml+xml;q=0.9,*/*;q=0.8', '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: if self.app.config.linkcheck_timeout:
@ -125,11 +129,18 @@ class CheckExternalLinksBuilder(Builder):
except UnicodeError: except UnicodeError:
req_url = encode_uri(req_url) 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: try:
if anchor and self.app.config.linkcheck_anchors: if anchor and self.app.config.linkcheck_anchors:
# Read the whole document and see if #anchor exists # Read the whole document and see if #anchor exists
response = requests.get(req_url, stream=True, config=self.app.config, response = requests.get(req_url, stream=True, config=self.app.config,
**kwargs) auth=auth_info, **kwargs)
found = check_anchor(response, unquote(anchor)) found = check_anchor(response, unquote(anchor))
if not found: if not found:
@ -138,13 +149,14 @@ class CheckExternalLinksBuilder(Builder):
try: try:
# try a HEAD request first, which should be easier on # try a HEAD request first, which should be easier on
# the server and the network # 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() response.raise_for_status()
except HTTPError: except HTTPError:
# retry with GET request if that fails, some servers # retry with GET request if that fails, some servers
# don't like HEAD requests. # don't like HEAD requests.
response = requests.get(req_url, stream=True, config=self.app.config, response = requests.get(req_url, stream=True, config=self.app.config,
**kwargs) auth=auth_info, **kwargs)
response.raise_for_status() response.raise_for_status()
except HTTPError as err: except HTTPError as err:
if err.response.status_code == 401: if err.response.status_code == 401:
@ -237,13 +249,16 @@ class CheckExternalLinksBuilder(Builder):
else: else:
logger.info(red('broken ') + uri + red(' - ' + info)) logger.info(red('broken ') + uri + red(' - ' + info))
elif status == 'redirected': elif status == 'redirected':
try:
text, color = { text, color = {
301: ('permanently', darkred), 301: ('permanently', darkred),
302: ('with Found', purple), 302: ('with Found', purple),
303: ('with See Other', purple), 303: ('with See Other', purple),
307: ('temporarily', turquoise), 307: ('temporarily', turquoise),
0: ('with unknown code', purple), 308: ('permanently', darkred),
}[code] }[code]
except KeyError:
text, color = ('with unknown code', purple)
self.write_entry('redirected ' + text, docname, lineno, self.write_entry('redirected ' + text, docname, lineno,
uri + ' to ' + info) uri + ' to ' + info)
logger.info(color('redirect ') + uri + color(' - ' + text + ' 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_builder(CheckExternalLinksBuilder)
app.add_config_value('linkcheck_ignore', [], None) 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_retries', 1, None)
app.add_config_value('linkcheck_timeout', None, None, [int]) app.add_config_value('linkcheck_timeout', None, None, [int])
app.add_config_value('linkcheck_workers', 5, None) app.add_config_value('linkcheck_workers', 5, None)

View File

@ -88,7 +88,7 @@ class Make:
nocolor() nocolor()
print(bold("Sphinx v%s" % sphinx.__display_version__)) 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: for osname, bname, description in BUILDERS:
if not osname or os.name == osname: if not osname or os.name == osname:
print(' %s %s' % (blue(bname.ljust(10)), description)) print(' %s %s' % (blue(bname.ljust(10)), description))

View File

@ -148,6 +148,7 @@ class Config:
'math_numfig': (True, 'env', []), 'math_numfig': (True, 'env', []),
'tls_verify': (True, 'env', []), 'tls_verify': (True, 'env', []),
'tls_cacerts': (None, 'env', []), 'tls_cacerts': (None, 'env', []),
'user_agent': (None, 'env', [str]),
'smartquotes': (True, 'env', []), 'smartquotes': (True, 'env', []),
'smartquotes_action': ('qDe', 'env', []), 'smartquotes_action': ('qDe', 'env', []),
'smartquotes_excludes': ({'languages': ['ja'], 'smartquotes_excludes': ({'languages': ['ja'],
@ -176,16 +177,16 @@ class Config:
else: else:
config, overrides = args[:2] config, overrides = args[:2]
self.overrides = overrides self.overrides = dict(overrides)
self.values = Config.config_values.copy() self.values = Config.config_values.copy()
self._raw_config = config self._raw_config = config
self.setup = config.get('setup', None) # type: Callable self.setup = config.get('setup', None) # type: Callable
if 'extensions' in overrides: if 'extensions' in self.overrides:
if isinstance(overrides['extensions'], str): if isinstance(self.overrides['extensions'], str):
config['extensions'] = overrides.pop('extensions').split(',') config['extensions'] = self.overrides.pop('extensions').split(',')
else: else:
config['extensions'] = overrides.pop('extensions') config['extensions'] = self.overrides.pop('extensions')
self.extensions = config.get('extensions', []) # type: List[str] self.extensions = config.get('extensions', []) # type: List[str]
@classmethod @classmethod

View File

@ -31,10 +31,7 @@ RemovedInNextVersionWarning = RemovedInSphinx30Warning
def deprecated_alias(modname, objects, warning): def deprecated_alias(modname, objects, warning):
# type: (str, Dict, Type[Warning]) -> None # 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 sys.modules[modname] = _ModuleWrapper(module, modname, objects, warning) # type: ignore

View File

@ -348,7 +348,7 @@ class LiteralIncludeReader:
return lines[:lineno + 1] return lines[:lineno + 1]
else: else:
if lineno == 0: if lineno == 0:
return [] pass # end-before ignores first line
else: else:
return lines[:lineno] return lines[:lineno]
if inclusive is True: if inclusive is True:

View File

@ -32,7 +32,8 @@ from sphinx.util.nodes import make_refnode
if False: if False:
# For type annotation # 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.application import Sphinx # NOQA
from sphinx.builders import Builder # NOQA from sphinx.builders import Builder # NOQA
from sphinx.config import Config # NOQA from sphinx.config import Config # NOQA
@ -3191,6 +3192,52 @@ class ASTDeclaratorNameParamQual(ASTBase):
self.paramQual.describe_signature(signode, mode, env, symbol) 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): class ASTParenExprList(ASTBase):
def __init__(self, exprs): def __init__(self, exprs):
# type: (List[Any]) -> None # type: (List[Any]) -> None
@ -5716,8 +5763,12 @@ class DefinitionParser:
trailing = None trailing = None
return ASTDeclSpecs(outer, leftSpecs, rightSpecs, trailing) return ASTDeclSpecs(outer, leftSpecs, rightSpecs, trailing)
def _parse_declarator_name_param_qual(self, named, paramMode, typed): def _parse_declarator_name_suffix(self,
# type: (Union[bool, str], str, bool) -> ASTDeclaratorNameParamQual named, # type: Union[bool, str]
paramMode, # type: str
typed # type: bool
):
# type: (...) -> Union[ASTDeclaratorNameParamQual, ASTDeclaratorNameBitField]
# now we should parse the name, and then suffixes # now we should parse the name, and then suffixes
if named == 'maybe': if named == 'maybe':
pos = self.pos pos = self.pos
@ -5760,6 +5811,13 @@ class DefinitionParser:
else: else:
break break
paramQual = self._parse_parameters_and_qualifiers(paramMode) 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, return ASTDeclaratorNameParamQual(declId=declId, arrayOps=arrayOps,
paramQual=paramQual) paramQual=paramQual)
@ -5842,7 +5900,7 @@ class DefinitionParser:
pos = self.pos pos = self.pos
try: try:
# assume this is params and quals # assume this is params and quals
res = self._parse_declarator_name_param_qual(named, paramMode, res = self._parse_declarator_name_suffix(named, paramMode,
typed) typed)
return res return res
except DefinitionError as exParamQual: except DefinitionError as exParamQual:
@ -5868,7 +5926,7 @@ class DefinitionParser:
raise self._make_multi_error(prevErrors, header) raise self._make_multi_error(prevErrors, header)
pos = self.pos pos = self.pos
try: try:
return self._parse_declarator_name_param_qual(named, paramMode, typed) return self._parse_declarator_name_suffix(named, paramMode, typed)
except DefinitionError as e: except DefinitionError as e:
self.pos = pos self.pos = pos
prevErrors.append((e, "If declarator-id")) prevErrors.append((e, "If declarator-id"))
@ -6980,7 +7038,7 @@ class CPPExprRole:
if asCode: if asCode:
# render the expression as inline code # render the expression as inline code
self.class_type = 'cpp-expr' self.class_type = 'cpp-expr'
self.node_type = nodes.literal self.node_type = nodes.literal # type: Type[TextElement]
else: else:
# render the expression as inline text # render the expression as inline text
self.class_type = 'cpp-texpr' self.class_type = 'cpp-texpr'

View File

@ -612,12 +612,10 @@ class StandardDomain(Domain):
sectname = self.get_numfig_title(node) sectname = self.get_numfig_title(node)
if not sectname: if not sectname:
continue continue
elif node.traverse(addnodes.toctree):
n = node.traverse(addnodes.toctree)[0]
if n.get('caption'):
sectname = n['caption']
else: else:
continue toctree = next(iter(node.traverse(addnodes.toctree)), None)
if toctree and toctree.get('caption'):
sectname = toctree.get('caption')
else: else:
# anonymous-only labels # anonymous-only labels
continue continue

View File

@ -100,6 +100,7 @@ class BuildEnvironment:
self.srcdir = None # type: str self.srcdir = None # type: str
self.config = None # type: Config self.config = None # type: Config
self.config_status = None # type: int self.config_status = None # type: int
self.config_status_extra = None # type: str
self.events = None # type: EventManager self.events = None # type: EventManager
self.project = None # type: Project self.project = None # type: Project
self.version = None # type: Dict[str, str] self.version = None # type: Dict[str, str]
@ -232,16 +233,25 @@ class BuildEnvironment:
def _update_config(self, config: Config) -> None: def _update_config(self, config: Config) -> None:
"""Update configurations by new one.""" """Update configurations by new one."""
self.config_status = CONFIG_OK self.config_status = CONFIG_OK
self.config_status_extra = ''
if self.config is None: if self.config is None:
self.config_status = CONFIG_NEW self.config_status = CONFIG_NEW
elif self.config.extensions != config.extensions: elif self.config.extensions != config.extensions:
self.config_status = CONFIG_EXTENSIONS_CHANGED 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: else:
# check if a config value was changed that affects how # check if a config value was changed that affects how
# doctrees are read # doctrees are read
for item in config.filter('env'): for item in config.filter('env'):
if self.config[item.name] != item.value: if self.config[item.name] != item.value:
self.config_status = CONFIG_CHANGED self.config_status = CONFIG_CHANGED
self.config_status_extra = ' (%r)' % (item.name,)
break break
self.config = config self.config = config

View File

@ -21,6 +21,7 @@ import os
import sys import sys
import warnings import warnings
from fnmatch import fnmatch from fnmatch import fnmatch
from importlib.machinery import EXTENSION_SUFFIXES
from os import path from os import path
from typing import Any, List, Tuple from typing import Any, List, Tuple
@ -45,7 +46,7 @@ else:
] ]
INITPY = '__init__.py' INITPY = '__init__.py'
PY_SUFFIXES = {'.py', '.pyx'} PY_SUFFIXES = ('.py', '.pyx') + tuple(EXTENSION_SUFFIXES)
template_dir = path.join(package_dir, 'templates', 'apidoc') 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): for root, subs, files in os.walk(rootpath, followlinks=followlinks):
# document only Python module files (that aren't excluded) # document only Python module files (that aren't excluded)
py_files = sorted(f for f in files 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)) not is_excluded(path.join(root, f), excludes))
is_pkg = INITPY in py_files is_pkg = INITPY in py_files
is_namespace = INITPY not in py_files and implicit_namespaces 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 assert root == rootpath and root_package is None
for py_file in py_files: for py_file in py_files:
if not is_skipped_module(path.join(rootpath, py_file), opts, excludes): 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) create_module_file(root_package, module, opts, user_template_dir)
toplevels.append(module) toplevels.append(module)

View File

@ -8,7 +8,7 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import sys import importlib
import traceback import traceback
import warnings import warnings
from collections import namedtuple from collections import namedtuple
@ -23,14 +23,13 @@ logger = logging.getLogger(__name__)
def import_module(modname: str, warningiserror: bool = False) -> Any: 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: try:
with warnings.catch_warnings(): with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=ImportWarning) warnings.filterwarnings("ignore", category=ImportWarning)
with logging.skip_warningiserror(not warningiserror): with logging.skip_warningiserror(not warningiserror):
__import__(modname) return importlib.import_module(modname)
return sys.modules[modname]
except BaseException as exc: except BaseException as exc:
# Importing modules may cause any side effects, including # Importing modules may cause any side effects, including
# SystemExit, so we need to catch all errors. # SystemExit, so we need to catch all errors.

View File

@ -60,7 +60,7 @@ class _MockObject:
return _make_subclass(key, self.__display_name__, self.__class__)() return _make_subclass(key, self.__display_name__, self.__class__)()
def __call__(self, *args, **kw) -> Any: 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 # Appears to be a decorator, pass through unchanged
return args[0] return args[0]
return self return self

View File

@ -138,9 +138,20 @@ def generate_autosummary_content(name: str, obj: Any, parent: Any,
if not template.exists(template_name): if not template.exists(template_name):
template_name = 'autosummary/base.rst' 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] = [], def get_members(obj: Any, types: Set[str], include_public: List[str] = [],
imported: bool = True) -> Tuple[List[str], List[str]]: imported: bool = True) -> Tuple[List[str], List[str]]:
items = [] # type: List[str] items = [] # type: List[str]
public = [] # type: List[str]
for name in dir(obj): for name in dir(obj):
try: try:
value = safe_getattr(obj, name) value = safe_getattr(obj, name)
@ -148,11 +159,20 @@ def generate_autosummary_content(name: str, obj: Any, parent: Any,
continue continue
documenter = get_documenter(app, value, obj) documenter = get_documenter(app, value, obj)
if documenter.objtype in types: if documenter.objtype in types:
if imported or getattr(value, '__module__', None) == obj.__name__:
# skip imported members if expected # skip imported members if expected
if imported or getattr(value, '__module__', None) == obj.__name__:
skipped = skip_member(value, name, documenter.objtype)
if skipped is True:
pass
elif skipped is False:
# show the member forcedly
items.append(name) items.append(name)
public = [x for x in items public.append(name)
if x in include_public or not x.startswith('_')] else:
items.append(name)
if name in include_public or not name.startswith('_'):
# considers member as public
public.append(name)
return public, items return public, items
ns = {} # type: Dict[str, Any] ns = {} # type: Dict[str, Any]

View File

@ -13,6 +13,7 @@ import glob
import inspect import inspect
import pickle import pickle
import re import re
from importlib import import_module
from os import path from os import path
from typing import Any, Dict, IO, List, Pattern, Set, Tuple from typing import Any, Dict, IO, List, Pattern, Set, Tuple
@ -144,7 +145,7 @@ class CoverageBuilder(Builder):
continue continue
try: try:
mod = __import__(mod_name, fromlist=['foo']) mod = import_module(mod_name)
except ImportError as err: except ImportError as err:
logger.warning(__('module %s could not be imported: %s'), mod_name, err) logger.warning(__('module %s could not be imported: %s'), mod_name, err)
self.py_undoc[mod_name] = {'error': err} self.py_undoc[mod_name] = {'error': err}

View File

@ -286,7 +286,7 @@ class DocTestBuilder(Builder):
# for doctest examples but unusable for multi-statement code such # for doctest examples but unusable for multi-statement code such
# as setup code -- to be able to use doctest error reporting with # as setup code -- to be able to use doctest error reporting with
# that code nevertheless, we monkey-patch the "compile" it uses. # 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 sys.path[0:0] = self.config.doctest_path
@ -507,7 +507,7 @@ Doctest summary
if len(code) == 1: if len(code) == 1:
# ordinary doctests (code/output interleaved) # ordinary doctests (code/output interleaved)
try: 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) code[0].filename, code[0].lineno)
except Exception: except Exception:
logger.warning(__('ignoring invalid doctest code: %r'), code[0].code, logger.warning(__('ignoring invalid doctest code: %r'), code[0].code,

View File

@ -87,14 +87,38 @@ DOC_BODY_PREVIEW = r'''
''' '''
depth_re = re.compile(br'\[\d+ depth=(-?\d+)\]') 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.""" """Generate LaTeX macro."""
variables = { variables = {
'fontsize': config.imgmath_font_size, 'fontsize': config.imgmath_font_size,
'baselineskip': int(round(config.imgmath_font_size * 1.2)), 'baselineskip': int(round(config.imgmath_font_size * 1.2)),
'preamble': config.imgmath_latex_preamble, 'preamble': config.imgmath_latex_preamble,
'tightpage': '' if image_format == 'png' else ',tightpage',
'math': math '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.extend(builder.config.imgmath_dvisvgm_args)
command.append(dvipath) command.append(dvipath)
convert_dvi_to_image(command, name) stdout, stderr = convert_dvi_to_image(command, name)
return filename, None
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]: 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: if image_format not in SUPPORT_FORMAT:
raise MathExtError('imgmath_image_format must be either "png" or "svg"') 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) filename = "%s.%s" % (sha1(latex.encode()).hexdigest(), image_format)
relfn = posixpath.join(self.builder.imgpath, 'math', filename) relfn = posixpath.join(self.builder.imgpath, 'math', filename)
outfn = path.join(self.builder.outdir, self.builder.imagedir, 'math', filename) outfn = path.join(self.builder.outdir, self.builder.imagedir, 'math', filename)
if path.isfile(outfn): if path.isfile(outfn):
if image_format == 'png':
depth = read_png_depth(outfn) depth = read_png_depth(outfn)
elif image_format == 'svg':
depth = read_svg_depth(outfn)
return relfn, depth return relfn, depth
# if latex or dvipng (dvisvgm) has failed once, don't bother to try again # if latex or dvipng (dvisvgm) has failed once, don't bother to try again

View File

@ -38,8 +38,8 @@ r"""
import builtins import builtins
import inspect import inspect
import re import re
import sys
from hashlib import md5 from hashlib import md5
from importlib import import_module
from typing import Any, Dict, Iterable, List, Tuple from typing import Any, Dict, Iterable, List, Tuple
from typing import cast from typing import cast
@ -74,8 +74,10 @@ def try_import(objname: str) -> Any:
Returns imported object or module. If failed, returns None value. Returns imported object or module. If failed, returns None value.
""" """
try: try:
__import__(objname) return import_module(objname)
return sys.modules.get(objname) except TypeError:
# Relative import
return None
except ImportError: except ImportError:
matched = module_sig_re.match(objname) matched = module_sig_re.match(objname)
@ -87,8 +89,8 @@ def try_import(objname: str) -> Any:
if modname is None: if modname is None:
return None return None
try: try:
__import__(modname) module = import_module(modname)
return getattr(sys.modules.get(modname), attrname, None) return getattr(module, attrname, None)
except ImportError: except ImportError:
return None return None
@ -366,7 +368,7 @@ class InheritanceDiagram(SphinxDirective):
# removed from the doctree after we're done with them. # removed from the doctree after we're done with them.
for name in graph.get_all_class_names(): for name in graph.get_all_class_names():
refnodes, x = class_role( # type: ignore 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) node.extend(refnodes)
# Store the graph object so we can use it to generate the # Store the graph object so we can use it to generate the
# dot file later # dot file later

View File

@ -23,6 +23,7 @@
:license: BSD, see LICENSE for details. :license: BSD, see LICENSE for details.
""" """
import concurrent.futures
import functools import functools
import posixpath import posixpath
import sys import sys
@ -187,21 +188,18 @@ def fetch_inventory(app: Sphinx, uri: str, inv: Any) -> Any:
return invdata return invdata
def load_mappings(app: Sphinx) -> None: def fetch_inventory_group(
"""Load all intersphinx mappings into the environment.""" name: str, uri: str, invs: Any, cache: Any, app: Any, now: float
now = int(time.time()) ) -> bool:
cache_time = now - app.config.intersphinx_cache_limit * 86400 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: for inv in invs:
if not inv: if not inv:
inv = posixpath.join(uri, INVENTORY_FILENAME) inv = posixpath.join(uri, INVENTORY_FILENAME)
# decide whether the inventory must be read: always read local # decide whether the inventory must be read: always read local
# files; remote ones only if the cache time is expired # files; remote ones only if the cache time is expired
if '://' not in inv or uri not in inventories.cache \ if '://' not in inv or uri not in cache or cache[uri][1] < cache_time:
or inventories.cache[uri][1] < cache_time:
safe_inv_url = _get_safe_url(inv) safe_inv_url = _get_safe_url(inv)
logger.info(__('loading intersphinx inventory from %s...'), safe_inv_url) logger.info(__('loading intersphinx inventory from %s...'), safe_inv_url)
try: try:
@ -209,12 +207,11 @@ def load_mappings(app: Sphinx) -> None:
except Exception as err: except Exception as err:
failures.append(err.args) failures.append(err.args)
continue continue
if invdata: if invdata:
inventories.cache[uri] = (name, now, invdata) cache[uri] = (name, now, invdata)
update = True return True
break return False
finally:
if failures == []: if failures == []:
pass pass
elif len(failures) < len(invs): elif len(failures) < len(invs):
@ -227,7 +224,21 @@ def load_mappings(app: Sphinx) -> None:
logger.warning(__("failed to reach any of the inventories " logger.warning(__("failed to reach any of the inventories "
"with the following issues:") + "\n" + issues) "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() inventories.clear()
# Duplicate values in different inventories will shadow each # Duplicate values in different inventories will shadow each
@ -374,6 +385,7 @@ def inspect_main(argv: List[str]) -> None:
class MockConfig: class MockConfig:
intersphinx_timeout = None # type: int intersphinx_timeout = None # type: int
tls_verify = False tls_verify = False
user_agent = None
class MockApp: class MockApp:
srcdir = '' srcdir = ''
@ -398,7 +410,7 @@ def inspect_main(argv: List[str]) -> None:
if __name__ == '__main__': if __name__ == '__main__':
import logging # type: ignore import logging as _logging
logging.basicConfig() _logging.basicConfig()
inspect_main(argv=sys.argv[1:]) inspect_main(argv=sys.argv[1:])

View File

@ -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 MathDomain # NOQA # to keep compatibility
from sphinx.domains.math import MathReferenceRole as EqXRefRole # 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.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): class MathDirective(MathDirectiveBase):
@ -70,6 +74,75 @@ def is_in_section_title(node: Element) -> bool:
return False 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, def setup_math(app: Sphinx,
htmlinlinevisitors: Tuple[Callable, Callable], htmlinlinevisitors: Tuple[Callable, Callable],
htmldisplayvisitors: Tuple[Callable, Callable]) -> None: htmldisplayvisitors: Tuple[Callable, Callable]) -> None:

View File

@ -27,10 +27,9 @@ from sphinx.domains import Domain
from sphinx.environment import BuildEnvironment from sphinx.environment import BuildEnvironment
from sphinx.errors import NoUri from sphinx.errors import NoUri
from sphinx.locale import _, __ from sphinx.locale import _, __
from sphinx.util import logging from sphinx.util import logging, texescape
from sphinx.util.docutils import SphinxDirective from sphinx.util.docutils import SphinxDirective
from sphinx.util.nodes import make_refnode from sphinx.util.nodes import make_refnode
from sphinx.util.texescape import tex_escape_map
from sphinx.writers.html import HTMLTranslator from sphinx.writers.html import HTMLTranslator
from sphinx.writers.latex import LaTeXTranslator 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: if self.config.todo_include_todos:
self.body.append('\n\\begin{sphinxadmonition}{note}{') self.body.append('\n\\begin{sphinxadmonition}{note}{')
self.body.append(self.hypertarget_to(node)) self.body.append(self.hypertarget_to(node))
title_node = cast(nodes.title, node[0]) 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) node.pop(0)
else: else:
raise nodes.SkipNode raise nodes.SkipNode

View File

@ -11,6 +11,7 @@
import html import html
import warnings import warnings
from functools import partial from functools import partial
from importlib import import_module
from pygments import highlight from pygments import highlight
from pygments.filters import ErrorToken from pygments.filters import ErrorToken
@ -26,8 +27,7 @@ from sphinx.deprecation import RemovedInSphinx30Warning
from sphinx.ext import doctest from sphinx.ext import doctest
from sphinx.locale import __ from sphinx.locale import __
from sphinx.pygments_styles import SphinxStyle, NoneStyle from sphinx.pygments_styles import SphinxStyle, NoneStyle
from sphinx.util import logging from sphinx.util import logging, texescape
from sphinx.util.texescape import tex_hl_escape_map_new
if False: if False:
# For type annotation # For type annotation
@ -67,9 +67,11 @@ class PygmentsBridge:
html_formatter = HtmlFormatter html_formatter = HtmlFormatter
latex_formatter = LatexFormatter latex_formatter = LatexFormatter
def __init__(self, dest='html', stylename='sphinx', trim_doctest_flags=None): def __init__(self, dest='html', stylename='sphinx', trim_doctest_flags=None,
# type: (str, str, bool) -> None latex_engine=None):
# type: (str, str, bool, str) -> None
self.dest = dest self.dest = dest
self.latex_engine = latex_engine
style = self.get_style(stylename) style = self.get_style(stylename)
self.formatter_args = {'style': style} # type: Dict[str, Any] self.formatter_args = {'style': style} # type: Dict[str, Any]
@ -92,7 +94,7 @@ class PygmentsBridge:
return NoneStyle return NoneStyle
elif '.' in stylename: elif '.' in stylename:
module, stylename = stylename.rsplit('.', 1) module, stylename = stylename.rsplit('.', 1)
return getattr(__import__(module, None, None, ['__name__']), stylename) return getattr(import_module(module), stylename)
else: else:
return get_style_by_name(stylename) return get_style_by_name(stylename)
@ -111,7 +113,7 @@ class PygmentsBridge:
# first, escape highlighting characters like Pygments does # first, escape highlighting characters like Pygments does
source = source.translate(escape_hl_chars) source = source.translate(escape_hl_chars)
# then, escape all characters nonrepresentable in LaTeX # 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' + \ return '\\begin{Verbatim}[commandchars=\\\\\\{\\}]\n' + \
source + '\\end{Verbatim}\n' source + '\\end{Verbatim}\n'
@ -191,7 +193,7 @@ class PygmentsBridge:
if self.dest == 'html': if self.dest == 'html':
return hlsource return hlsource
else: else:
return hlsource.translate(tex_hl_escape_map_new) return texescape.hlescape(hlsource, self.latex_engine)
def get_stylesheet(self): def get_stylesheet(self):
# type: () -> str # type: () -> str

View File

@ -19,7 +19,7 @@ from docutils.statemachine import StringList, string2lines
from docutils.transforms.references import DanglingReferences from docutils.transforms.references import DanglingReferences
from docutils.writers import UnfilteredWriter from docutils.writers import UnfilteredWriter
from sphinx.deprecation import RemovedInSphinx30Warning from sphinx.deprecation import RemovedInSphinx30Warning, RemovedInSphinx40Warning
from sphinx.transforms import ( from sphinx.transforms import (
AutoIndexUpgrader, DoctreeReadEvent, FigureAligner, SphinxTransformer AutoIndexUpgrader, DoctreeReadEvent, FigureAligner, SphinxTransformer
) )
@ -58,12 +58,35 @@ class SphinxBaseReader(standalone.Reader):
transforms = [] # type: List[Type[Transform]] transforms = [] # type: List[Type[Transform]]
def __init__(self, app, *args, **kwargs): def __init__(self, *args, **kwargs):
# type: (Sphinx, Any, Any) -> None # type: (Any, Any) -> None
self.app = app from sphinx.application import Sphinx
self.env = app.env 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) 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): def get_transforms(self):
# type: () -> List[Type[Transform]] # type: () -> List[Type[Transform]]
transforms = super().get_transforms() + self.transforms transforms = super().get_transforms() + self.transforms
@ -85,7 +108,7 @@ class SphinxBaseReader(standalone.Reader):
# substitute transformer # substitute transformer
document.transformer = SphinxTransformer(document) document.transformer = SphinxTransformer(document)
document.transformer.set_environment(self.env) document.transformer.set_environment(self.settings.env)
# substitute reporter # substitute reporter
reporter = document.reporter reporter = document.reporter
@ -99,10 +122,10 @@ class SphinxStandaloneReader(SphinxBaseReader):
A basic document reader for Sphinx. A basic document reader for Sphinx.
""" """
def __init__(self, app, *args, **kwargs): def setup(self, app):
# type: (Sphinx, Any, Any) -> None # type: (Sphinx) -> None
self.transforms = self.transforms + app.registry.get_transforms() self.transforms = self.transforms + app.registry.get_transforms()
super().__init__(app, *args, **kwargs) super().setup(app)
def read(self, source, parser, settings): def read(self, source, parser, settings):
# type: (Input, Parser, Values) -> nodes.document # type: (Input, Parser, Values) -> nodes.document
@ -110,18 +133,18 @@ class SphinxStandaloneReader(SphinxBaseReader):
if not self.parser: if not self.parser:
self.parser = parser self.parser = parser
self.settings = settings self.settings = settings
self.input = self.read_source() self.input = self.read_source(settings.env)
self.parse() self.parse()
return self.document return self.document
def read_source(self): def read_source(self, env):
# type: () -> str # type: (BuildEnvironment) -> str
"""Read content from source and do post-process.""" """Read content from source and do post-process."""
content = self.source.read() content = self.source.read()
# emit "source-read" event # emit "source-read" event
arg = [content] arg = [content]
self.app.emit('source-read', self.env.docname, arg) env.events.emit('source-read', env.docname, arg)
return arg[0] return arg[0]
@ -134,8 +157,10 @@ class SphinxI18nReader(SphinxBaseReader):
Because the translated texts are partial and they don't have correct line numbers. Because the translated texts are partial and they don't have correct line numbers.
""" """
def __init__(self, app, *args, **kwargs): def setup(self, app):
# type: (Sphinx, Any, Any) -> None # type: (Sphinx) -> None
super().setup(app)
self.transforms = self.transforms + app.registry.get_transforms() self.transforms = self.transforms + app.registry.get_transforms()
unused = [PreserveTranslatableMessages, Locale, RemoveTranslatableInline, unused = [PreserveTranslatableMessages, Locale, RemoveTranslatableInline,
AutoIndexUpgrader, FigureAligner, SphinxDomains, DoctreeReadEvent, AutoIndexUpgrader, FigureAligner, SphinxDomains, DoctreeReadEvent,
@ -144,8 +169,6 @@ class SphinxI18nReader(SphinxBaseReader):
if transform in self.transforms: if transform in self.transforms:
self.transforms.remove(transform) self.transforms.remove(transform)
super().__init__(app, *args, **kwargs)
def set_lineno_for_reporter(self, lineno): def set_lineno_for_reporter(self, lineno):
# type: (int) -> None # type: (int) -> None
"""Stores the source line number of original text.""" """Stores the source line number of original text."""
@ -290,7 +313,8 @@ def read_doc(app, env, filename):
error_handler = UnicodeDecodeErrorHandler(env.docname) error_handler = UnicodeDecodeErrorHandler(env.docname)
codecs.register_error('sphinx', error_handler) # type: ignore codecs.register_error('sphinx', error_handler) # type: ignore
reader = SphinxStandaloneReader(app) reader = SphinxStandaloneReader()
reader.setup(app)
filetype = get_filetype(app.config.source_suffix, filename) filetype = get_filetype(app.config.source_suffix, filename)
parser = app.registry.create_source_parser(app, filetype) parser = app.registry.create_source_parser(app, filetype)
if parser.__class__.__name__ == 'CommonMarkParser' and parser.settings_spec == (): if parser.__class__.__name__ == 'CommonMarkParser' and parser.settings_spec == ():
@ -306,10 +330,10 @@ def read_doc(app, env, filename):
# Sphinx-1.8 style # Sphinx-1.8 style
source = input_class(app, env, source=None, source_path=filename, # type: ignore source = input_class(app, env, source=None, source_path=filename, # type: ignore
encoding=env.config.source_encoding) encoding=env.config.source_encoding)
pub = Publisher(reader=reader, # type: ignore pub = Publisher(reader=reader,
parser=parser, parser=parser,
writer=SphinxDummyWriter(), writer=SphinxDummyWriter(),
source_class=SphinxDummySourceClass, source_class=SphinxDummySourceClass, # type: ignore
destination=NullOutput()) destination=NullOutput())
pub.process_programmatic_settings(None, env.settings, None) pub.process_programmatic_settings(None, env.settings, None)
pub.set_source(source, filename) pub.set_source(source, filename)

View File

@ -35,7 +35,7 @@ class _TranslationProxy(UserString):
""" """
__slots__ = ('_func', '_args') __slots__ = ('_func', '_args')
def __new__(cls, func, *args): def __new__(cls, func, *args): # type: ignore
# type: (Callable, str) -> object # type: (Callable, str) -> object
if not args: if not args:
# not called with "function" and "arguments", but a plain string # not called with "function" and "arguments", but a plain string

View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\n" "POT-Creation-Date: 2019-03-29 01:05+0900\n"
"PO-Revision-Date: 2019-03-28 16:09+0000\n" "PO-Revision-Date: 2019-11-14 15:35+0000\n"
"Last-Translator: Mohammed Shannaq <sam@ms.per.jo>\n" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Arabic (http://www.transifex.com/sphinx-doc/sphinx-1/language/ar/)\n" "Language-Team: Arabic (http://www.transifex.com/sphinx-doc/sphinx-1/language/ar/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"

View File

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\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" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Bengali (http://www.transifex.com/sphinx-doc/sphinx-1/language/bn/)\n" "Language-Team: Bengali (http://www.transifex.com/sphinx-doc/sphinx-1/language/bn/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"

View File

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\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" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Catalan (http://www.transifex.com/sphinx-doc/sphinx-1/language/ca/)\n" "Language-Team: Catalan (http://www.transifex.com/sphinx-doc/sphinx-1/language/ca/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"

View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\n" "POT-Creation-Date: 2019-03-29 01:05+0900\n"
"PO-Revision-Date: 2019-03-28 16:09+0000\n" "PO-Revision-Date: 2019-11-14 15:35+0000\n"
"Last-Translator: Julien Malard <julien.malard@mail.mcgill.ca>\n" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Kaqchikel (http://www.transifex.com/sphinx-doc/sphinx-1/language/cak/)\n" "Language-Team: Kaqchikel (http://www.transifex.com/sphinx-doc/sphinx-1/language/cak/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -1449,7 +1449,7 @@ msgid ""
"\n" "\n"
"For a list of supported codes, see\n" "For a list of supported codes, see\n"
"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." "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 #: sphinx/cmd/quickstart.py:314
msgid "Project language" msgid "Project language"

View File

@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\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" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Czech (http://www.transifex.com/sphinx-doc/sphinx-1/language/cs/)\n" "Language-Team: Czech (http://www.transifex.com/sphinx-doc/sphinx-1/language/cs/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"

View File

@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\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" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Welsh (http://www.transifex.com/sphinx-doc/sphinx-1/language/cy/)\n" "Language-Team: Welsh (http://www.transifex.com/sphinx-doc/sphinx-1/language/cy/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"

View File

@ -1 +1 @@
Documentation.addTranslations({"locale": "da", "messages": {"%(filename)s &#8212; %(docstitle)s": "", "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "", "&#169; 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 &#8212; %(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 &ndash; %(key)s": "Indeks &ndash; %(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 &#8212; %(docstitle)s": "%(filename)s &#8212; %(docstitle)s", "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "&#169; <a href=\"%(path)s\">Ophavsret</a> %(copyright)s.", "&#169; Copyright %(copyright)s.": "&#169; 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 &#8212; %(docstitle)s": "\u00c6ndringer i version %(version)s &#8212; %(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 &ndash; %(key)s": "Indeks &ndash; %(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)"});

View File

@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\n" "POT-Creation-Date: 2019-03-29 01:05+0900\n"
"PO-Revision-Date: 2019-03-28 16:09+0000\n" "PO-Revision-Date: 2019-11-14 15:35+0000\n"
"Last-Translator: Jakob Lykke Andersen <jakob@caput.dk>\n" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Danish (http://www.transifex.com/sphinx-doc/sphinx-1/language/da/)\n" "Language-Team: Danish (http://www.transifex.com/sphinx-doc/sphinx-1/language/da/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -220,7 +220,7 @@ msgstr "tabel %s"
#: sphinx/config.py:408 #: sphinx/config.py:408
#, python-format #, python-format
msgid "Listing %s" msgid "Listing %s"
msgstr "Viser %s" msgstr "Kildekode %s"
#: sphinx/config.py:447 #: sphinx/config.py:447
msgid "" msgid ""
@ -266,7 +266,7 @@ msgstr ""
#: sphinx/events.py:60 #: sphinx/events.py:60
#, python-format #, python-format
msgid "Unknown event name: %s" msgid "Unknown event name: %s"
msgstr "" msgstr "Ukendt hændelsesnavn: %s"
#: sphinx/extension.py:52 #: sphinx/extension.py:52
#, python-format #, python-format
@ -319,7 +319,7 @@ msgstr ""
#: sphinx/registry.py:163 #: sphinx/registry.py:163
#, python-format #, python-format
msgid "domain %s already registered" 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 #: sphinx/registry.py:197 sphinx/registry.py:212 sphinx/registry.py:223
#, python-format #, python-format
@ -334,7 +334,7 @@ msgstr ""
#: sphinx/registry.py:215 #: sphinx/registry.py:215
#, python-format #, python-format
msgid "The %r role is already registered to domain %s" 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 #: sphinx/registry.py:226
#, python-format #, python-format
@ -359,7 +359,7 @@ msgstr ""
#: sphinx/registry.py:308 #: sphinx/registry.py:308
#, python-format #, python-format
msgid "source_parser for %r is already registered" msgid "source_parser for %r is already registered"
msgstr "" msgstr "source_parser for %r er allerede registreret"
#: sphinx/registry.py:324 #: sphinx/registry.py:324
#, python-format #, python-format
@ -405,7 +405,7 @@ msgstr ""
#: sphinx/registry.py:476 #: sphinx/registry.py:476
#, python-format #, python-format
msgid "Could not import extension %s" msgid "Could not import extension %s"
msgstr "" msgstr "Kunne ikke importere udvidelse %s"
#: sphinx/registry.py:479 #: sphinx/registry.py:479
#, python-format #, python-format
@ -419,7 +419,7 @@ msgstr ""
msgid "" msgid ""
"The %s extension used by this project needs at least Sphinx v%s; it " "The %s extension used by this project needs at least Sphinx v%s; it "
"therefore cannot be built with this version." "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 #: sphinx/registry.py:496
#, python-format #, python-format
@ -574,7 +574,7 @@ msgstr ""
#: sphinx/builders/__init__.py:462 sphinx/builders/__init__.py:492 #: sphinx/builders/__init__.py:462 sphinx/builders/__init__.py:492
msgid "reading sources... " msgid "reading sources... "
msgstr "" msgstr "læser kilder ..."
#: sphinx/builders/__init__.py:497 sphinx/builders/__init__.py:612 #: sphinx/builders/__init__.py:497 sphinx/builders/__init__.py:612
msgid "waiting for workers..." msgid "waiting for workers..."
@ -587,7 +587,7 @@ msgstr ""
#: sphinx/builders/__init__.py:560 sphinx/builders/singlehtml.py:166 #: sphinx/builders/__init__.py:560 sphinx/builders/singlehtml.py:166
msgid "preparing documents" msgid "preparing documents"
msgstr "" msgstr "forbereder dokumenter"
#: sphinx/builders/_epub_base.py:218 #: sphinx/builders/_epub_base.py:218
#, python-format #, python-format
@ -689,7 +689,7 @@ msgstr ""
#: sphinx/builders/epub3.py:225 #: sphinx/builders/epub3.py:225
msgid "conf value \"epub_contributor\" should not be empty for EPUB3" 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 #: sphinx/builders/epub3.py:228
msgid "conf value \"epub_description\" should not be empty for EPUB3" msgid "conf value \"epub_description\" should not be empty for EPUB3"
@ -815,7 +815,7 @@ msgstr ""
#: sphinx/builders/html.py:847 #: sphinx/builders/html.py:847
#, python-format #, python-format
msgid "favicon file %r does not exist" msgid "favicon file %r does not exist"
msgstr "" msgstr "favicon-filen %r findes ikke"
#: sphinx/builders/html.py:854 #: sphinx/builders/html.py:854
#, python-format #, python-format
@ -1078,7 +1078,7 @@ msgstr ""
#: sphinx/cmd/build.py:56 #: sphinx/cmd/build.py:56
msgid "Encoding error:" msgid "Encoding error:"
msgstr "" msgstr "Kodningsfejl:"
#: sphinx/cmd/build.py:59 sphinx/cmd/build.py:74 #: sphinx/cmd/build.py:59 sphinx/cmd/build.py:74
#, python-format #, python-format
@ -1259,7 +1259,7 @@ msgstr ""
#: sphinx/cmd/build.py:227 #: sphinx/cmd/build.py:227
#, python-format #, python-format
msgid "cannot find files %r" msgid "cannot find files %r"
msgstr "" msgstr "kan ikke finde filer %r"
#: sphinx/cmd/build.py:230 #: sphinx/cmd/build.py:230
msgid "cannot combine -a option and filenames" msgid "cannot combine -a option and filenames"
@ -1324,7 +1324,7 @@ msgstr ""
#: sphinx/cmd/quickstart.py:119 #: sphinx/cmd/quickstart.py:119
msgid "Please enter some text." msgid "Please enter some text."
msgstr "" msgstr "Indtast venligst noget tekst."
#: sphinx/cmd/quickstart.py:128 #: sphinx/cmd/quickstart.py:128
#, python-format #, python-format
@ -1333,11 +1333,11 @@ msgstr ""
#: sphinx/cmd/quickstart.py:136 #: sphinx/cmd/quickstart.py:136
msgid "Please enter either 'y' or 'n'." msgid "Please enter either 'y' or 'n'."
msgstr "" msgstr "Indtast venligst enten »y« eller »n«."
#: sphinx/cmd/quickstart.py:143 #: sphinx/cmd/quickstart.py:143
msgid "Please enter a file suffix, e.g. '.rst' or '.txt'." 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 #: sphinx/cmd/quickstart.py:169
msgid "" msgid ""
@ -1530,7 +1530,7 @@ msgstr ""
#: sphinx/cmd/quickstart.py:413 sphinx/ext/apidoc.py:72 #: sphinx/cmd/quickstart.py:413 sphinx/ext/apidoc.py:72
#, python-format #, python-format
msgid "File %s already exists, skipping." msgid "File %s already exists, skipping."
msgstr "" msgstr "Filen %s findes allerede, udelader."
#: sphinx/cmd/quickstart.py:449 #: sphinx/cmd/quickstart.py:449
msgid "Finished: An initial directory structure has been created." msgid "Finished: An initial directory structure has been created."
@ -1652,7 +1652,7 @@ msgstr ""
#: sphinx/cmd/quickstart.py:551 #: sphinx/cmd/quickstart.py:551
msgid "do not create makefile" msgid "do not create makefile"
msgstr "" msgstr "opret ikke makefile"
#: sphinx/cmd/quickstart.py:553 #: sphinx/cmd/quickstart.py:553
msgid "create batchfile" msgid "create batchfile"
@ -1676,7 +1676,7 @@ msgstr ""
#: sphinx/cmd/quickstart.py:567 #: sphinx/cmd/quickstart.py:567
msgid "template directory for template files" msgid "template directory for template files"
msgstr "" msgstr "skabelonmappe for skabelonfiler"
#: sphinx/cmd/quickstart.py:570 #: sphinx/cmd/quickstart.py:570
msgid "define a template variable" msgid "define a template variable"
@ -1876,7 +1876,7 @@ msgstr ""
#: sphinx/domains/cpp.py:7032 #: sphinx/domains/cpp.py:7032
msgid "concept" msgid "concept"
msgstr "" msgstr "koncept"
#: sphinx/domains/cpp.py:7033 #: sphinx/domains/cpp.py:7033
msgid "enum" msgid "enum"
@ -2128,7 +2128,7 @@ msgstr "programtilvalg"
#: sphinx/domains/std.py:464 #: sphinx/domains/std.py:464
msgid "document" msgid "document"
msgstr "" msgstr "dokument"
#: sphinx/domains/std.py:502 #: sphinx/domains/std.py:502
msgid "Module Index" msgid "Module Index"
@ -2179,7 +2179,7 @@ msgstr ""
#: sphinx/environment/__init__.py:69 #: sphinx/environment/__init__.py:69
msgid "new config" msgid "new config"
msgstr "" msgstr "ny konfiguration"
#: sphinx/environment/__init__.py:70 #: sphinx/environment/__init__.py:70
msgid "config changed" msgid "config changed"
@ -2187,7 +2187,7 @@ msgstr ""
#: sphinx/environment/__init__.py:71 #: sphinx/environment/__init__.py:71
msgid "extensions changed" msgid "extensions changed"
msgstr "" msgstr "udvidelser ændret"
#: sphinx/environment/__init__.py:210 #: sphinx/environment/__init__.py:210
msgid "build environment version not current" msgid "build environment version not current"
@ -2195,7 +2195,7 @@ msgstr ""
#: sphinx/environment/__init__.py:212 #: sphinx/environment/__init__.py:212
msgid "source directory has changed" msgid "source directory has changed"
msgstr "" msgstr "kildemappe er ændret"
#: sphinx/environment/__init__.py:283 #: sphinx/environment/__init__.py:283
msgid "" msgid ""
@ -2319,7 +2319,7 @@ msgstr ""
#: sphinx/ext/apidoc.py:325 #: sphinx/ext/apidoc.py:325
msgid "overwrite existing files" msgid "overwrite existing files"
msgstr "" msgstr "overskriv eksisterende filer"
#: sphinx/ext/apidoc.py:328 #: sphinx/ext/apidoc.py:328
msgid "" msgid ""
@ -2398,7 +2398,7 @@ msgstr ""
#: sphinx/ext/apidoc.py:402 #: sphinx/ext/apidoc.py:402
#, python-format #, python-format
msgid "%s is not a directory." msgid "%s is not a directory."
msgstr "" msgstr "%s er ikke en mappe"
#: sphinx/ext/coverage.py:46 #: sphinx/ext/coverage.py:46
#, python-format #, python-format
@ -2800,7 +2800,7 @@ msgstr ""
#: sphinx/ext/napoleon/__init__.py:330 sphinx/ext/napoleon/docstring.py:669 #: sphinx/ext/napoleon/__init__.py:330 sphinx/ext/napoleon/docstring.py:669
msgid "Keyword Arguments" msgid "Keyword Arguments"
msgstr "" msgstr "Nøgleordsargumenter"
#: sphinx/ext/napoleon/docstring.py:627 #: sphinx/ext/napoleon/docstring.py:627
msgid "Example" msgid "Example"
@ -2808,7 +2808,7 @@ msgstr ""
#: sphinx/ext/napoleon/docstring.py:628 #: sphinx/ext/napoleon/docstring.py:628
msgid "Examples" msgid "Examples"
msgstr "" msgstr "Eksempler"
#: sphinx/ext/napoleon/docstring.py:684 #: sphinx/ext/napoleon/docstring.py:684
msgid "Notes" msgid "Notes"
@ -2816,11 +2816,11 @@ msgstr ""
#: sphinx/ext/napoleon/docstring.py:688 #: sphinx/ext/napoleon/docstring.py:688
msgid "Other Parameters" msgid "Other Parameters"
msgstr "" msgstr "Andre parametre"
#: sphinx/ext/napoleon/docstring.py:717 #: sphinx/ext/napoleon/docstring.py:717
msgid "References" msgid "References"
msgstr "" msgstr "Referencer"
#: sphinx/ext/napoleon/docstring.py:754 #: sphinx/ext/napoleon/docstring.py:754
msgid "Warns" msgid "Warns"
@ -2881,7 +2881,7 @@ msgstr "Fortsættes på næste side"
#: sphinx/templates/latex/sphinxmessages.sty_t:9 #: sphinx/templates/latex/sphinxmessages.sty_t:9
msgid "continues on next page" msgid "continues on next page"
msgstr "" msgstr "fortsætter på næste side"
#: sphinx/templates/latex/sphinxmessages.sty_t:10 #: sphinx/templates/latex/sphinxmessages.sty_t:10
msgid "Non-alphabetical" msgid "Non-alphabetical"
@ -2998,12 +2998,12 @@ msgstr "Ophavsret"
#: sphinx/themes/basic/layout.html:201 #: sphinx/themes/basic/layout.html:201
#, python-format #, python-format
msgid "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s." msgid "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s."
msgstr "" msgstr "&#169; <a href=\"%(path)s\">Ophavsret</a> %(copyright)s."
#: sphinx/themes/basic/layout.html:203 #: sphinx/themes/basic/layout.html:203
#, python-format #, python-format
msgid "&#169; Copyright %(copyright)s." msgid "&#169; Copyright %(copyright)s."
msgstr "" msgstr "&#169; Ophavsret %(copyright)s."
#: sphinx/themes/basic/layout.html:207 #: sphinx/themes/basic/layout.html:207
#, python-format #, python-format
@ -3083,12 +3083,12 @@ msgstr "Denne side"
#: sphinx/themes/basic/changes/versionchanges.html:12 #: sphinx/themes/basic/changes/versionchanges.html:12
#, python-format #, python-format
msgid "Changes in Version %(version)s &#8212; %(docstitle)s" msgid "Changes in Version %(version)s &#8212; %(docstitle)s"
msgstr "" msgstr "Ændringer i version %(version)s &#8212; %(docstitle)s"
#: sphinx/themes/basic/changes/rstsource.html:5 #: sphinx/themes/basic/changes/rstsource.html:5
#, python-format #, python-format
msgid "%(filename)s &#8212; %(docstitle)s" msgid "%(filename)s &#8212; %(docstitle)s"
msgstr "" msgstr "%(filename)s &#8212; %(docstitle)s"
#: sphinx/themes/basic/changes/versionchanges.html:17 #: sphinx/themes/basic/changes/versionchanges.html:17
#, python-format #, python-format

View File

@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\n" "POT-Creation-Date: 2019-03-29 01:05+0900\n"
"PO-Revision-Date: 2019-03-28 16:09+0000\n" "PO-Revision-Date: 2019-11-14 15:35+0000\n"
"Last-Translator: Lukas Prokop <admin@lukas-prokop.at>\n" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: German (http://www.transifex.com/sphinx-doc/sphinx-1/language/de/)\n" "Language-Team: German (http://www.transifex.com/sphinx-doc/sphinx-1/language/de/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\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" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Esperanto (http://www.transifex.com/sphinx-doc/sphinx-1/language/eo/)\n" "Language-Team: Esperanto (http://www.transifex.com/sphinx-doc/sphinx-1/language/eo/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"

View File

@ -3,9 +3,9 @@
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Edward Villegas-Pulgarin, 2018 # Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2018
# Edward Villegas-Pulgarin, 2019 # Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2019
# Edward Villegas-Pulgarin, 2018 # Edward Villegas-Pulgarin <cosmoscalibur@gmail.com>, 2018
# Guillem Borrell <guillem@torroja.dmt.upm.es>, 2011 # Guillem Borrell <guillem@torroja.dmt.upm.es>, 2011
# Ivan García <ivan.garcia@studio-point.com>, 2019 # Ivan García <ivan.garcia@studio-point.com>, 2019
# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2013-2018 # Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2013-2018
@ -15,8 +15,8 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\n" "POT-Creation-Date: 2019-03-29 01:05+0900\n"
"PO-Revision-Date: 2019-03-28 16:09+0000\n" "PO-Revision-Date: 2019-11-14 15:35+0000\n"
"Last-Translator: Leonardo J. Caballero G. <leonardocaballero@gmail.com>\n" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/sphinx-doc/sphinx-1/language/es/)\n" "Language-Team: Spanish (http://www.transifex.com/sphinx-doc/sphinx-1/language/es/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\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 #: sphinx/application.py:234
msgid "making output directory" msgid "making output directory"
msgstr "" msgstr "creando directorio de salida"
#: sphinx/application.py:239 sphinx/registry.py:470 #: sphinx/application.py:239 sphinx/registry.py:470
#, python-format #, python-format
@ -184,7 +184,7 @@ msgstr "Valor de configuración %r ya presente"
#: sphinx/config.py:363 #: sphinx/config.py:363
#, python-format #, python-format
msgid "There is a syntax error in your configuration file: %s\n" 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 #: sphinx/config.py:366
msgid "" msgid ""
@ -204,7 +204,7 @@ msgstr ""
msgid "" msgid ""
"The config value `source_suffix' expects a string, list of strings, or " "The config value `source_suffix' expects a string, list of strings, or "
"dictionary. But `%r' is given." "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 #: sphinx/config.py:405
#, python-format #, python-format
@ -236,7 +236,7 @@ msgstr "El valor de configuración `{name}` tiene que ser uno de {candidates}, p
msgid "" msgid ""
"The config value `{name}' has type `{current.__name__}'; expected " "The config value `{name}' has type `{current.__name__}'; expected "
"{permitted}." "{permitted}."
msgstr "" msgstr "El valor de configuración `{name}' tiene tipo `{current.__name__}'; esperado {permitted}."
#: sphinx/config.py:478 #: sphinx/config.py:478
msgid "" msgid ""
@ -378,7 +378,7 @@ msgstr "source_input para %r ya está registrado"
#: sphinx/registry.py:363 #: sphinx/registry.py:363
#, python-format #, python-format
msgid "Translator for %r already exists" msgid "Translator for %r already exists"
msgstr "" msgstr "Traductor para %r ya existe"
#: sphinx/registry.py:375 #: sphinx/registry.py:375
#, python-format #, python-format
@ -561,7 +561,7 @@ msgstr ""
#: sphinx/builders/__init__.py:360 #: sphinx/builders/__init__.py:360
msgid "checking consistency" msgid "checking consistency"
msgstr "" msgstr "verificando consistencia"
#: sphinx/builders/__init__.py:364 #: sphinx/builders/__init__.py:364
msgid "no targets are out of date." msgid "no targets are out of date."
@ -569,7 +569,7 @@ msgstr "no hay archivos objetivo desactualizados."
#: sphinx/builders/__init__.py:404 #: sphinx/builders/__init__.py:404
msgid "updating environment: " msgid "updating environment: "
msgstr "" msgstr "actualizando ambiente"
#: sphinx/builders/__init__.py:423 #: sphinx/builders/__init__.py:423
#, python-format #, python-format
@ -578,7 +578,7 @@ msgstr ""
#: sphinx/builders/__init__.py:462 sphinx/builders/__init__.py:492 #: sphinx/builders/__init__.py:462 sphinx/builders/__init__.py:492
msgid "reading sources... " msgid "reading sources... "
msgstr "" msgstr "leyendo fuentes..."
#: sphinx/builders/__init__.py:497 sphinx/builders/__init__.py:612 #: sphinx/builders/__init__.py:497 sphinx/builders/__init__.py:612
msgid "waiting for workers..." msgid "waiting for workers..."
@ -1061,7 +1061,7 @@ msgstr "copiando archivos de soporte TeX..."
#: sphinx/builders/latex/__init__.py:404 #: sphinx/builders/latex/__init__.py:404
msgid "copying additional files" msgid "copying additional files"
msgstr "" msgstr "copiando archivos adicionales"
#: sphinx/builders/latex/__init__.py:447 #: sphinx/builders/latex/__init__.py:447
#, python-format #, python-format
@ -1444,7 +1444,7 @@ msgstr "Versión del proyecto"
#: sphinx/cmd/quickstart.py:304 #: sphinx/cmd/quickstart.py:304
msgid "Project release" msgid "Project release"
msgstr "" msgstr "Liberación del proyecto"
#: sphinx/cmd/quickstart.py:307 #: sphinx/cmd/quickstart.py:307
msgid "" msgid ""
@ -1455,7 +1455,7 @@ msgid ""
"\n" "\n"
"For a list of supported codes, see\n" "For a list of supported codes, see\n"
"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." "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 #: sphinx/cmd/quickstart.py:314
msgid "Project language" msgid "Project language"
@ -1615,7 +1615,7 @@ msgstr "versión del proyecto"
#: sphinx/cmd/quickstart.py:529 #: sphinx/cmd/quickstart.py:529
msgid "release of project" msgid "release of project"
msgstr "" msgstr "liberación del proyecto"
#: sphinx/cmd/quickstart.py:531 #: sphinx/cmd/quickstart.py:531
msgid "document language" msgid "document language"
@ -1867,7 +1867,7 @@ msgstr "Lanzamientos"
#: sphinx/domains/cpp.py:6579 #: sphinx/domains/cpp.py:6579
#, python-format #, python-format
msgid "%s (C++ %s)" msgid "%s (C++ %s)"
msgstr "" msgstr "%s (C++ %s)"
#: sphinx/domains/cpp.py:7027 sphinx/domains/javascript.py:299 #: sphinx/domains/cpp.py:7027 sphinx/domains/javascript.py:299
#: sphinx/domains/python.py:744 #: sphinx/domains/python.py:744

View File

@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\n" "POT-Creation-Date: 2019-03-29 01:05+0900\n"
"PO-Revision-Date: 2019-03-28 16:09+0000\n" "PO-Revision-Date: 2019-11-14 15:35+0000\n"
"Last-Translator: Ivar Smolin <okul@linux.ee>\n" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Estonian (http://www.transifex.com/sphinx-doc/sphinx-1/language/et/)\n" "Language-Team: Estonian (http://www.transifex.com/sphinx-doc/sphinx-1/language/et/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -295,7 +295,7 @@ msgstr ""
#: sphinx/project.py:59 #: sphinx/project.py:59
msgid "document not readable. Ignored." msgid "document not readable. Ignored."
msgstr "" msgstr "dokument pole loetav ja seda eiratakse."
#: sphinx/registry.py:131 #: sphinx/registry.py:131
#, python-format #, python-format
@ -468,7 +468,7 @@ msgstr "fail %r teemarajal pole korrektni zip-fail või ei sisalda see teemat"
msgid "" msgid ""
"sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please " "sphinx_rtd_theme is no longer a hard dependency since version 1.4.0. Please "
"install it manually.(pip install sphinx_rtd_theme)" "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 #: sphinx/theming.py:262
#, python-format #, python-format
@ -502,12 +502,12 @@ msgstr ""
#: sphinx/builders/__init__.py:266 #: sphinx/builders/__init__.py:266
#, python-format #, python-format
msgid "targets for %d po files that are specified" msgid "targets for %d po files that are specified"
msgstr "" msgstr "%d määratud po-faili sihtfailid"
#: sphinx/builders/__init__.py:276 #: sphinx/builders/__init__.py:276
#, python-format #, python-format
msgid "targets for %d po files that are out of date" msgid "targets for %d po files that are out of date"
msgstr "" msgstr "%d po-faili sihtfailid on aegunud"
#: sphinx/builders/__init__.py:284 #: sphinx/builders/__init__.py:284
msgid "all source files" msgid "all source files"
@ -532,7 +532,7 @@ msgstr ""
#: sphinx/builders/__init__.py:325 #: sphinx/builders/__init__.py:325
#, python-format #, python-format
msgid "targets for %d source files that are out of date" msgid "targets for %d source files that are out of date"
msgstr "" msgstr "%d lähtefaili sihtfailid on aegunud"
#: sphinx/builders/__init__.py:335 #: sphinx/builders/__init__.py:335
#, python-format #, python-format
@ -562,20 +562,20 @@ msgstr ""
#: sphinx/builders/__init__.py:364 #: sphinx/builders/__init__.py:364
msgid "no targets are out of date." msgid "no targets are out of date."
msgstr "" msgstr "aegunud sihtfaile pole"
#: sphinx/builders/__init__.py:404 #: sphinx/builders/__init__.py:404
msgid "updating environment: " msgid "updating environment: "
msgstr "" msgstr "keskkonna uuendamine:"
#: sphinx/builders/__init__.py:423 #: sphinx/builders/__init__.py:423
#, python-format #, python-format
msgid "%s added, %s changed, %s removed" 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 #: sphinx/builders/__init__.py:462 sphinx/builders/__init__.py:492
msgid "reading sources... " msgid "reading sources... "
msgstr "" msgstr "lähtefailide lugemine..."
#: sphinx/builders/__init__.py:497 sphinx/builders/__init__.py:612 #: sphinx/builders/__init__.py:497 sphinx/builders/__init__.py:612
msgid "waiting for workers..." msgid "waiting for workers..."
@ -588,7 +588,7 @@ msgstr ""
#: sphinx/builders/__init__.py:560 sphinx/builders/singlehtml.py:166 #: sphinx/builders/__init__.py:560 sphinx/builders/singlehtml.py:166
msgid "preparing documents" msgid "preparing documents"
msgstr "" msgstr "dokumentide ettevalmistamine"
#: sphinx/builders/_epub_base.py:218 #: sphinx/builders/_epub_base.py:218
#, python-format #, python-format
@ -609,12 +609,12 @@ msgstr ""
#: sphinx/builders/latex/__init__.py:423 sphinx/builders/texinfo.py:199 #: sphinx/builders/latex/__init__.py:423 sphinx/builders/texinfo.py:199
#, python-format #, python-format
msgid "cannot copy image file %r: %s" msgid "cannot copy image file %r: %s"
msgstr "" msgstr "kujutise faili %r pole võimalik kopeerida: %s"
#: sphinx/builders/_epub_base.py:444 #: sphinx/builders/_epub_base.py:444
#, python-format #, python-format
msgid "cannot write image file %r: %s" msgid "cannot write image file %r: %s"
msgstr "" msgstr "kujutise faili %r pole võimalik kirjutada: %s"
#: sphinx/builders/_epub_base.py:455 #: sphinx/builders/_epub_base.py:455
msgid "Pillow not found - copying image files" msgid "Pillow not found - copying image files"
@ -625,7 +625,7 @@ msgstr ""
#: sphinx/builders/_epub_base.py:757 sphinx/builders/epub3.py:183 #: sphinx/builders/_epub_base.py:757 sphinx/builders/epub3.py:183
#, python-format #, python-format
msgid "writing %s file..." msgid "writing %s file..."
msgstr "" msgstr "faili %s kirjutamine..."
#: sphinx/builders/_epub_base.py:565 #: sphinx/builders/_epub_base.py:565
#, python-format #, python-format
@ -644,7 +644,7 @@ msgstr "versioonis %s pole muutusi."
#: sphinx/builders/changes.py:70 #: sphinx/builders/changes.py:70
msgid "writing summary file..." msgid "writing summary file..."
msgstr "" msgstr "kokkuvõttefaili kirjutamine..."
#: sphinx/builders/changes.py:86 #: sphinx/builders/changes.py:86
msgid "Builtins" msgid "Builtins"
@ -715,7 +715,7 @@ msgstr ""
#: sphinx/builders/epub3.py:256 sphinx/builders/html.py:1166 #: sphinx/builders/epub3.py:256 sphinx/builders/html.py:1166
#, python-format #, python-format
msgid "invalid css_file: %r, ignored" msgid "invalid css_file: %r, ignored"
msgstr "" msgstr "vigane css_file: %r, eiratakse"
#: sphinx/builders/gettext.py:221 #: sphinx/builders/gettext.py:221
#, python-format #, python-format
@ -730,7 +730,7 @@ msgstr "ehitamine [%s]: "
#: sphinx/builders/gettext.py:246 #: sphinx/builders/gettext.py:246
#, python-format #, python-format
msgid "targets for %d template files" msgid "targets for %d template files"
msgstr "" msgstr "%d mallifaili sihtfailid"
#: sphinx/builders/gettext.py:250 #: sphinx/builders/gettext.py:250
msgid "reading templates... " msgid "reading templates... "
@ -792,7 +792,7 @@ msgstr "lisalehtede kirjutamine..."
#: sphinx/builders/html.py:780 #: sphinx/builders/html.py:780
msgid "copying downloadable files... " msgid "copying downloadable files... "
msgstr "" msgstr "allalaaditavate failide kopeerimine..."
#: sphinx/builders/html.py:788 #: sphinx/builders/html.py:788
#, python-format #, python-format
@ -816,7 +816,7 @@ msgstr "logofaili %r pole olemas"
#: sphinx/builders/html.py:847 #: sphinx/builders/html.py:847
#, python-format #, python-format
msgid "favicon file %r does not exist" msgid "favicon file %r does not exist"
msgstr "" msgstr "favicon faili %r pole olemas"
#: sphinx/builders/html.py:854 #: sphinx/builders/html.py:854
#, python-format #, python-format
@ -885,7 +885,7 @@ msgstr "otsinguindeksi %s tõmmistamine ... "
#: sphinx/builders/html.py:1184 #: sphinx/builders/html.py:1184
#, python-format #, python-format
msgid "invalid js_file: %r, ignored" msgid "invalid js_file: %r, ignored"
msgstr "" msgstr "vigane js_file: %r, eiratakse"
#: sphinx/builders/html.py:1228 #: sphinx/builders/html.py:1228
msgid "Many math_renderers are registered. But no math_renderer is selected." msgid "Many math_renderers are registered. But no math_renderer is selected."
@ -1452,7 +1452,7 @@ msgid ""
"\n" "\n"
"For a list of supported codes, see\n" "For a list of supported codes, see\n"
"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." "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 #: sphinx/cmd/quickstart.py:314
msgid "Project language" msgid "Project language"
@ -1490,12 +1490,12 @@ msgstr ""
#: sphinx/cmd/quickstart.py:338 #: sphinx/cmd/quickstart.py:338
msgid "sphinx-quickstart will not overwrite the existing file." msgid "sphinx-quickstart will not overwrite the existing file."
msgstr "" msgstr "sphinx-quickstart ei kirjuta olemasolevat faili üle."
#: sphinx/cmd/quickstart.py:340 #: sphinx/cmd/quickstart.py:340
msgid "" msgid ""
"Please enter a new file name, or rename the existing file and press Enter" "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 #: sphinx/cmd/quickstart.py:344
msgid "Indicate which of the following Sphinx extensions should be enabled:" msgid "Indicate which of the following Sphinx extensions should be enabled:"
@ -1701,7 +1701,7 @@ msgstr ""
#: sphinx/cmd/quickstart.py:635 #: sphinx/cmd/quickstart.py:635
#, python-format #, python-format
msgid "Invalid template variable: %s" msgid "Invalid template variable: %s"
msgstr "" msgstr "Vigane mallimuutuja: %s"
#: sphinx/directives/code.py:74 #: sphinx/directives/code.py:74
msgid "Over dedent has detected" msgid "Over dedent has detected"
@ -2411,7 +2411,7 @@ msgstr ""
msgid "" msgid ""
"Testing of coverage in the sources finished, look at the results in " "Testing of coverage in the sources finished, look at the results in "
"%(outdir)spython.txt." "%(outdir)spython.txt."
msgstr "" msgstr "Lähtefailide katvustestimine on lõppenud, vaata tulemusi failist %(outdir)spython.txt."
#: sphinx/ext/coverage.py:70 #: sphinx/ext/coverage.py:70
#, python-format #, python-format
@ -2440,14 +2440,14 @@ msgstr ""
#: sphinx/ext/doctest.py:222 #: sphinx/ext/doctest.py:222
msgid "invalid TestCode type" msgid "invalid TestCode type"
msgstr "" msgstr "vigane TestCode tüüp"
#: sphinx/ext/doctest.py:283 #: sphinx/ext/doctest.py:283
#, python-format #, python-format
msgid "" msgid ""
"Testing of doctests in the sources finished, look at the results in " "Testing of doctests in the sources finished, look at the results in "
"%(outdir)s/output.txt." "%(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 #: sphinx/ext/doctest.py:446
#, python-format #, python-format
@ -2457,7 +2457,7 @@ msgstr ""
#: sphinx/ext/doctest.py:535 #: sphinx/ext/doctest.py:535
#, python-format #, python-format
msgid "ignoring invalid doctest code: %r" msgid "ignoring invalid doctest code: %r"
msgstr "" msgstr "vigase doctest koodi eiramine: %r"
#: sphinx/ext/graphviz.py:140 #: sphinx/ext/graphviz.py:140
msgid "Graphviz directive cannot have both content and a filename argument" msgid "Graphviz directive cannot have both content and a filename argument"
@ -2733,7 +2733,7 @@ msgstr ""
#: sphinx/ext/autosummary/__init__.py:292 #: sphinx/ext/autosummary/__init__.py:292
#, python-format #, python-format
msgid "failed to import %s" msgid "failed to import %s"
msgstr "" msgstr "tõrge %s importimisel"
#: sphinx/ext/autosummary/__init__.py:307 #: sphinx/ext/autosummary/__init__.py:307
#, python-format #, python-format
@ -2743,7 +2743,7 @@ msgstr ""
#: sphinx/ext/autosummary/__init__.py:311 #: sphinx/ext/autosummary/__init__.py:311
#, python-format #, python-format
msgid "failed to import object %s" msgid "failed to import object %s"
msgstr "" msgstr "tõrge objekti %s importimisel"
#: sphinx/ext/autosummary/__init__.py:702 #: sphinx/ext/autosummary/__init__.py:702
msgid "" msgid ""
@ -3243,12 +3243,12 @@ msgstr ""
#: sphinx/util/i18n.py:74 #: sphinx/util/i18n.py:74
#, python-format #, python-format
msgid "reading error: %s, %s" msgid "reading error: %s, %s"
msgstr "" msgstr "viga lugemisel: %s, %s"
#: sphinx/util/i18n.py:81 #: sphinx/util/i18n.py:81
#, python-format #, python-format
msgid "writing error: %s, %s" msgid "writing error: %s, %s"
msgstr "" msgstr "viga kirjutamisel: %s, %s"
#: sphinx/util/i18n.py:215 #: sphinx/util/i18n.py:215
#, python-format #, python-format
@ -3316,7 +3316,7 @@ msgstr ""
#: sphinx/writers/latex.py:603 #: sphinx/writers/latex.py:603
msgid "too large :maxdepth:, ignored." msgid "too large :maxdepth:, ignored."
msgstr "" msgstr ":maxdepth: on liiga suur ja seda eiratakse."
#: sphinx/writers/latex.py:893 #: sphinx/writers/latex.py:893
msgid "document title is not a single Text node" msgid "document title is not a single Text node"

View File

@ -10,7 +10,7 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\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" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Basque (http://www.transifex.com/sphinx-doc/sphinx-1/language/eu/)\n" "Language-Team: Basque (http://www.transifex.com/sphinx-doc/sphinx-1/language/eu/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\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" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Persian (http://www.transifex.com/sphinx-doc/sphinx-1/language/fa/)\n" "Language-Team: Persian (http://www.transifex.com/sphinx-doc/sphinx-1/language/fa/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"

View File

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\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" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Finnish (http://www.transifex.com/sphinx-doc/sphinx-1/language/fi/)\n" "Language-Team: Finnish (http://www.transifex.com/sphinx-doc/sphinx-1/language/fi/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"

View File

@ -1 +1 @@
Documentation.addTranslations({"locale": "fr", "messages": {"%(filename)s &#8212; %(docstitle)s": "%(filename)s &#8212; %(docstitle)s", "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "&#169; Copyright %(copyright)s.": "&#169; 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 &#8212; %(docstitle)s": "Changements dans la version %(version)s &#8212; %(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 &ndash; %(key)s": "Index &ndash; %(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 &#8212; %(docstitle)s": "%(filename)s &#8212; %(docstitle)s", "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s.", "&#169; Copyright %(copyright)s.": "&#169; 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 &#8212; %(docstitle)s": "Changements dans la version %(version)s &#8212; %(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 &ndash; %(key)s": "Index &ndash; %(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)"});

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,7 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\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" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Hebrew (http://www.transifex.com/sphinx-doc/sphinx-1/language/he/)\n" "Language-Team: Hebrew (http://www.transifex.com/sphinx-doc/sphinx-1/language/he/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"

View File

@ -5,12 +5,13 @@
# Translators: # Translators:
# Ajay Singh <ajaysajay@gmail.com>, 2019 # Ajay Singh <ajaysajay@gmail.com>, 2019
# Purnank H. Ghumalia <me@purnank.in>, 2015-2016 # Purnank H. Ghumalia <me@purnank.in>, 2015-2016
# Takeshi KOMIYA <i.tkomiya@gmail.com>, 2019
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\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" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Hindi (http://www.transifex.com/sphinx-doc/sphinx-1/language/hi/)\n" "Language-Team: Hindi (http://www.transifex.com/sphinx-doc/sphinx-1/language/hi/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -338,7 +339,7 @@ msgstr "%r भूमिका पहले से अधिकार-क्ष
#: sphinx/registry.py:226 #: sphinx/registry.py:226
#, python-format #, python-format
msgid "The %r index is already registered to domain %s" msgid "The %r index is already registered to domain %s"
msgstr "r% अनुक्रमणिका पहले से अधिकार-क्षेत्र %s में पंजीकृत है" msgstr "%r अनुक्रमणिका पहले से अधिकार-क्षेत्र %s में पंजीकृत है"
#: sphinx/registry.py:250 #: sphinx/registry.py:250
#, python-format #, python-format
@ -1450,7 +1451,7 @@ msgid ""
"\n" "\n"
"For a list of supported codes, see\n" "For a list of supported codes, see\n"
"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." "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 #: sphinx/cmd/quickstart.py:314
msgid "Project language" msgid "Project language"

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\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" "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" "Language-Team: Hindi (India) (http://www.transifex.com/sphinx-doc/sphinx-1/language/hi_IN/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"

View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\n" "POT-Creation-Date: 2019-03-29 01:05+0900\n"
"PO-Revision-Date: 2019-03-28 16:09+0000\n" "PO-Revision-Date: 2019-11-14 15:35+0000\n"
"Last-Translator: Mario Šarić\n" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Croatian (http://www.transifex.com/sphinx-doc/sphinx-1/language/hr/)\n" "Language-Team: Croatian (http://www.transifex.com/sphinx-doc/sphinx-1/language/hr/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"

View File

@ -13,8 +13,8 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\n" "POT-Creation-Date: 2019-03-29 01:05+0900\n"
"PO-Revision-Date: 2019-03-28 16:09+0000\n" "PO-Revision-Date: 2019-11-14 15:35+0000\n"
"Last-Translator: Molnár Dénes <denes.molnar2@stud.uni-corvinus.hu>\n" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Hungarian (http://www.transifex.com/sphinx-doc/sphinx-1/language/hu/)\n" "Language-Team: Hungarian (http://www.transifex.com/sphinx-doc/sphinx-1/language/hu/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"

View File

@ -1 +1 @@
Documentation.addTranslations({"locale": "id", "messages": {"%(filename)s &#8212; %(docstitle)s": "%(filename)s &#8212; %(docstitle)s", "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "&#169; <a href=\"%(path)s\">Hak cipta</a> %(copyright)s.", "&#169; Copyright %(copyright)s.": "&#169; 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 &#8212; %(docstitle)s": "Perubahan pada Versi %(version)s &#8212; %(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 &ndash; %(key)s": "Index &ndash; %(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 &#8212; %(docstitle)s": "%(filename)s &#8212; %(docstitle)s", "&#169; <a href=\"%(path)s\">Copyright</a> %(copyright)s.": "&#169; <a href=\"%(path)s\">Hak cipta</a> %(copyright)s.", "&#169; Copyright %(copyright)s.": "&#169; 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 &#8212; %(docstitle)s": "Perubahan pada Versi %(version)s &#8212; %(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 &ndash; %(key)s": "Index &ndash; %(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"});

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
# This file is distributed under the same license as the Sphinx project. # This file is distributed under the same license as the Sphinx project.
# #
# Translators: # Translators:
# Denis Cappellin <d.cappellin@asem.it>, 2018 # Denis Cappellin <denis@cappell.in>, 2018
# Paolo Cavallini <cavallini@faunalia.it>, 2013-2017 # Paolo Cavallini <cavallini@faunalia.it>, 2013-2017
# Roland Puntaier <roland.puntaier@chello.at>, 2013 # Roland Puntaier <roland.puntaier@chello.at>, 2013
# Sandro Dentella <sandro@e-den.it>, 2008 # Sandro Dentella <sandro@e-den.it>, 2008
@ -13,8 +13,8 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\n" "POT-Creation-Date: 2019-03-29 01:05+0900\n"
"PO-Revision-Date: 2019-03-28 16:09+0000\n" "PO-Revision-Date: 2019-11-14 15:35+0000\n"
"Last-Translator: Paolo Cavallini <cavallini@faunalia.it>\n" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/sphinx-doc/sphinx-1/language/it/)\n" "Language-Team: Italian (http://www.transifex.com/sphinx-doc/sphinx-1/language/it/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"

View File

@ -21,8 +21,8 @@ msgstr ""
"Project-Id-Version: Sphinx\n" "Project-Id-Version: Sphinx\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2019-03-29 01:05+0900\n" "POT-Creation-Date: 2019-03-29 01:05+0900\n"
"PO-Revision-Date: 2019-03-28 16:09+0000\n" "PO-Revision-Date: 2019-11-14 15:50+0000\n"
"Last-Translator: tomo\n" "Last-Translator: Takeshi KOMIYA <i.tkomiya@gmail.com>\n"
"Language-Team: Japanese (http://www.transifex.com/sphinx-doc/sphinx-1/language/ja/)\n" "Language-Team: Japanese (http://www.transifex.com/sphinx-doc/sphinx-1/language/ja/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -903,7 +903,7 @@ msgstr "複数の math_renderer が登録されています。しかし math_ren
#: sphinx/builders/html.py:1231 #: sphinx/builders/html.py:1231
#, python-format #, python-format
msgid "Unknown math_renderer %r is given." msgid "Unknown math_renderer %r is given."
msgstr "不明な math_renderer r が指定されました。" msgstr "不明な math_renderer %r が指定されました。"
#: sphinx/builders/html.py:1264 #: sphinx/builders/html.py:1264
#, python-format #, python-format
@ -1063,7 +1063,7 @@ msgstr "TeX 関連ファイルをコピーしています"
#: sphinx/builders/latex/__init__.py:384 #: sphinx/builders/latex/__init__.py:384
msgid "copying TeX support files..." msgid "copying TeX support files..."
msgstr "Tex 関連ファイルをコピー中..." msgstr "TeX 関連ファイルをコピー中..."
#: sphinx/builders/latex/__init__.py:404 #: sphinx/builders/latex/__init__.py:404
msgid "copying additional files" msgid "copying additional files"
@ -1269,7 +1269,7 @@ msgstr "例外が発生したときにPdbを実行する"
#: sphinx/cmd/build.py:227 #: sphinx/cmd/build.py:227
#, python-format #, python-format
msgid "cannot find files %r" msgid "cannot find files %r"
msgstr "ファイル r が見つかりません" msgstr "ファイル %r が見つかりません"
#: sphinx/cmd/build.py:230 #: sphinx/cmd/build.py:230
msgid "cannot combine -a option and filenames" msgid "cannot combine -a option and filenames"
@ -1278,7 +1278,7 @@ msgstr "-aオプションとファイル名を組み合わせることはでき
#: sphinx/cmd/build.py:249 #: sphinx/cmd/build.py:249
#, python-format #, python-format
msgid "cannot open warning file %r: %s" msgid "cannot open warning file %r: %s"
msgstr "警告ファイル r を開けません: %s" msgstr "警告ファイル %r を開けません: %s"
#: sphinx/cmd/build.py:259 #: sphinx/cmd/build.py:259
msgid "-D option argument must be in the form name=value" msgid "-D option argument must be in the form name=value"
@ -1461,7 +1461,7 @@ msgid ""
"\n" "\n"
"For a list of supported codes, see\n" "For a list of supported codes, see\n"
"https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-language." "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 #: sphinx/cmd/quickstart.py:314
msgid "Project language" msgid "Project language"
@ -2413,7 +2413,7 @@ msgstr "%s はディレクトリではありません。"
#: sphinx/ext/coverage.py:46 #: sphinx/ext/coverage.py:46
#, python-format #, python-format
msgid "invalid regex %r in %s" msgid "invalid regex %r in %s"
msgstr "%s 内に無効な正規表現 %r があります" msgstr "無効な正規表現 %r が %s 内に見つかりました"
#: sphinx/ext/coverage.py:55 #: sphinx/ext/coverage.py:55
#, python-format #, python-format
@ -2895,11 +2895,11 @@ msgstr "次のページに続く"
#: sphinx/templates/latex/sphinxmessages.sty_t:10 #: sphinx/templates/latex/sphinxmessages.sty_t:10
msgid "Non-alphabetical" msgid "Non-alphabetical"
msgstr "" msgstr "アルファベット以外"
#: sphinx/templates/latex/sphinxmessages.sty_t:12 #: sphinx/templates/latex/sphinxmessages.sty_t:12
msgid "Numbers" msgid "Numbers"
msgstr "" msgstr "番号"
#: sphinx/templates/latex/sphinxmessages.sty_t:13 #: sphinx/templates/latex/sphinxmessages.sty_t:13
msgid "page" msgid "page"
@ -3274,7 +3274,7 @@ msgstr "toctree に存在しないファイルへの参照が含まれていま
#: sphinx/util/nodes.py:501 #: sphinx/util/nodes.py:501
#, python-format #, python-format
msgid "exception while evaluating only directive expression: %s" msgid "exception while evaluating only directive expression: %s"
msgstr "ディレクティブ式の評価中に例外が発生しました: %s" msgstr "only ディレクティブの条件式の評価中に例外が発生しました: %s"
#: sphinx/util/pycompat.py:82 #: sphinx/util/pycompat.py:82
#, python-format #, python-format

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